开源数据库中行数的上限?
-
16-09-2019 - |
题
我有一个项目,正在对大型数据库进行数据挖掘。我目前将所有数据存储在文本文件中,我试图了解存储数据关系数据库的成本和好处。这些点看起来像这样:
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 存储引擎 以及关于表分区的信息 表分区. 。这是一篇关于 实践中对 113M 行的表进行分区 您可能会发现它也很有用。
我认为将数据存储在关系数据库中的好处远远超过成本。一旦您的数据进入数据库,您就可以做很多事情。时间点恢复,确保数据完整性、更细粒度的安全访问、数据分区、通过通用语言对其他应用程序的可用性。(SQL)等ETC。
祝你的项目好运。
其他提示
Postgresql 应该能够充分容纳您的数据 - 每张桌子等最多32吨等。 ),因此几乎所有数据库实际上都应该能够轻松容纳您。
仅供参考:Postgres比MySQL在多处理器 /重叠请求上要好,从几个月前阅读的评论来看(对不起,没有链接)。
我从您的个人资料中假设,这是某种生物识别(密码子序列,酶与蛋白氨基酸序列或某些此类问题)。如果您要通过并发请求攻击此问题,我会选择Postgres。
OTOH,如果将数据加载一次,然后用单个线程进行扫描,则可能是“酸不需要”模式中的mySQL是最好的匹配。
在选择“最佳”堆栈之前,您已经有一些计划要做。