我正在开发一个应用程序,以提供每日动态信息,如价格,可用性等约50,000个对象。我需要在接下来的200天里存储数据。这意味着总共有1000万行。价格将批量更新,并每天添加一次新数据。假设每天大约有10,000行现有行被更新,50,000行被插入。什么是最好的后端框架,我可以使用。
MySQL可以在有限的硬件能力下进行扩展吗?或者,NoSQL数据库是可行的吗?如果是,则哪个NoSQL数据库最适合快速获取和更新数据。
发布于 2014-06-10 03:43:04
我建议您使用Cassandra,因为您需要写入多于读取,并且Cassandra针对写入时的高吞吐量进行了优化。它提供了可伸缩性、无单点故障和高吞吐量。你也可以更新记录。
Cassandra还支持DML (数据操作语言)的批处理操作,即写入、更新和删除。Cassandra的批处理操作也提供了原子性。
发布于 2014-06-10 15:35:49
这种类型的卷完全在传统RDBMS的容量范围内。我想说的是,如果你熟悉MySQL,你就可以放心地坚持使用它。这在很大程度上还取决于您想要运行的查询类型。使用适当的结构化、非规范化设置,您可以在关系数据库中运行即席查询,而对于文档存储,您需要非常仔细地考虑前面的结构--嵌入与引用,请参阅:MongoDB relationships: embed or reference?。MongoDB添加了一个非常好的聚合框架,这对于能够像在关系型数据库管理系统中那样查询数据有很大的帮助,但在许多其他NoSQL系统中,查询本质上是映射-reduce作业和连接是痛苦的或不可能的。
听起来你的数据是围绕日期/天进行组织的。有一件事可以显著提高查询速度,那就是partitioning by date ranges.。我在MySQL中处理过超过1亿行的数据库,在这些数据库中,出于审计的目的,必须保留历史数据,但大多数读/写操作都是在当前数据上进行的,而分区则带来了真正显著的读查询改进。
你可能会对这个链接感兴趣,它显示了一些非常大容量的网站正在使用的内容:What databases do the World Wide Web's biggest sites run on?轶事,我知道在遇到真正的瓶颈之前,Facebook在MySQL中有数以万亿计的行,但考虑到他们现在处理的真正巨大的数据量,Cassandra最终从Facebook的工程中走出来也就不足为奇了。
Cassandra,Riak,CouchDB,MongoDB等都是为了解决非常现实的问题而出现的,但这些都是有折衷的,无论是在CAP定理方面,还是在比关系数据库管理系统中更困难的即席查询方面。话虽如此,MongoDB和Cassandra (这是我最有经验的)很容易设置和有趣的使用,所以如果你想试一试,我相信你不会有问题,但我想说你的使用需求在MySQL的能力范围内。只有我的2c。
https://stackoverflow.com/questions/24124779
复制相似问题