市面上目前的大数据库比较多,本篇对于其中的几个进行对比总结。
ElasticSearch和impala
首先,对于两个数据库作出说明,有hive查询比较慢,hbase会针对于列的查询不太友好,所以CDH推出了impala搜索引擎,都是基于HDFS的。
ElasticSearch是基于lunce的搜索引擎。
话不多说,下面列举一下这两个数据库的优劣势。
elasticsearch的优劣势:
优势:
1、对于单表的查询很快。
劣势:
1、不支持多表join。
2、DSL的sql,不太利于新手理解。
3、不支持查询的结果的额外处理或分析的中间数据输出。
4、网络影响:会有脑裂影响。
impala的优劣势:
优势:
1、hive+impala支持多表join。
2、类sql语句,大体和sql保持一致,其中有部分语法和sql不一样。
劣势:
1、不支持用户自定义函数UDF。
2、不支持查询期的容错。
3、非常吃内存,如果一张表的大小超过了可用内存,impala会直接抛错。
Tips:
1、在测试的过程中,测试50W数据,es用时900ms,impala用时2100ms。
2、对于某些查询ES不太允许,比如某一字段在A场合需要模糊,在B场合需要精确,此时建议的做法是两个字段,一个精确,一个模糊。但该场景一般用不到,具体视场景而定。
hive
hive的查询很慢,适用于后台批处理利用MR分析数据。
hbase
hbase优劣势:
1、查询全表速度特别快。
2、对于按照列来查询相当慢。
3、对于插入的数据都会存在历史。
使用场景:比如需要分析一个病人的病史或者身体状况(对于该病人的数据会存在版本,不会出像RDB现多行数据)。
spark和strom
spark的优劣势:
吞吐量高,延迟为秒级。
有事务,但不完善。spark替代不了实时事务处理。如银行转帐等,
strom的优劣势:
吞吐量低,延迟为毫秒级。
有事务且很完善。
后面几个研究的很仓促,hhhhhhhhh。。。。。。因部分原因,等有机会了用到了再研究。