我们有大约 3 亿条记录的庞大数据,每 3-6 个月更新一次。我们需要(连续、实时)查询这些数据以获取一些信息。有哪些选项 - RDBMS(mysql) 或其他一些选项,例如 Hadoop。哪个会更好?
5 回答
300M 记录在常规关系数据库的范围内,如果您正确使用索引,实时查询应该没有问题。
Hadoop 听起来有点矫枉过正,除非你真的需要高度分布式和冗余的数据,而且如果你遇到麻烦或进行优化,它也会让你更难找到支持。
好吧,我有一些 PostgreSQL 数据库,其中一些表的记录超过 7 亿条,并且它们一直在更新。
这些表中的查询运行速度非常快(几毫秒)并且没有任何问题。现在,我的数据非常简单,并且我在查询的字段上有索引。
所以,我想说,这完全取决于您将进行什么样的查询,以及您是否有足够的钱花在快速磁盘上。
正如其他人所说,现代 RDBMS 可以处理此类表,具体取决于查询和模式(必须进行一些优化)。如果您有一个好的键来分割行(例如日期列),那么分区/分片技术将帮助您将表拆分为几个小表。
您可以在我之前在这里提出的一个问题中阅读有关这些和其他扩展技术的更多信息 - MySQL 的扩展解决方案(复制、集群)
如今,3 亿并不算大 :-)。
如果您主要是查询,并且您或多或少知道查询将采用什么形式,那么具有适当索引的 MySQL 表将可以正常工作。
如果您在运行查询的同时不断地应用更新,那么请选择 PostgreSQL,因为它具有更好的并发处理能力。
如果您的公司喜欢花钱,MS SQLServer、Sybase、Oracle 和 DB2 都可以轻松处理这些卷。
另一方面,如果您打算对非结构化数据进行真正的自由格式查询,那么 Hadoop 或类似的将是一个更好的选择。
3 亿条记录应该不会对 Oracle、SQL Server、DB2 等高端 RDBMS 造成任何问题。我不确定 mySQL,但我很确定这些天它被用于一些相当大的数据库。