MongoDB vs.Cassandra[关闭]

关闭。此问题不符合堆栈溢出准则。它目前不接受答案。

<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最重要的胜利

发表评论