MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较

栏目: 数据库 · 发布时间: 6年前

MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较

Hadoop 获得了许多大数据应用的信誉,但实际情况是,NoSQL数据库是一直处于更加广泛部署和更广泛的发展中的技术。 尽管选择 Hadoop 作为应用存储,相对来说更直接简单。 但是,具体采用什么样的 NoSQL 数据库是个值得思考的问题,毕竟,还有超过100种的 NoSQL 数据库。

我们应该选择哪一种?

选择倾向

“任何像样规模的企业都会使用各种不同类型的数据存储技术,为应对各种不同类型的数据。 ”Martin Fowler认为,现实的情况是你没有足够的精力去学习更多的存储技术。

幸运的是,选择越来越容易,因为市场主要围绕在三个NoSQL数据库上: MongoDB,Cassandra(主要由DataStax开发的,诞生于Facebook),和HBase的(和Hadoop紧密关联在一起,也被相同社区开发出来)。

补充一点,我故意排除 Redis。 相对于大数据存储,它主要用于高速内存缓存数据应用。

MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较

上图来自于 DB-Engines 各种数据库的排名(https://db-engines.com/en/ranking_trend),可以看到前面几年基本上都是关系数据库 Oracle、 MySQL 、SQL Server 以及 PostgreSQL 的天下。 MongoDB 排名第五名, Cassandra 排名十名,而 HBase 排名十七名。

为了更好解释为什么这三个数据库技术的如此耀眼,我问的每一个具有代表性的人,以确定它们成功关键因素: Kelly Stirman,MongoDB的产品总监;Patrick McFadin,DataStax的Cassandra首席布道师;和Justin Kestelyn,Cloudera高级总监。

但首先,我们需要了解为什么使用NoSQL的原因。

世界由非结构化数据构成

我们生活在一个数据越来越丰富的世界里,但是这些数据都不能整齐的展示在一个RDBMS(Relational Database Management System,关系数据库管理系)的行和列中。 移动、社交和云计算催生了庞大的海量的数据。 根据估计,世界上90%的数据是在过去两年中被创造,以及80%的商业数据是非结构化的。 更重要的是,非结构化数据的增长速度是结构化数据的两倍。

随着世界的变化,数据管理要求开始超越传统的关系型数据库的有效范围。 最早关注这个问题解决方案的机构,包括Web技术的先驱、政府机构、从事信息技术服务的公司。

现在越来越多,形形色色的公司都希望利用类似的NoSQL和Hadoop作为替代品: 通过NoSQL来建立业务运营应用,以及Hadoop来创建数据挖掘的应用程序,来帮助公司对商业数据提供有力的研究。

MongoDB:源于开发人员,为开发人员服务

在众多 NoSQL 的方案中,MongoDB 的 Stirman 指出,MongoDB 瞄准了适合各种应用的平衡方法。 它的功能接近于传统的关系型数据库,MongoDB 的用户不仅可以利用其横向扩展机器的云基础架构的优势,并且,因为它能够轻松定义各种灵活的数据模型,所以可以支持不同类型的数据集存储。

MongoDB 通常是开发人员第一个尝试的NoSQL数据库,因为它是很容易学习。 Will Shulman,MongoLab(一个 MongoDB 服务提供商)的CEO,是这样说的:

MongoDB 中的成功在很大程度上是因为它数据结构存储的创新,让我们更容易和更具表现力地定义我们应用程序中的数据模型。 在通常开发和应用场景中,和原有数据库具有相同的基本数据模型是有极大好处的,因为它简化了应用程序开发的任务,另一方面,消除了复杂的数据格式代码转换层。

当然,像任何其他技术一样,MongoDB中都有其长处和短处。 MongoDB是专门为OLTP(On-Line Transaction Processing,联机事务处理系统)模式。 如果您需要复杂的事务处理,它不是一个好的选择。 然而,MongoDB的简单性使其成为一个优秀的存储。

(注: MongoDB以文档的形式存储数据,不支持事务和表连接。 因此查询的编写、理解和优化都容易得多。

Cassandra:规模化安全运行

三种数据库中,至少两种数据库具有简单特性: 开发简单,操作简便。 而MongoDB赢得人心的原因是简单的开发应用,Cassandra赢得人心是因为易于管理的规模。

DataStax 的 McFadin 告诉我,用户往往倾向于使用 Cassandra ,是因为特别在大规模集群下,增强一个关系型数据的性能、可靠性是非常困难的。 一位前甲骨文DBA,McFadin是兴高采烈地发现,“复制和可扩放性是基础”,Cassandra 特点是从一开始设计就解决这个问题。

在RDBMS中的世界,数据库功能,拓展和复制对很多开发者用户来说,是一个难题。 这个问题在过往的企业规模小的时候,不是一个大问题。 而在今天,它很迅速地成为大问题。

我从McFadin和其他人那里获知,Cassandra在机器拓展部署上,表现特别出色。 Cassandra自带的备份机制,保证各个数据中心的数据安全。 至于增加容量到集群,“你只需启动一台新机器,并告诉Cassandra那里的新节点,”McFadin说,“然后,它完成其他剩下的事情。

优秀的可拓展性,加上出色的写入和可观的查询性能,加起来成为Cassandra高性能的核心。

NoSQL的一篇文章认为Cassandra在集群规模管理方面非常出色,但它需要一个博士学位才能上手。 事实并非如此,McFadin坚持认为:

在复制、读取和写入是故意简单。 你可以在几个小时内学会Cassandra的核心功能。 在部署这项新技术的时候,为给开发者带来很多的信心,因为比较少引入“黑盒子”内的技术细节和复杂的故障模式原理。

这意味着主要的开发成本,是对Cassandra数据模型的理解,以及如何结合您的应用程序。 鉴于Cassandra的CQL查询语言(类似于SQL,实际上不是SQL),McFadin说,学习这个也不困难。

更重要的是,他告诉我,“Cassandra回报给你的是,在一个数据库中: 没有戏剧性的场景(故障)出现。 这就是用户喜欢使用Cassandra的原因。

HBase:Hadoop的知心伙伴

HBase,像Cassandra一样是个通过key-value面向列存储的服务。 因为它和Hadoop有着“共同血统”,被广泛使用。 事实上,正如Cloudera的Kestelyn所说的那样,“HBase提供了一个基于记录的存储层,能够快速随机读取和写入数据,正好弥补了Hadoop的缺陷,Hadoop侧重系统吞吐量,而牺牲I / O读取效率为代价。

Kestelyn接着说:

更改有效录入到内存中,以达到最大的访问量,同时将数据保存到HDFS。 这种设计使基于Hadoop的EDH(enterprise data hub,企业数据中心)服务,能够实时完成随机读写存储数据,但仍拥有HDFS的高容错性和耐用性。

Hadoop的亲和力,不是HBase数据库中的人气排名不断上升的唯一原因。 类似Cassandra,HBase是Google的Bigtable的开源实现转化成的数据库,天然被设计为高可扩展性。

HBase可以利用任何数量服务器的磁盘、内存和CPU资源,同时拥有极佳的扩展功能,如自动分片。 当系统负载和性能要求不断增加,HBase的可通过简单增加服务器节点的方式无限拓展。 HBase从底层设计上保证,在确保数据一致性的同时,提供最佳性能。

但规模不是它的唯一用途。 Kestelyn指出,“由于它与Hadoop的生态系统紧密集成,对于用户和应用程序来说,数据是容易获取的,可以通过 SQL 的方式查询(使用Cloudera的Impala,Phoenix,或Hive),甚至自由文本搜索(使用Cloudera Search)。 “因此,HBase为开发人员提供了一种方法,利用现有通用的SQL语言,来建立在一个更成熟的分布式数据库。

每种数据库技术都有自己的长处和不足,但这里评论的三种数据库,在大数据技术领域,占据了重要的位置。 虽然未来可能还有一种全新的 NoSQL 数据库技术会挑战它们前三的位置,但目前的现实是,许多开发人员以及一批强大的成熟企业已经做出了它们的选择: MongoDB、Cassandra 和 HBase。


以上所述就是小编给大家介绍的《MongoDB、Cassandra 和 HBase 三种 NoSQL 数据库比较》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head Rush Ajax

Head Rush Ajax

Brett McLaughlin、Eric Freeman、Elisabeth Freeman / O'Reilly Media, Inc. / 2006-03-01 / USD 34.99

Ajax, or Asynchronous JavaScript and XML, is a term describing the latest rage in web development. Ajax is used to create interactive web applications with XML-based web services, and using JavaScript......一起来看看 《Head Rush Ajax》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具