Changes between Version 3 and Version 4 of hbase_table_design


Ignore:
Timestamp:
09/13/2012 03:29:17 PM (14 years ago)
Author:
liaojiaohe
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • hbase_table_design

    v3 v4  
    1       1、表的属性[[BR]] 
     1 
     2==       1、表的属性[[BR]] == 
     3 
    24 
    35      (1)最大版本数:通常是3,如果对于更新比较频繁的应用完全可以设置为1,能够快速的淘汰无用数据,对于节省存储空间和提高查询速度有效果。[[BR]] 
     
    911      (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]] 
    1012 
    11       2、rowkey[[BR]] 
     13  
     14==      2、rowkey[[BR]] == 
     15 
    1216 
    1317       rowkey是hbase的key-value存储中的key,通常使用用户要查询的字段作为rowkey,查询结果作为value。可以通过设计满足几种不同的查询需求。[[BR]] 
     
    1721      (2)rowkey的散列原则:如果rowkey是类似时间戳的方式递增的生成,建议不要使用正序直接写入rowkey,而是采用reverse的方式反转rowkey,使得rowkey大致均衡分布,这样设计有个好处是能将regionserver的负载均衡,否则容易产生所有新数据都在一个regionserver上堆积的现象,这一点还可以结合table的预切分一起设计。[[BR]] 
    1822 
    19       3、columnfamily[[BR]] 
     23 
     24==       3、columnfamily[[BR]] == 
     25 
    2026 
    2127      columnfamily尽量少,原因是过多的columnfamily之间会互相影响。[[BR]] 
    2228 
    23       4、column[[BR]] 
     29 
     30==       4、column[[BR]] == 
     31 
    2432 
    2533      对于column需要扩展的应用,column可以按普通的方式设计,但是对于列相对固定的应用,最好采用将一行记录封装到一个column中的方式,这样能够节省存储空间。封装的方式推荐protocolbuffer。[[BR]]