在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了。

Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中。一个空的数组用来标识表空间的起始或结尾。

在设计HBase表时,Rowkey设计是最重要的事情,应该基于预期的访问模式来为Rowkey建模。Rowkey决定了访问HBase表时可以得到的性能,原因有两个:Region基于Rowkey为一个区间的行提供服务,并且负责区间的每一行;HFile在硬盘上存储有序的行。当Region将内存数据刷写为HFile时,这些行已经排过序了,也会有序的写到硬盘上。Rowkey的有序特性和底层存储格式可以保证HBase表在设计Rowkey之后的良好性能。

关系型数据库可以在多列上建立索引,但是HBase只能在Rowkey上建立索引。访问数据库的最主要方式就是使用Rowkey。非Rowkey访问,即在不清楚Rowkey前提下访问表,可以使用全表扫描。设计Rowkey有各种技巧,而且可以针对不同访问模式进行优化。

Rowkey是HBase的KeyValue存储中的Key,通常将用户要查询的字段作为Rowkey,查询结果作为Value。

设计Rowkey之前,要注意一下几点:

1,Rowkey是以字典顺序从大到小排序

         原生HBase只支持从小到大的排序

2,尽量散列Rowkey设计

        散列之后的数据,就能保证所有的数据都不是在一个Region上,从而避免读写的时候负载会集中在个别Region上。
        

3,RowKey的长度尽量短

       如果Rowkey太长,第一存储开销会增加,影响存储效率;第二内存中Rowkey字段过长,会导致内存的利用率降低,进而减低索引命中率。
       一般做法:
             时间使用Long来表示;
             尽量使用压缩编码;

最新文章

  1. C#扩展方法
  2. java正则表达式的使用
  3. Spring管理 hibernate 事务配置的五种方式
  4. Java编程思想学习(三) 初始化与清理
  5. D类 E类地址
  6. hdu 2047
  7. 如何让对象只在堆或者栈中分配空间ANDC++禁止一个类被继承
  8. putty 默认设置
  9. Python作业之分页显示内容
  10. Spring中的ApplicationContextAware使用
  11. 潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)
  12. 构造方法调用另一个构造方法,用this
  13. 004.Zabbix3.x-Server服务端安装
  14. django-rest-framework登陆认证
  15. git Push failed: Could not read from remote repository 解决方案
  16. 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S
  17. js 中实现aop
  18. 爱奇艺、腾讯、优酷、搜狐、芒果、乐视、PPTV、音悦台等VIP视频免费观看
  19. 缩略图信息提取工具vinetto
  20. Sql_server_2014创建数据库自动备份

热门文章

  1. 为什么有时候NSData转换成NSString的时候返回nil
  2. [翻译] DKTagCloudView - 标签云View
  3. Centos7下Mysql通过.frm和.ibd恢复数据
  4. 编程题1001.A+B Format (20)
  5. Gsoap在QT工程里如何调用
  6. 一个查询ip地址的mysql数据库--ip2nation
  7. Android 高级UI设计笔记23:Android 夜间模式之 两种常用方法(降低屏幕亮度+替换theme)
  8. jQuery放大镜插件
  9. ethereumjs/ethereumjs-common-3-test
  10. python matplotlib quiver——画箭头、风场