用于Web应用程序的高容量数据的后端技术

时间:2014-06-09 16:39:07

标签: mysql mongodb cassandra nosql

我正在开发一个应用程序,为大约50,000个对象提供每日动态信息,如价格,可用性等。我需要存储大约接下来200天的数据。这意味着总共有1000万行。价格将批量更新,每天将添加一次新数据。让我说大约10,000个现有行得到更新,每天插入50,000行。我可以使用的最佳后端框架是什么。

MySQL可以通过有限的硬件功能进行扩展。或NoSQL数据库的方式去?如果是,那么哪个NoSQL数据库最适合快速获取和更新数据。

2 个答案:

答案 0 :(得分:2)

我建议你使用Cassandra,因为你需要写的不仅仅是读取,而且Cassandra在写入时针对高吞吐量进行了优化。 它提供可扩展性,无单点故障和高吞吐量。你也可以更新记录 Cassandra还支持DML(数据操作语言)的批量操作,即写入,更新和删除。而Cassandra的批量操作也提供了原子性。

答案 1 :(得分:2)

这种类型的卷完全在传统RDBMS的功能/容量范围内。我会说,如果你熟悉MySQL,你可以安全地坚持使用它。很大程度上还取决于您要运行的查询类型。使用正确结构化的非规范化设置,您可以在RDBMS中运行即席查询,而对于文档存储,您需要仔细考虑前期结构 - 嵌入与引用,请参阅:MongoDB relationships: embed or reference?。 MongoDB添加了一个非常好的聚合框架,它可以像在RDBMS中一样查询数据,但在许多其他NoSQL系统中,查询本质上是map-reduce作业,并且连接要么痛苦,要么不可能。 / p>

听起来您的数据是围绕日期/日期构建的。你可以做的一件事就是在查询上产生显着的速度提升partitioning by date ranges.我已经在MySQL中处理了超过100米行的dbs,其中必须保留历史数据以用于审计目的,但大多数读/写都在当前数据和分区导致了真正戏剧性的读取查询改进。

您可能会对此链接感兴趣,该链接显示了一些非常高容量的网站正在使用的内容:What databases do the World Wide Web's biggest sites run on?有趣的是,我知道Facebook在开始遇到真正的瓶颈之前在各种群集中拥有数万亿行,但它考虑到他们现在处理的真正庞大的数据量,Cassandra最终从Facebook工程中走出来并不令人惊讶。

Cassandra,Riak,CouchDB,MongoDB等都是为了解决非常现实的问题,但这些问题都需要权衡,无论是CAP定理还是特殊查询都比RDBMS更难。话虽如此,MongoDB和Cassandra(我最常见的经验)很容易设置和工作的乐趣,所以如果你想给他们一个去,我相信你没有问题,但我会说你的使用要求完全在MySQL的能力范围内。只是我的2c。