• rowkey设计原则和方法


    rowkey设计首先应当遵循三大原则:

    1、rowkey长度原则

      rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存,一般设定成定长。

      一般越短越好,不要超过16个字节,注意原因如下:

      (1)目前操作系统都是64位系统,内存8字节对齐,控制在16字节,8字节的整数倍利用了操作系统的最佳特性。
      (2)hbase将部分数据加载到内存当中,如果rowkey过长,内存的有效利用率就会下降。

    2、rowkey散列原则

      如果rowkey按照时间戳的方式递增,不要将时间放在二进制码的前面,建议将rowkey的高位字节采用散列字段处理,由程序随即生成。低位放时间字段,这样将提高数据均衡分布,各个regionServer负载均衡的几率。

      如果不进行散列处理,首字段直接使用时间信息,所有该时段的数据都将集中到一个regionServer当中,这样当检索数据时,负载会集中到个别regionServer上,造成热点问题,会降低查询效率。

    3、rowkey唯一原则

      必须在设计上保证其唯一性,rowkey是按照字典顺序排序存储的,因此,设计rowkey的时候,要充分利用这个排序的特点,将经常读取的数据存储到一块,将最近可能会被访问的数据放到一块。但是这里的量不能太大,如果太大需要拆分到多个节点上去。

      所以良好的rowkey设计,应当遵循三大原则,并且能让数据分散,从而避免热点问题。


      本节介绍几种常用的rowkey设计方法,以供各位学习。

    做自己的太阳,成为别人的光!
  • 相关阅读:
    HDU 3339 In Action 最短路+01背包
    hash与map的区别联系应用(转)
    POJ
    欧几里德与扩展欧几里德算法(转)
    POJ
    第三届蓝桥杯C++B组省赛
    第四届蓝桥杯C++B组省赛
    第五届蓝桥杯C++B组省赛
    第六届蓝桥杯C++B组省赛
    线段树为什么要开4倍空间
  • 原文地址:https://www.cnblogs.com/botaoli/p/12753744.html
Copyright © 2020-2023  润新知