MongoDB相对于Cassandra的优势

25 浏览
0 Comments

MongoDB相对于Cassandra的优势

关闭。此问题正在寻求书籍、工具、软件库等方面的推荐。它不符合Stack Overflow指南。它目前不接受答案。


我们不允许寻求书籍、工具、软件库等方面的推荐。您可以编辑问题,使其可以用事实和引用回答。

改善这个问题

我正在评估哪种是最佳迁移选项。

目前,我正在使用分片的MySQL(水平分区),大部分数据存储在JSON Blob中。我没有任何复杂的SQL查询(自从我分区数据库后已经迁移)。

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

  • 每个查询都有大量读取,不规则写入
  • 不担心“大规模”可伸缩性
  • 更关注简单的设置、维护和代码
  • 尽量减少硬件/服务器成本
admin 更改状态以发布 2023年5月21日
0
0 Comments

我在过去六个月中广泛使用了MongoDB,构建了一个分层数据管理系统,我可以证明它的安装设置非常容易(安装、运行、使用!)并且速度非常快。只要你仔细考虑索引,它的速度就可以绝对快。

我了解到,Cassandra由于在大型项目(如Twitter)中的使用,具有更好的可扩展功能,尽管MongoDB团队正在努力实现与之相同的功能。我应该指出,我除了试用阶段还没有使用过Cassandra,因此无法对其细节发表评论。

对我而言,当我们评估NoSQL数据库时,真正重要的是查询-Cassandra基本上只是一个巨大的键/值存储,查询有些棘手(至少与MongoDB相比),因此为了提高性能,您必须手动复制相当数量的数据作为一种手动索引。另一方面,MongoDB使用了一个“按示例查询”的模型。

例如,假设您有一个包含用户的集合(MongoDB用语等同于RDMS表),MongoDB将记录存储为文档,这些文档基本上是二进制JSON对象。例如:

{
   FirstName: "John",
   LastName: "Smith",
   Email: "john@smith.com",
   Groups: ["Admin", "User", "SuperUser"]
}

如果您想查找所有称为Smith且具有管理权的用户,您只需要创建一个新文档(在管理控制台使用Javascript或在生产中使用您选择的语言):

{
   LastName: "Smith",
   Groups: "Admin"
}

然后运行查询。就是这样。还有添加的运算符可供比较,RegEx过滤等,但都很简单,基于维基的文档非常好。

0
0 Comments

每个查询中都有大量读取,但写入较少

如果热数据集适合于内存,则两个数据库在读取方面表现良好。它们都强调不需联接的数据模型(鼓励去规范化),并且都提供文档的索引,尽管 MongoDB 的索引目前更加灵活。

无论数据集有多大,Cassandra 的存储引擎都提供恒定时间的写入。在 MongoDB 中,写入更具问题性,部分原因在于基于 B 树的存储引擎,但更多原因在于它所执行的多级封锁

对于分析,MongoDB 提供了自定义的映射/归约实现;Cassandra 提供原生 Hadoop 支持,包括Hive(构建在 Hadoop 映射/归约上的 SQL 数据仓库)和Pig(Hadoop 特定的分析语言,许多人认为它更适合于映射/归约负载比 SQL)。Cassandra 还支持Spark的使用。

不担心“大规模”扩展性

如果您考虑的是单个服务器,则 MongoDB 可能更适合。对于那些更关注扩展性的人而言,Cassandra 的无单点故障架构将更易于设置并更可靠。(MongoDB 的全局写锁也越来越痛苦。)Cassandra 还提供了更多控制副本工作方式的功能,包括支持多个数据中心。

更关注简单设置、维护和代码

对于单个服务器,它们都很容易设置,并且具有合理的开箱即用默认值。在多服务器配置中,Cassandra 更容易设置,因为无需担心特殊角色节点。

如果您目前正在使用 JSON BLOB,则 MongoDB 是与您的用例惊人地匹配,因为它使用 BSON 存储数据。您将能够比您现有数据库中拥有更丰富、更可查询的数据。这将是 Mongo 的最显著胜利。

0