cassandra vs mongoDB in 2019,如何选型

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 提到NoSQL数据库,MongoDB和Cassandra可能看起来很相似,但却完全不同。两者都有类似的用例,但不适用于交易数据(即记账系统)。 谁使用这些数据库? Cassandra和MongoDB两者都有强大的追随者,其中都不乏一些大牌用户 Cassandra: Cassandra,于2008年发布,已被许多组织使用,包括AppScale,Constant Contact,Digg,Facebook,IBM,Instagram,Spotify,Netflix和Reddit。

提到NoSQL数据库,MongoDB和Cassandra都是各自领域里面的佼佼者,同时又但不适用于交易数据(即记账系统)。
在本文中我们将花些时间对二者进行对比,然后基于我们的业务需求,看如何选择

db-engines ranking排名

image
可以看到二者热度非常高,都是比较优秀的产品,Mongodb专注于文档领域,cassandra专注于宽表领域

谁使用这些数据库?

Cassandra和MongoDB两者都有强大的追随者,其中都不乏一些大牌用户

  • Cassandra: Cassandra,于2008年发布,已被许多组织使用,包括Apple, AppScale,Constant Contact,Digg,Facebook,IBM,Instagram,Spotify,Netflix和Reddit。
  • MongoDB: 2009年发布的MongoDB已被许多组织使用,包括。Google,UPS,Facebook,思科,eBay,BOSH,Adobe,SAP,福布斯等等。您可以在此处查看完整列表:https://www.mongodb.com/who-uses-mongodb。、

数据库背后的公司

Cassandra: Avinash Lakshman和Prashant Malik在Facebook开发了Cassandra,用于Facebook收件箱搜索功能。Facebook于2008年7月发布了Cassandra作为开源项目。最初的开发人员从特洛伊神话先知Cassandra那里得到了该项目的名称。Apache Software Foundation目前维护该项目。
MongoDB: MongoDB于2007年由10gen创建,它创建了基于“humongous”一词的产品。2009年发布,10gen后来改名为MongoDB.Inc,提供软件开发并销售其企业解决方案。

如何选取

上文可看出cassandra,mongodb都是非常不错的产品,有大量商业公司在用,并且在数百款数据库产品里面名列前茅,那我们接下来看下对二者该如何进行选择。

  • cassandra专注于解决宽表领域大数据存储需求
  • mongodb专注于解决文档领域大数据存储需求

我们先看看二者差异

差异

我们从接口层面能更直观看出它们的区别

接口差异

  • 从客户表中选择记录:
cassandra: ‘SELECT * FROM customer;’
MongoDB: ‘db.customer.find()’
  • 将记录插入到customer表中:
cassandra: ‘INSERT INTO customer (custid, branch, status) VALUES('appl01', 'main', 'A');’
MongoDB: ‘db.customer.insert({ cust_id: 'appl01', branch: 'main', status: 'A' })’
  • 更新customer表中的记录:
cassandra: ‘UPDATE Customer SET branch = ‘main' WHERE custage > 2;’
MongoDB: ‘db.customer.update( { custage: { $gt: 2 } }, { $set: { branch: 'main' } }, { multi: true } )’

可以看出:c*提供类sql语言cql,mongodb提供文档语法,但由于sql的流行,cassandra的cql还是学习成本更低一些的

强模式 vs 无模式

  • cassandra是强模式的,需要预定义好schema,不能直接写入数据。当然需要指出来,cassandra有宽表的灵活性,可以动态修改列名,列类型,这在关系型数据库里面是做不到的。
  • mongoDB是schema-free的,无需预定义schema,可直接写入文档,作为文档数据库有更大的灵活性,这是cassandra比不了的,所以非常适合尝试新事物,快速迭代。

查询能力及索引比较

  • Cassandra:在Cassandra中,不完全支持多个二级索引; 二级索引先查找主键,再拿到行数据,效率稍差,建议使用主键进行查询。
  • MongoDB:MongoDB中首选索引,直接索引文档数据位置。索引能力更强,其强大的查询系统使您可以很好地利用基于位置的数据,内置的空间功能允许您从特定位置提取数据,投入使用。

群集副本复制比较

  • Cassandra: Cassandra开箱即用。您只需要告诉它写几副本,它负责做剩下的事。

Cassandra允许在挂掉某个节点情况下,多个剩余副本仍然允许你继续写群集。这表示拥有更好的容错性,而MongoDB则需要10到40秒的停机时间。

  • MongoDB:MongoDB具有内置的副本复制,带有自动选举功能。这需要你设置可在主数据库不可用时自动接管备用数据库。但是,MongoDB需要一些设置来达到复制。MongoDB具有副本集,其中一个成员是主,而所有其他副本是从副本。读写首先提交到主副本,然后复制到从副本。

