hbase所谓的三维有序存储的三维是指:rowkey(行主键),column key(columnFamily+qualifier),timestamp(时间戳)三部分组成的三维有序存储。



1.rowkey。我们知道rowkey是行的主键,并且hbase仅仅能用个rowkey,或者一个rowkey范围即scan来查找数据。所以 rowkey的设计是至关重要的,关系到你应用层的查询效率。我们知道。rowkey是以字典顺序排序的。而存储的字节码,字典排序,我们知道,假设是字
母,那就是字母的顺序,比方,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么rowkey1是排在 rowkey2前面的,由于按字典,a排在b前面,假设rowkey2的第一位也是a,那么就依据第二位来比較,假设还相同,则比較第三为。后面相同。这 个理解了,我们在依据rowkey范围查询的时候,我们通常是知道startRowkey,假设我们通过scan仅仅传startRowKey : d开头的。那么查询的是全部比d大的都查了,而我们仅仅须要d开头的数据,那就要通过endRowKey来限制。

我们能够通过设定endRowKey为:d
开头。后面的依据你的rowkey组合来设定,通常是加比startKey大一位。

比方说rowkey设计为:用户ID-日期,那么查某个用户某天的数 据,startKEY为3231-20121212,endKey为:3231+201213,那么你查到的就是用户为3231在20121212这一天 的数据。



2.column key



column key是第二维,数据按rowkey字典排序后,假设rowkey同样。则是依据column key来排序的。也是按字典排序。

我们在设计table的时候要学会利用这一点。比方我们的收件箱。我们有时候须要按主题排序。那我们就能够把主题这设置为我们的column key。即设计为columnFamily+主题.,这种设计。



3.timestamp



timestamp 时间戳,是第三维。这是个按降序排序的,即最新的数据排在最前面。这个就没有什么说的了。

网上其它的博客也提到比較多。



本文章主要是简单说下rowkey的字典排序即(三维有序)

最新文章

  1. IL指令汇总
  2. php 获取静态方法调用的类名
  3. Android 二维码 生成和识别(附Demo源码)
  4. Java编程思想(Chapter2、4、6)
  5. 手把手教iOS生成.a包及常见的问题
  6. 【转】Python numpy库的nonzero函数用法
  7. g++的常用参数
  8. HDU 2544-最短路(最短路spfa)
  9. [译]Ocelot - Rate Limiting
  10. C#操作Control异步工具类
  11. 修改VS 2012调试默认浏览器
  12. JS中的offsetWidth、offsetHeight、clientWidth、clientHeight等等的详细介绍
  13. goreleaser 方便的go 二进制包分发工具
  14. spring boot(18)-servlet、filter、listener
  15. Openwrt Export Gpio Configure (7)
  16. HTML5:'data-'属性的作用是什么
  17. 一头扎进sql之多表操作
  18. 第7天:javascript-DOM 获取标签、注册事件改变属性的值、innerText、改变属性的值等
  19. web.xml配置错误页面,及输出错误信息
  20. C的强制转换和C++的强制转换(转)

热门文章

  1. AC日记——曼哈顿交易 洛谷 P3730
  2. (一)安装openvpn服务器端
  3. C指针详解
  4. [P2397] yyy loves Maths VI (mode)
  5. [Codeforces 8E] Beads
  6. [BZOJ 1804] Flood
  7. 【线性筛】【筛法求素数】【约数个数定理】URAL - 2070 - Interesting Numbers
  8. 【贪心】bzoj3850 ZCC Loves Codefires
  9. Google开源C++单元测试框架Google Test
  10. C#分析URL参数获取参数和值得对应列表(一)