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

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

来自:过往数据大数据
综合自网络: https://blog.csdn.net/aa5305123/article/details/83142514

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

我们应该选择哪一种?

选择倾向

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

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

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

image.png
上图来自于 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。

目录
相关文章
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
520 12
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
283 1
Cassandra数据库与Cql实战笔记
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
388 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
228 1
|
存储 SQL NoSQL
探索数据存储的多样性:深入比较Entity Framework Core与NoSQL数据库MongoDB的特性与应用
【8月更文挑战第31天】在现代软件开发中,选择合适的数据存储方案对应用性能至关重要。本文通过对比Entity Framework Core(EF Core)和MongoDB,探讨两者的特点及适用场景。EF Core作为.NET生态中的ORM,简化了SQL数据库的交互;MongoDB则是一种灵活的NoSQL文档数据库,适合处理大量非结构化数据。两者在数据模型、查询方式及性能上各有优势,选择时需根据具体应用需求决定。理解这些差异有助于做出更合理的技术选型。
391 1
|
存储 SQL 分布式数据库
深入解析HBase与关系数据库的关键差异
【8月更文挑战第31天】
661 1
|
存储 NoSQL 关系型数据库
MongoDB保姆级指南(上):七万字从零到进阶,助你掌握又一款强大的NoSQL!
MongoDB是数据库家族中的一员,是一款专为扩展性、高性能和高可用而设计的数据库,它可以从单节点部署扩展到大型、复杂的多数据中心架构,也能提供高性能的数据读写操作;而且提供了数据复制、无感知的故障自动选主等功能,从而实现数据节点高可用。
1641 6
|
存储 NoSQL 大数据
大数据存储:HBase与Cassandra的对比
【7月更文挑战第16天】HBase和Cassandra作为两种流行的分布式NoSQL数据库,在数据模型、一致性模型、数据分布、查询语言和性能等方面各有千秋。HBase适用于需要强一致性和与Hadoop生态系统集成的场景,如大规模数据处理和分析。而Cassandra则更适合需要高可用性和灵活查询能力的场景,如分布式计算、云计算和大数据应用等。在实际应用中,选择哪种数据库取决于具体的需求和场景。希望本文的对比分析能够帮助读者更好地理解这两种数据库,并做出明智的选择。
1352 1
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
363 0
|
存储 NoSQL Java
使用Spring Boot和MongoDB构建NoSQL应用
使用Spring Boot和MongoDB构建NoSQL应用

推荐镜像

更多