mongodb和Cassandra的区别有:1、mongodb发生故障时容易管理,而Cassandra提供高可用性则没有单点故障;2、需要写入大量数据时,Cassandra比mongodb写入速度更快;3、mongodb是用C++编写,而Cassandra是用Java编写;4、mongodb属于跨平台面向文档的数据库系统,而Cassandra则是高性能分布式数据库系统。
具体内容如下:
高可用性策略
MongoDB和Cassandra各自的数据可用性策略可能是它们之间最大的不同。
在Cassandra部署中,你可以设置多个主节点。如果一个或多个主节点发生故障,只要至少有一个主节点仍然存在,那你的数据库仍然将保持可用状态。这种高度分布式和冗余的模型使得在Cassandra中很容易实现高可用性(HA),当然,前提是你可以使用备用基础架构来设置多个主节点。
另一方面,MongoDB也没有忽略高可用性的问题,但其策略是基于自动故障转移的想法。你只能在MongoDB集群中设置一个主节点。如果主站发生故障,从站节点将自动转变为新的主站点。这确保了连续性,但这不会立即发生,通常需要将近一分钟。
你是否可以接受一分钟的数据存储中断,可能取决于你正在尝试做的事情。但是,无论你怎么对比,Cassandra都比MongoDB更具弹性和高可用性。
写入速度
MongoDB对单个主节点的限制也影响着数据写入数据库的速度。数据写入必须记录在主服务器上,并且由于MongoDB集群只有一个主服务器,因此它向数据库写入新信息的能力受到该单个主节点容量的严格限制。
而通过Cassandra,每个主节点可以并行接受不同的写入。因此,你拥有的主节点越多,你可以一次写入的数据就越多。如果你需要写很多数据,你应该选择Cassandra。
数据结构
虽然这两个数据库都属于NoSQL系列,但NoSQL是一个广泛的类别。当你了解深入了解时,你会发现,NoSQL数据库架构可能会有很大差异,MongoDB和Cassandra也是如此。
与Cassandra相比,MongoDB提供了更加非结构化的架构。MongoDB使你可以定义对象,这些对象基本上可以包含你想要的任何属性。此外,你基本上可以任何方式在层级结构组织对象。
相比之下,Cassandra提供了一种类似于桌面的存储模型,它更像传统的SQL风格数据库,不过,Cassandra并不像传统数据库那样严格。
查询语言
除了从数据结构角度更类似于SQL风格的数据库外,Cassandra的查询语言(称为CQL)也非常类似于传统数据库的查询语言。
CQL和SQL并不完全相同,但通常,在SQL上运行的查询可在CQL上运行。如果你的数据分析师已经熟悉SQL,那他/她也会很快学会CQL。
MongoDB有自己的查询界面,它基本上是JSON格式,你可以很容易地学习它。但这不是你已经熟悉的事情。