Changes between Version 3 and Version 4 of hbase_table_design
- Timestamp:
- 09/13/2012 03:29:17 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
hbase_table_design
v3 v4 1 1、表的属性[[BR]] 1 2 == 1、表的属性[[BR]] == 3 2 4 3 5 (1)最大版本数:通常是3,如果对于更新比较频繁的应用完全可以设置为1,能够快速的淘汰无用数据,对于节省存储空间和提高查询速度有效果。[[BR]] … … 9 11 (4)[http://blog.csdn.net/jiaomeng/article/details/1495500 bloomfilter]:开启可以提升Get和exist的速度,根据应用来定,看需要精确到rowkey还是column。不过这里需要理解一下原理,bloomfilter的作用是对一个region下查找记录所在的hfile有用。即如果一个region下的hfile数量很多,bloomfilter的作用越明显。适合那种compaction赶不上flush速度的应用,单这种应用在我们这里比较少见。如果你在表中设置了Bloomfilter,那么HBase会在生成StoreFile时包含一份bloomfilter结构的数据,称其为MetaBlock;MetaBlock与DataBlock(真实的KeyValue数据)一起由LRUBlockCache维护。所以,开启bloomfilter会有一定的存储及内存cache开销[[BR]] 10 12 11 2、rowkey[[BR]] 13 14 == 2、rowkey[[BR]] == 15 12 16 13 17 rowkey是hbase的key-value存储中的key,通常使用用户要查询的字段作为rowkey,查询结果作为value。可以通过设计满足几种不同的查询需求。[[BR]] … … 17 21 (2)rowkey的散列原则:如果rowkey是类似时间戳的方式递增的生成,建议不要使用正序直接写入rowkey,而是采用reverse的方式反转rowkey,使得rowkey大致均衡分布,这样设计有个好处是能将regionserver的负载均衡,否则容易产生所有新数据都在一个regionserver上堆积的现象,这一点还可以结合table的预切分一起设计。[[BR]] 18 22 19 3、columnfamily[[BR]] 23 24 == 3、columnfamily[[BR]] == 25 20 26 21 27 columnfamily尽量少,原因是过多的columnfamily之间会互相影响。[[BR]] 22 28 23 4、column[[BR]] 29 30 == 4、column[[BR]] == 31 24 32 25 33 对于column需要扩展的应用,column可以按普通的方式设计,但是对于列相对固定的应用,最好采用将一行记录封装到一个column中的方式,这样能够节省存储空间。封装的方式推荐protocolbuffer。[[BR]]
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)