如何以70.000记录/秒的速度写入大数据量呢?

时间:2011-07-22 11:54:32

标签: mysql parallel-processing volume

也许有人可以对此发表意见?我目前正在寻找一种解决方案,每天将5亿到4亿条记录存储到数据库中的单个(或2个)表中,最小写入速率为70,000记录/秒。一条记录包含大约30个变量。我们希望按小时和并行(数据分区)加载数据,直到机器在CPU,内存和IO方面的最大容量。在写入期间,查询必须是可能的,并且在写入操作期间它们应保持可接受的性能。

我一直在浏览网页,看看其他人是否尝试将这些数量并行写入MySQL数据库,但没有发现任何特定的数据。大多数人都关注每秒的交易,但这不是我们在这里处理的事情。我们正在加载原始数据,我们需要快速,并行和零停机(即用户必须能够查询可用的内容)。是否值得研究MySQL来完成这项工作,或者我们是否应该考虑它,如果我们没有在硬件上花费大量金额(你认为怎么样?)?

注意:通过多核64位128GB服务器中提供的GBit FC,磁盘空间不存在SAN存储问题。我不是在寻找详细的技术解决方案,而是从专家的角度寻找可行性,并提供一些提示/提示,指出我正确的方向。

欣赏您的见解。


回应评论:

每条记录都是单独计算的,每个变量都是可能的候选搜索条件。更多信息:

  • 昨天和旧数据(最多10天)必须是可查询的(SQL很简单)
  • 数据访问最好不是通过自定义API,而是更喜欢开放标准,如ODBC或客户端(如Oracle客户端)
  • 数据消耗涉及摘要(午夜之后,部分也是每小时,其中统计数据涉及最小值/最大值/平均值)以及存储在更高级别历史记录表中以供最终用户报告。那和前面提到的搜索原始数据进行问题/特殊分析。
  • 在10天周期结束时,需要很容易丢弃一整天的数据。
  • 再一次强调它:每小时写一次,以便跟上交付,而不是创建积压午夜摘要,不能推迟很长时间。
  • 搜索结果不一定是即时的,但最好不要超过+ - 15分钟,整个10天的数量= 300亿条记录。

3 个答案:

答案 0 :(得分:2)

有了这么多的数据,我认为你应该尝试研究NoSQL(MongoDB,Cassandra,HBase等)。使用MySQL,您必须大量扩展服务器。我们尝试了~1200插入/秒,MySQL失败(或硬件失败)。解决方案是使用XCache(当时memcached也失败了)。尝试研究NoSQL,你会喜欢它。

答案 1 :(得分:1)

4B行x 30 x 4字节每天约1/2太字节。我认为你不能将它保存在一台机器上,而你的SAN也可能遇到麻烦。我会看看Cassandra,因为它是为高写入量而构建的。

答案 2 :(得分:0)

如果我是你,我会将解决方案分成数据捕获和数据分析服务器;这是一种相当普遍的模式。查询和报告针对您的数据仓库运行(您可以在其中使用与数据收集系统不同的架构)。您可以使用ETL(提取,转换,加载)过程将数据加载到数据仓库中,在您的情况下,这可能非常简单。

至于你如何支持每秒70K的写入 - 我说这远远超出了大多数RDBMS服务器的功能,除非你有一个专门的团队和基础设施。这不是你想要在工作中学习的东西。

NoSQL似乎更合适。