一、概览
MongoDB与HBase都是技术领先的非关系性数据库。MongoDB使用C++编写,HBase使用Java编写,HBase会受Java GC暂停的影响。MongoDB将数据存储为BSON(JSON的二进制形式表示)的文档。HBase专为 具有随机读取和写入访问模式Key-Value工作负载设计。
二、关键概念
许多关系数据库概念与MongoDB和HBase有相似之处。该表概述了每个系统中的一些常见概念。
RDBMS |
MongoDB |
Hbase |
表 |
collection |
表 |
行 |
Document |
列族 |
没有类似的 |
分片 |
分区 |
GROUP BY |
Aggregation Pipeline |
MapReduce |
多记录的ACID事务 |
多记录的ACID事务 |
没有 |
特性
开发者关注特性
MongoDB |
HBase |
数据模型 |
Document |
宽列 |
支持的数据类型 |
多种 |
数据转化为二进制 |
查询模型 |
多功能的查询 |
Key-Value |
二级索引 |
支持 |
需要开发人员自己解决 |
聚合 |
支持 |
需要将数据移动到特定的数据分析框架中 |
文本搜索 |
支持 |
需要将数据转移到的特定的数据分析框架中 |
数据保证 |
支持 |
没有 |
构建响应、事件驱动应用 |
支持 |
没有 |
驱动支持 |
11种支持的驱动和30+社区支持 |
支持Java和Thrift |
事务保证 |
支持简单的事务 |
单一行原子操作 |
管理者关注特性
|
MongoDB |
HBase |
创建产品级集群需要的最少节点 |
3个:主节点和次节点 |
10个:主和次级HMaster,RegionServers、hdfs和zookeeper |
推荐每个节点存储的最大数据量 |
没有限制 |
4TB |
主节点失效恢复时间 |
2秒,数据可在次级节点读取 |
60秒,数据可在次级节点读取 |
性能维护 |
C++编写不会出现Java GC暂停 |
Java 编写,GC会出现暂停的问题 |
数据分区 |
支持hash、range、zone |
仅支持hash |
备份和恢复 |
|
|
Spark和Hadoop适应 |
支持 |
支持 |
参考
- https://www.mongodb.com/compare/mongodb-hbase