几种数据库对比如下:
|
redis |
mysql |
elasticsearch |
hbase |
hive |
容量/容量扩展 |
低 |
中 |
大 |
海量 |
海量 |
查询时效性 |
极高 |
中等 |
较高 |
较高 |
低 |
查询灵活性 |
较差 |
非常好 |
较好 |
较差 |
非常好 |
写入速度 |
极快 |
中等 |
较快 |
较快 |
慢 |
一致性、事务 |
弱 |
强 |
弱 |
弱 |
弱 |
redis是基于内存的,所以查询时效性,写入速度非常快,但是扩展性差。基于key-value形式存储,查询的灵活性较差。
mysql也可用来做分布式数据库,不过比较麻烦。支持sql,查询很灵活。查询性能,写入速度都还行,不过支持事务非常好。
elasticsearch由于是分布式的,扩展性能好,查询时效快,写入速度快。不支持sql但是查询还算灵活,不过关联(join)查询较差,一致性、事务也较差。
hbase也是分布式的,支持海量数据,查询时效性也很快,写入速度快,但是依靠rowkey的设计,查询的灵活性很差。
hive是基于hadoop的,所以也支持海量数据,不过任何的操作都需要跑mr的,所以查询以及写入效率很低下,但是对sql的支持是非常棒的。
数据量单日达到TB级别的话还是选择hbase,hive,再根据查询时效性具体选择。当日没有达到TB级别的话es是个很好的选择。redis,mysql并不适合存储海量的数据。结合特性,redis主要还是用作缓存的,mysql还是用于数据量一般,对事务有严格要求的情况,不过支持sql,用来最终数据分析落地展示还是非常合适的。