我有一个项目,我正在进行数据挖掘大型数据库.我目前将所有数据存储在文本文件中,我试图了解存储数据关系数据库的成本和好处.这些点看起来像这样:
CREATE TABLE data (
source1 CHAR(5),
source2 CHAR(5),
idx11 INT,
idx12 INT,
idx21 INT,
idx22 INT,
point1 FLOAT,
point2 FLOAT
);
我可以以合理的性能获得多少这样的积分?我目前有大约1.5亿个数据点,我可能不会有超过3亿个数据点.假设我使用的是带有4个双核2ghz Xeon cpu和8GB RAM的盒子.
解决方法:
MysqL不仅能够满足您的需求,还能满足Alex对Postgresql的建议.合理的性能应该不难实现,但是如果要访问大量的表并且有大量的DML,您将需要了解更多关于您最终选择的数据库所使用的锁定的信息.
我相信Postgresql可以使用开箱即用的行级锁定,MysqL将依赖于您选择的存储引擎. MyISAM只锁定在表级别,因此并发性受到影响,但是InnoDB for MysqL等存储引擎可以并将使用行级锁定来提高吞吐量.我的建议是从MyISAM开始,只有当你发现需要行级锁定时才转移到InnoDB. MyISAM在大多数情况下运行良好,重量极轻.我使用MyISAM在MysqL中拥有超过10亿行的表,并且具有良好的索引和分区功能,您可以获得出色的性能.您可以在MysqL中阅读有关MysqL存储引擎的更多信息
MySQL Storage Engines和Table Partitioning的表分区.这是一篇关于partitions in practice on a table of 113M rows的文章,您可能会觉得它很有用.
我认为将数据存储在关系数据库中的好处远远超过成本.一旦数据在数据库中,您就可以执行许多操作.及时恢复,确保数据完整性,更细粒度的安全访问,数据分区,通过通用语言对其他应用程序的可用性. (sql)等
祝你的项目好运.