存储数亿条记录

存储数亿条记录

我的公司将获得一个包含约 2 亿至 3 亿条记录的数据集。源材料是 csv,未压缩后约 150GB。我们需要对数据进行初始加载,然后每天更新约 1% 的记录。我们也希望能够保留每条记录的历史记录。

我们目前使用 MySQL,而且似乎有些人正在使用 MySQL 和 PostgreSQL 作为这种规模的数据库,但我没有看到太多关于他们的经验的确凿信息。

我们绝对可以不用对数据进行规范化,我可以想象将信息分布在许多服务器上。MongoDB 或其他一些非传统数据存储怎么样?

有人对这种努力的可行性有什么看法吗?如果您能提供任何帮助,我将不胜感激。

答案1

我对该大小的数据集的经验仅限于 MSSQL,但它绝对可以处理该大小的数据。

我首先担心的是数据的大小。3 亿条记录,150Gb,每行大约 500Kb - 这是很大的一行。非常非常大的一行。如果你可以规范化为第三范式,那么这将大有帮助(假设有可以规范化的数据)。如果你不打算规范化(并且只有一个庞大的表),那么支持 ISAM 的引擎将比 RDBMS 更快,因此 ISAM 模式下的 MySQL 显然比 MSSQL 更受欢迎(抱歉,我没有使用 Postgre 或 Mongo 的经验)

话虽如此,MSSQL 可以毫无顾虑地处理这种大小的表。它可以对数据进行分区,以便不同的部分位于不同的磁盘上,因此,如果预算是一个问题,您可以将 1% 的更新数据保存在快速磁盘上,将其余数据保存在较慢的磁盘上。如果您选择的 DBMS 支持此功能,那么这可能是一个明智的选择。

仅供参考,我曾经管理过一个数据库,其中单个表有大约 2 亿行(但该表只有 20GB 大小),使用一些智能索引查询时间仍以毫秒为单位。这已规范化为第三范式,因此也有很多 LOJ 来检索相关数据。

答案2

大多数数据库都可以轻松管理如此大量的存储,这实际上取决于您在加载数据后想要对数据做什么。它是事务性的,所以它会经常被查询和更新吗?还是它更多的是用于报告,每天只从事务系统传入新信息?

相关内容