【原创】HBase中列族设计的原则

    HBase表在进行模式设计时,首先考虑的一个问题是,这个表应该有多少个列族。一张表设计多少列族合理呢?相信这个问题困扰着不少HBase初学者。让我们来先简单分析一下HBase的实现原理。

    HBase中的表 和其数据库一样,也是由行和列组成的,虽说模式有些不同。HBase中的表可能达到数十亿行和数百万列,表的大小可能达到TB级,显然不可能在一台机器上存放整张表。相反,一张表在存储时会切分成小一点儿的数据单位,然后分配到多台服务器上。这个小一点儿的数据单位叫region。HBase表中数据的访问是通过其对应region来进行管理的,region内对列族的管理如下图:

 
    每个列族都会MemStore和BlockCache,数据在硬盘中以HFile形式存储。HFile不会存储跨列族的数据。
    因此,根据上图可以得出,HBase表中列族设计的原则是:
    一、 同一个列族里存储相似访问模式的所有有数据。
    可以理解为关系数据库中一对一关系,一对一关系的两张表,在HBase中可以存储在一张表中,放到不同的列族。
    二、大多数的表,设计一个列族就够了。
    在HBase中,高表比宽表性能好,可以设计多张表来满足需求。
 

猜你喜欢

转载自dujian-gu.iteye.com/blog/2225570