为啥说HBase是列式数据库( 二 )



■网友
HBase 是面向列族的 NoSQL数据库,不能归为“列式数据库”。HBase 其实更像是 行式数据库 ,这一点社区有相关介绍

■网友
不是列数据库。 准确说Hbase 是面向列族+(kv)存储。在实际场景中,列族几乎都是当作表来使用。 和greenplum 那些列式存储差别很大。

■网友
Hbase本质上是源自google bigtable的。每个列族中,一行的所有列都是和行主键一起保存的,而且不使用列压缩。这类bigtable的模型主要还是面向行的。比如还有cassandra。

■网友
有点冷门,因为从典型的关系型数据库来看,他并不是一个列式存储的数据库(但实际会认为他是列式存储数据库),但是因为 HBase 利用了磁盘上的列式存储格式,这也是关系型数据库和 HBase 最大的区别,因为 HBase 以列式存储的格式在磁盘上存储数据。
但它与传统的列式数据库有很大的不同,传统的列式数据库比较适合实时存储数据的场景,HBase 比较适合键值对的存取,或有序的数据存取。

■网友
其实HBase 不是列式存储数据库!
不管是存储在内存的 MemStore,还是存储在 HDFS 上的 HFile,其都是基于 LSM(Log-Structured Merge-Tree)结构存储的。(一整行数据在磁盘结构上是在一起的,更新时可能不在一起)
【为啥说HBase是列式数据库】 而列式数据库在磁盘结构上是一列一列列存储的,一整行数据在磁盘结构上一般不在一起


推荐阅读