HBase表设计原则整理
1、列簇的设计
- 列簇尽量少,最好不超过3个。因为每个列簇是存在一个独立的HFile里的,flush和compaction操作都是针对一个Region进行的,当一个列簇的数据很多需要flush的时候,其它列簇即使数据很少也需要flush,这样就产生的大量不必要的io操作。
- 在多列簇的情况下,注意各列簇数据的数量级要一致。如果两个列簇的数量级相差太大,会使数量级少的列簇的数据扫描效率低下。
- 将经常查询和不经常查询的数据放到不同的列簇。
- 因为列簇和列的名字会存在HBase的每个Cell中,所以他们的名字应该尽可能的短。比如,用f:q代替mycolumnfamily:mycolumnqualifier
2、rowkey的设计
- 避免使用递增的数字或时间做为rowkey。
- 如果rowkey是整型,用二进制的方式比用string来存储更节约空间
- 合理的控制rowkey的长度,尽可能短,因为rowkey的数据也会存在每个Cell中。
- 如果需要将表预分裂为多个region是,最好自定义分裂的规则。
参考文献:
- http://www-01.ibm.com/support/knowledgecenter/SSPT3X_2.1.2/com.ibm.swg.im.infosphere.biginsights.analyze.doc/doc/bigsql_designhints.html
- http://hbase.apache.org/book/number.of.cfs.html
- http://hbase.apache.org/book/columnfamily.html
相关推荐
hellofeiya 2020-11-12
那些年写过的代码 2020-06-28
钟鼎 2020-06-26
钟鼎 2020-06-14
slacksmile 2020-06-09
嵌入式移动开发 2020-06-07
VanTYS 2020-05-30
rise 2020-04-26
chvnetcom 2020-04-26
随心而作 2020-04-19
嵌入式移动开发 2020-04-06
Freeman00 2020-03-26
saminigod 2020-03-05
VanTYS 2020-02-23
JavaWDB 2020-02-10
随心而作 2020-01-28
acloudhuang 2020-01-18
VanTYS 2020-01-04