HBase 对比 Redis
https://db-engines.com/en/system/HBase;Redis
二者都属于NoSQL,但又有很大不同:
HBase是一个分布式的、面向列的开源数据库,它是Apache的Hadooop项目的子项目。最初来源于Fay Chang所撰写的Google论文"Bigtable:一个结构化数据的;分布式存储系统"。一般和HDFS一起结合使用,能存储海量数据。
Redis是一个开源的使用ANSIC语言编写、支持网络、基于内存的日志型、Key-Value数据库; 优势是速度快,并发高; 缺点是数据类型有限,查询功能不强,一般用作缓存(当做DB用的,更多是允 许丢失的数据)。
综上: 根据具体业务场景、数据量选择最合适的就好。
两者功能上比较相近,都属于nosql数据库,都支持数据分片存储,一般来讲redis比较依赖内存,适合做缓存,hbase适合做大数据的持久存储,两者适合的场景不太一样,主要区别有如下几点:
1.读写性能:hbase采用了LSM结构,写快读慢,hbase读延时在一般在几毫秒,redis读延时在几十微秒,性能相差比较大.
LSM-Tree 全称是Log Structured Merge Tree,是一种分层、有序、面向磁盘的数据结构,其核心思想是充分利用磁盘的顺序写性能要远高于随机写性能这一特性,将批量的随机写转化为一次性的顺序写。LSM-Tree 被是一种面向写多读少应用场景的数据结构 ,被 Hbase、RocksDB 等强力 NoSQL 数据库采用作为底层文件组织方式。 https://wingsxdu.com/post/database/leveldb/#gsc.tab=0
2.数据类型:hbase和redis都支持kv类型,但redis支持更丰富的集合类型list,set等
3.数据量:redis在热数据比内存大时,性能下降比较厉害,非常依赖内存,hbase不存在这问题
4.部署复杂度:hbase部署复杂,依赖hadoop,zookeeper,redis部署简单
5.数据持久化:hbase采用了WAL,先记录日志再写入数据,理论上不会丢失数据,而redis采用的是异步复制数据,failover时可能丢失数据.
HBase 是属于hadoop生态圈的组件,不可能脱离hdfs使用的。hbase部署起来较重,需要有一定人力搞定它。但是优点也是很明显的,作为分布式数据库,容灾以及扩展性都很棒。
Redis更适合小场景的需求,优点是速度快,作为缓存是个不错的选择。但是大数据肯定不够玩。
hbase是可以作为线上系统的后台的,实时性是建立在你们对表的设计和优化上的。如果人力允许,完全可以用hbase redis实现数据仓库加缓存数据库,速度和扩展性都兼顾。