八 rowkey设计 几种方法

简单来讲,rowkey就是 KeyValue 中的key  
rowkey设计之  尽量散列设计 RowKey
         如第三部分第六中讲到,如果数据都是有序的存储到一个特定的范围内,将会存储在一个有特定起始键和停止键的 region 中。 由于一个 region 只能由一个服务器管理, 所以所有的更新都会几种在一台服务器上。 这会导致系统产生读写热点, 并由于写入数据过分几种而导致整个系统性能下降。
         1 方式采用 SHA1( MD5落后了,SHA1是MD5改良版) 加密, 取前6位作为前缀加入到userid前面。
         2 给入UUID合理加入
          缺点:用户要扫描一个连续数据的范围时,可能需要对每个 region 服务都发起请求(因为之前的连续数据已经分散到不同的服务器中)。
          好处:用户可以多线程并行的读取数据。这有些类似于一个小规模的 MapReduce 作业, 这样查询的吞吐量会有所提高。
rowkey设计之 RowKey 长度尽量短
         缺点:如果 rowkey 太长,第一存储开销会增加,影响存储 效率 ,第二 内存中RowKey字段过长,会导致内存的利用率降低,进而降低索引命中率。
         解决方法:    
                             1 时间用 Long 来表示
                              2 尽量使用编码压缩 
rowkey设计之  优先选择   行键设计》列族设计》列限定符》时间戳》值
     Query 单元格按照时间戳降序排列。将所以在 HFile 的 Reader 读取数据时,最新的值先被读到(图右下),这也是 HBase 设计模式中典型的读取数据的方式。
    KeyValue 存储时先按行键排序,当一行有多个单元格时内部再按列键升序排序。
    用户可以按行键检索一行数据没这样可以有效的减少查询特定行和航范围的时间。设定列族可以有效的减少查询的存储文件。 虽然时间戳或者版本在整个键的最右边,但是他是很重要的筛选内容。 存储文件中为每个单元格(cell)都保存了时间错,所以当用户查询一个两小时前修改过的单元格时,就可以跳过之包含如4小时前数据的存储文件。
    另一个层次的查询力度是 列限定符(column qualifier)。 用户可以在查询数据时制定特定的列,或定义过滤器时包含或排除用户需要访问的列。 不过在这一粒度上筛选数据时,系统不得不检查每个送到过滤器的 KeyValue, 所以通过限定符筛选数据只会有小幅度的性能提升。
    总结  列族,  rowkey, 时间戳, 列限定符, 值
    
                                                                                                                                                      God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting.                                                                              rocky_24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值