MongoDB有一个集中式主,当选举发生时,它可能需要花费10到40秒才能结束,这种情况时,您无法写入集群。

差异点总结

  • cassandra

    • Cassandra甚至可以处理最庞大的数据集。Instagram每天平均处理8000万张照片,而Spotify则在其数据库中存储超过2000万首歌曲
    • Cassandra有这令人惊讶的可靠性,Cassandra使用点对点容错技术,无主/从设置,故障转移或领导者选举。这意味着可以委派群集中的任何节点,以便在发生故障时执行查询。
    • 最终的一致性产生高可用。cassandra倾向于降低一致性。它是“最终一致的 ”,用于设置数据库一致性模型。最终的一致性可以实现高可用性,而不是保持强一致性,从而实现更低的延时,更高的可用性,而不是立即向所有服务器上同步数据。
    • 扩容时最小化管理任务
  • mongoDB

    • 文档型数据库,提供令人叹为观止的灵活性
    • 高性能,高可用,自动扩容
    • Cassandra相对简约,mongoDB功能更加强大,强大的查询能力
    • 因为模型扩展性好,能更快尝试新东西

如何选择?哪个数据库更适合您的业务?

  • Cassandra: Cassandra最大的优势之一是它在保持可用性的同时具有扩展能力。在多个服务器的情况下部署Cassandra,无需额外的工作。部分原因是因为Cassandra使用最少的配置,因此非常容易配置。

如果您需要一个易于设置和维护的数据库,无论您的数据库增长多少,Cassandra都是一个不错的选择。如果您需要快速扩容,Cassandra可以比MongoDB更好的快速工作。

  • MongoDB:如果您需要实时分析的能力,强大的查询能力,MongoDB是一个很好的选择; 但是它不是为交易数据而构建的。MongoDB经常用于移动应用程序,内容管理,实时分析以及涉及物联网的应用程序。如果您的数据是无结构的,没有明确的模式定义(schema definition),MongoDB是一个不错的选择。

如果您正在对数据库模式进行反规范化,则可以使用MongoDB文档来存储非结构化数据,这种方式更易于更新。在写入负载很高的情况下,MongoDB表现不错,提供很高的插入效率。

总结

最后以下表中的对比,结束本文。
image

微信群和钉钉群交流
为了营造一个开放的 Cassandra 技术交流,我们建立了微信群和钉钉群,为广大用户提供专业的技术分享及问答,定期在国内开展线下技术沙龙,专家技术直播,欢迎大家加入。

钉钉群入群链接:https://c.tb.cn/F3.ZRTY0o

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL Cloud Native 关系型数据库
云原生数据库比较:MySQL、PostgreSQL、MongoDB和Cassandra的优势与劣势
选择适合自己应用的云原生数据库需要考虑多个因素,包括数据模型、性能需求、扩展性、学习曲线等。如果应用需要严格的 ACID 事务,关系型数据库如 MySQL 或 PostgreSQL 是不错的选择。如果应用需要灵活的数据模型和快速迭代开发,MongoDB 可能更适合。而对于大规模数据存储和高可用性需求,Cassandra 可能是一个值得考虑的选项。
1327 3
云原生数据库比较:MySQL、PostgreSQL、MongoDB和Cassandra的优势与劣势
|
存储 NoSQL 关系型数据库
「数据库选型」抛弃MongoDB,拥抱PostgreSQL,工作更轻松
「数据库选型」抛弃MongoDB,拥抱PostgreSQL,工作更轻松
|
存储 NoSQL Oracle
「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL
「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL
|
存储 SQL 分布式计算
MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
Hadoop 获得了许多大数据应用的信誉,但实际情况是,NoSQL数据库是一直处于更加广泛部署和更广泛的发展中的技术。尽管选择 Hadoop 作为应用存储,相对来说更直接简单。但是,具体采用什么样的 NoSQL 数据库是个值得思考的问题,毕竟,还有超过100种的 NoSQL 数据库。
3235 0
MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较
|
NoSQL 数据中心
需求至上——MongoDB多数据中心的方案选型
本文PPT来自 MongoDB Master,Teambition 运维总监周李洋( E 叔 ) 于10月15日在2016年杭州云栖大会上发表的《MongoDB多数据中心的方案选型之路》。
5138 0
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
20天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。