<hr class=“my12大纲无baw0 bb bc-POWER-400”/
想改进此问题吗?更新问题,使其成为堆栈溢出的主题。
四年前关闭
我正在评估什么可能是最好的迁移选项
目前,我使用的是分片MySQL(水平分区),我的大部分数据存储在JSON blob中。我没有任何复杂的SQL查询(自从我对数据库进行分区后,已经迁移了)
现在,MongoDB和Cassandra似乎都是可能的选择。我的情况是:
- 每个查询中都有大量的读取,较少的常规写入
- 不担心“大规模”可扩展性
- 更关注简单的设置、维护和代码
- 最小化硬件/服务器成本
每个查询都有大量读取,常规写入更少
这两个数据库在热数据集适合内存的读取上都表现良好。它们还强调无连接数据模型(并鼓励反规范化),并且都提供文档或行的索引,尽管MongoDB的索引目前更灵活
Cassandra的存储引擎提供恒定的写入时间,无论数据集增长多大。MongoDB中的写入问题更大,部分原因是基于b树的存储引擎,但更多原因是它具有多粒度锁定
对于分析,MongoDB提供了一个定制的map/reduce实现;Cassandra提供了本机Hadoop支持,包括Hive(基于Hadoop map/reduce构建的SQL数据仓库)和Pig(一种Hadoop特有的分析语言,许多人认为它比SQL更适合map/reduce工作负载)。Cassandra还支持使用Spark
不担心“大规模”可扩展性
如果您考虑的是单台服务器,MongoDB可能更适合。对于那些更关心扩展的人来说,Cassandra的无单点故障架构将更容易设置,也更可靠。(MongoDB的全局写锁也会变得更痛苦。)Cassandra还提供了对复制工作方式的更多控制,包括对多个数据中心的支持
更关注简单的设置、维护和代码
二者的设置都很简单,单个服务器的默认设置都是现成的。在多服务器配置中设置Cassandra更简单,因为不需要担心特殊的角色节点
如果您目前正在使用JSON Blob,MongoDB非常适合您的用例,因为它使用BSON存储数据。您将能够拥有比当前数据库更丰富、更可查询的数据。这将是Mongo最重要的胜利