ES |
|
- 字段类型无法修改
- 不支持mapReduce
- 写入性能较低、硬件资源消耗高
- 没有细致的权限管理
- 各节点数据的一致性问题
|
- 日志分析:将日志统一存储,进行管理和查询。
- 全文索引:电商商品搜索、移动应用搜索、企业内部信息搜索等
- 商业智能 BI:电子商务、移动应用、广告媒体等业务,进行数据分析和数据挖掘来辅助商业决策。
| 如果你需要构造一个搜索引擎或者你想搞一个看着高大上的数据可视化平台,并且你的数据有一定的分析价值,选ES |
MongoDB |
- 表结构灵活可变,字段类型可以随时修改。
- 插入数据时,不必考虑表结构的限制。
- 支持mapReduce
|
|
- 网站实时数据:实时的插入,更新与查询,并具备网站实时数据存储所需的复制及伸缩性。
- 数据缓存:信息基础设施的缓存层。MongoDB 持久化缓存层可避免下层的数据源过载。
- 大尺寸、低价值数据存储
- 高伸缩性场景:由数十或数百台服务器组成的数据库。MongoDB 的路线图中已经包含对 MapReduce 引擎的内置支持。
- 对象或 JSON 数据存储:BSON 数据格式非常适合文档化格式的存储及查询
| 如果你的数据规模较大,对数据的读性能要求很高,数据表的结构需要经常变,有时还需要做一些聚合查询,选MongoDB; |
HBase |
- 支持海量数据
- 高扩展性(横向扩展)
- 高可靠性
- 高性能
- 列操作
|
- 不支持复杂查询:只支持按照row key来查询
- 容易产生单点故障(在只使用一个HMaster的时候)
- 不支持事务
- 不支持JOIN,需要用MapReduce
- 只能在主键上索引和排序
- 没有内置的身份和权限认证,需要外部支持
- HBase是很重的一款产品,需要依赖很多的Hadoop组件
|
- 写密集型应用,每天写入量巨大(上千万或者上亿行,每日 TB 以上数据量),而相对读数量较小的应用
- 比如游戏的日志,DNS信息等
- 不需要复杂查询条件来查询数据的应用
- HBase只支持基于rowkey的查询,对于HBase来说,单条记录或者小范围的查询是可以接受的,大范围的查询由于分布式的原因,可能在性能上有点影响,而对于像SQL的join等查询,HBase无法支持。
- 对性能和可靠性要求非常高的应用
- HBase本身没有单点故障,可用性非常高。
| 如果你需要存储海量数据,且都不知道你的数据规模将来会增长多么大,那么选HBase |