HBase表的设计(一)
HBase表模式的设计 对于HBase表,在设计表结构之前,我们需要先考虑的几个问题: 这个表应该有多少个列族? 列族使用的是什么数据? 每个列族应该有多少列? 列名应该是什么?尽管列名不必在建表的时候定义,但是后期读写数据时是需要知道的。 单元存放什么数据? 每个单元存储多少个时间版本? 行健结构是什么?应该包含什么信息? 模式影响到表结构和如何读写表,所以说把这些放到宽泛的模式设计中变得尤为重要。 一、HBase的存储方式 HBase底层物理存储是基于HDFS,在HDFS上是以HFile的形式进行存储的: 表中的列族在HDFS上是以HFile的形式存在,一个HFile对应一个列族,但是一个列族可能会对应多个HFile。 一个特定的列族的所有数据在HDFS上会有一个物理存储,这个物理存储区可能会有多个HFile组成,理论上可以通过合并来得到一个HFile,一个列族的所有列在硬盘上是存放在一起的,使用这个特性,可以把不同模式的列放在不同的列族,以便隔离他们。这也是HBase面相列族存储的原因。 二、宽表与高表 宽表: HBase中所谓的宽表,指的是表中行少而列多,也就是说一行当中包含有很多的列,但是表整体行很少,比如一张表中行健一共有100个,但是每个行健所包含的列有1000个,这种就是所谓的宽表。 高表 HBase中所谓的高表,恰好与宽表相反,行多