MongoDB与Cassandra数据库对比

MongoDB和Cassandra都属于NoSQL数据库系列,它们也恰好都是开源,但是,它们的相似之处仅此而已。

MongoDB和Cassandra之间的相似之处

在深入探讨MongoDB和Cassandra的不同之处之前,让我们先看看它们的相似之处。 显然,它们都是数据库。更重要的是,它们都是NoSQL数据库。NoSQL是一种数据库架构类型,其中数据主要以相对非结构化的方式存储。与更传统的SQL式数据库相比,NoSQL可以更有效地存储大量非结构化数据,企业在大数据操作中通常会涉及非结构化数据。

MongoDB和Cassandra也都是开源数据库,尽管现在也有商业部署可用。但即使在这方面,它们也不尽相同,MongoDB由GNU Affero General Public License 3.0授权,而Cassandra由Apache License 2.0授权。 这两个数据库都已经存在了大约十年。Cassandra于2008年首次亮相,MongoDB则于2009年推出。从这方面来看,与20世纪90年代中期出现的MySQL等数据库相比,它们算是新型数据库。

最后,这两个数据库都支持三大操作系统:Windows、Linux和macOS。不过,Cassandra也可在基于Berkeley Software Distribution的操作系统上运行。 MongoDB与Cassandra:主要区别 然而,在大多数其他重要方面,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格式,你可以很容易地学习它。但这不是你已经熟悉的事情。 MongoDB与Cassandra:使用案例 那么,什么时候MongoDB是比Cassandra更好的解决方案,或者反过来呢? 一般来说,MongoDB最适合具有大量高度非结构化数据的工作负载。如果对于你将使用的数据的规模和类型,你并不了解或者具有最小的预测能力,那么,MongoDB的灵活数据结构将比Cassandra更适合你。 同时,若要有效地使用MongoDB,你必须能够应对主节点出现故障而造成停机的情况,以及有限的写入速度。同时,不要忘记,你还必须学习一种新的查询语言。 另一方面,Cassandra最适合SQL式数据类型的用例。如果你需要非常快的写入速度,Cassandra也能很好地工作。如果新查询语言的学习曲线吓倒了你,你还可从CQL和SQL之间的相似性中受益。 简而言之,如果你想要一个与MySQL类似的数据库,而又希望提供更多的灵活性和可扩展性,请选择Cassandra。如果你需要更高程度的灵活性并且愿意学习一些新技巧,MongoDB将是你的选择。

你可能感兴趣的:(数据库)