也许有人可以对此发表意见?我目前正在寻找一种解决方案,每天将5亿到4亿条记录存储到数据库中的单个(或2个)表中,最小写入速率为70,000记录/秒。一条记录包含大约30个变量。我们希望按小时和并行(数据分区)加载数据,直到机器在CPU,内存和IO方面的最大容量。在写入期间,查询必须是可能的,并且在写入操作期间它们应保持可接受的性能。
我一直在浏览网页,看看其他人是否尝试将这些数量并行写入MySQL数据库,但没有发现任何特定的数据。大多数人都关注每秒的交易,但这不是我们在这里处理的事情。我们正在加载原始数据,我们需要快速,并行和零停机(即用户必须能够查询可用的内容)。是否值得研究MySQL来完成这项工作,或者我们是否应该考虑它,如果我们没有在硬件上花费大量金额(你认为怎么样?)?
注意:通过多核64位128GB服务器中提供的GBit FC,磁盘空间不存在SAN存储问题。我不是在寻找详细的技术解决方案,而是从专家的角度寻找可行性,并提供一些提示/提示,指出我正确的方向。
欣赏您的见解。
回应评论:
每条记录都是单独计算的,每个变量都是可能的候选搜索条件。更多信息:
答案 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似乎更合适。