小编典典

MongoDB vs. Cassandra

all

我正在评估什么可能是最好的迁移选项。

目前,我在一个分片 MySQL(水平分区)上,我的大部分数据都存储在 JSON blob 中。我没有任何复杂的 SQL
查询(自从我对我的数据库进行分区后就已经迁移走了)。

现在,似乎 MongoDB 和 Cassandra 都是可能的选择。我的情况:

  • 每个查询中的大量读取,较少的常规写入
  • 不担心“大规模”可扩展性
  • 更关心简单的设置、维护和代码
  • 最小化硬件/服务器成本

阅读 126

收藏
2022-03-02

共1个答案

小编典典

每个查询中的大量读取,更少的常规写入

两个数据库在热数据集适合内存的读取方面表现良好。两者都强调无连接数据模型(并鼓励非规范化),并且都提供文档的索引,尽管 MongoDB 的索引目前更加灵活。

无论您的数据集增长多大,Cassandra 的存储引擎都提供恒定时间的写入。在 MongoDB 中写入更成问题,部分原因是基于 b-tree
的存储引擎,但更多是因为它的多粒度锁定

对于分析,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 最重要的胜利。

2022-03-02