MongoDB和HBase的对比

2019-10-18 14:44:32 | 编辑

1.简介

在大多数组织中,关系数据库是一项成熟的技术,可满足满足当前业务需求的现有应用程序。但是,由于以下需求的推动,IT团队在构建现代应用程序时正越来越多地考虑替代传统关系基础架构:

  • 通过敏捷开发和灵活的数据模型实现更快的上市时间。

  • 处理快速增长的结构化,半结构化和非结构化数据量。

  • 扩展规模超出现有系统的容量限制。

  • 摆脱昂贵的专有数据库软件和硬件的束缚。

为了满足这些要求,公司正在使用新的非表格数据库类来构建操作应用程序。MongoDB和HBase是领先的技术选择。为了帮助IT团队选择能够满足其应用程序需求的最佳解决方案,我们在以下各节中对这两种技术进行了比较。

2.什么是MongoDB?

MongoDB是由MongoDB,Inc.开发的非关系数据库。MongoDB将数据作为文档存储在称为BSON(二进制JSON)的二进制表示形式中。相关信息存储在一起,以便通过MongoDB查询语言进行快速查询访问。字段随文档的不同而不同;无需向系统声明文档的结构–文档是自描述的。如果需要将新字段添加到文档,则可以创建该字段而不会影响集合中的所有其他文档,无需更新中央系统目录,也无需使系统脱机。可选地,模式验证可用于对每个集合实施数据治理控制。

MongoDB的文档数据模型自然地映射到应用程序代码中的对象,从而使开发人员易于学习和使用。文档使您能够表示层次结构关系,以轻松存储数组和其他更复杂的结构。提供了针对10多种语言的本地惯用驱动程序-并且社区已经建立了数十种语言-支持即席查询,实时聚合和丰富的索引,以提供强大的编程方式来访问和分析任何结构的数据。

因为文档可以将相关数据聚集在一起,否则它们将在关系模式中跨单独的父子表建模,因此MongoDB的原子单文档操作已经提供了满足大多数应用程序数据完整性需求的事务语义。一个或多个字段可以通过一次操作编写,包括对多个子文档和数组元素的更新。MongoDB提供的保证可确保在文档更新时完全隔离。任何错误都会导致操作回滚,以使客户端获得一致的文档视图。

MongoDB 4.0增加了对多文档交易的支持,使其成为唯一将传统关系数据库的ACID保证,文档模型的速度,灵活性和功能与智能分布式系统设计相结合以扩展和放置数据的数据库在需要的地方。通过快照隔离,事务可提供一致的数据视图,并强制执行全部或全部执行以维护数据完整性。MongoDB中的事务就像PostgreSQL开发人员熟悉的事务一样。它们是多语句的,具有类似的语法(例如,启动事务和提交事务),因此,具有任何先验交易经验的任何人都可以轻松地将其添加到任何应用程序中。

什么是MongoDB页面中了解更多信息。

3.什么是HBase?

Apache HBase是一个受Google BigTable启发的大型专栏存储,用Java编写,并使用HDFS(Hadoop分布式文件系统)作为其存储层。HBase专为具有随机读取和写入访问模式的键-值工作负载而设计。

HBase是一个稀疏的,分布式的,持久的多维排序的映射。该地图由行键,列键和时间戳索引;映射中的每个值都是未解释的字节数组。应用程序将行存储在带标签的表中。行具有可排序的键和任意数量的列。所有行均按严格的字母顺序排序。该表稀疏存储,因此同一表中的行可以具有不同的列。通过提供故障恢复能力,数据可以在集群中的多个参与节点之间复制。

HBase是Apache软件基金会的Apache Hadoop项目的一部分,大多数Hadoop供应商都提供商业发行版。

4.关键概念

许多关系数据库的概念与MongoDB和HBase有相似之处。下表概述了每个系统中的一些常见概念。

RDBMS(关系数据库) MongoDB HBase
Table Collection Table
Row Document Column Family
No Equivalent Shard Region
GROUP_BY Aggregation Pipeline MapReduce
Multi-record ACID transactions Multi-document ACID transactions None. Requires implementation in app layer

5.功能比较

作为非关系数据库,MongoDB和HBase都提供了数据模型灵活性,具有分片的横向扩展能力和较高的读/写性能。但是,下表中突出显示了它们之间的一些基本差异。

开发人员注意事项

  MongoDB HBase的 结果
资料模型 文档 Wide Column 文档以编程语言匹配对象的结构,从而为开发人员提供了更大的简化。
支持的数据类型 多个,包括字符串,32和64位整数,浮点数,十进制128,日期,时间戳和地理空间 Data converted to uninterpreted bytes 对多种类型的支持允许以较少的应用程序开发工作来进行有效的数据比较,排序和处理
Query Model 具有强大的查询运算符,比较,相等,预测,过滤和聚合的富有表现力的查询语言 Key-Value 富有表现力的查询语言可以运行更复杂的查询,以支持高级操作和实时分析工作负载
Secondary Indexes 数据库的本机功能,包括文本地理空间,化合物,TTL索引 开发人员在代码中或与协处理器一起维护的物化视图 本机二级索引可提高开发人员的工作效率,同时支持更丰富的数据访问模式来回答复杂的查询
Aggregations(聚合) 聚合管道,包括JOIN,图形遍历,搜索构面等 必须将数据移入专用的分析基础架构中,以进行键值查找之外的任何查询 本机数据库聚合可对实时运营数据进行实时分析,而无需将ETL集成到专用分析系统中

 

6.市场采用

选择数据库是一项重大投资。一旦在给定的数据库上构建了应用程序,将其迁移到其他数据库将是昂贵且具有挑战性的。公司通常会投资少量的核心技术,因此他们可以开发可以在许多项目中摊销的专业知识,集成和最佳实践。

非表格数据库仍然相对较新,尽管市场上有很多选择,但少数技术会经受住时间的考验。为了降低风险,用户应考虑数据库背后的公司和社区的健康状况。重要的不仅是产品继续存在,而且要不断发展并提供新功能。具有强大用户群的数据库使查找和雇用熟悉该产品的开发人员更加容易。它使查找信息,文档和代码示例变得更加容易。它还可以帮助组织保留关键技术人才。最后,一个强大的社区鼓励其他技术供应商开发集成并参与生态系统。

在衡量市场采用率时,在数据库引擎排名451 Group的NoSQL技能指数中,MongoDB的排名都比HBase高得多。MongoDB的广泛采用和技能可用性降低了新项目的风险和成本。

7.如何选择

HBase非常适合具有大量随机读写访问模式的键值型工作负载,特别是对于那些已经在HDFS作为公共存储层进行大量投资的组织中。领先的Hadoop发行商将HBase定位为“超大规模但相当简单的用例”。

与MongoDB相比,该定位继续说明以下内容:“如果您想在特定键上查找用户,HBase提供了非常快的随机读取和随机写入,但是MongoDB提供了更丰富的模型,您可以通过该模型跟踪所有用户的行为在线申请的方式。”

MongoDB的设计理念将关系技术中的关键概念与新兴NoSQL数据库的优势融合在一起。虽然HBase具有高度可扩展性,并且可以在部分用例中实现高性能,但是MongoDB可以在更广泛的应用程序中使用。与HBase相比,后者的直观数据模型,多文档ACID事务,丰富的查询框架,本机驱动程序和较低的操作开销通常使用户能够更快,更轻松地交付新应用程序。

登录后即可回复 登录 | 注册
    
关注编程学问公众号