Hbase宽表设计注意事项

请问这个课程中宽表的设计中列的概念是columnfamily吗?如果不是,而是column怎么会提高检索效率?
已邀请:

fish - Hadooper

赞同来自: Hagrid mopishv0

原来这图有这么特殊的来路,下次上传一个相关文档呗,让我好理解些,我将文档帖附件里了。
 
图中上半部分所描述的Column,是个概念上的东西,可以理解为,他是HBase中的Qualifier。
上半部分的表,是一个设计的逻辑视图,其含义是,将深色的那行:

1461727580344.png


去掉,替换成红色部分,列的名称(+2)表示原有被删掉的那个记录,相对于上一条记录来说,key增加了2,值为3,直接放到了跟(+2)这个对应的cell上(同属于第一行)。
 
因此,从这个视图看,感觉上仿佛节省了存储,但,这是错误的(图中标了个Misleading)。因为,在HBase的存储模型当中,图的上半部分这个样子的结构,会被储存成下半部分这个样子:

1461727774338.png


 
即,看上去好像删掉了一行,省掉了一个长长的key的存储,但实际到了HBase里面,即使对于同一个key的多个列的值,这个key是被重复存储的。就是那个1234567890。
 
是否记得HBase的存储视图:

1461727979829.png


这里的每个value,在存储的时候,都与其相对应的key放到一起的,也就是说,key是以多份复制的方式存储在HFile中,一点都不节省存储。
将所有的关联信息都保存在同一行中–称之为宽表设计
@fish 请老师回到一下。
关于opentsdb的课程在那?可以推荐下吗
 
请问老师,能否讲一下hbase的高表和宽表的优劣么

要回复问题请先登录注册