简单来讲,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
 

八 rowkey设计 几种方法的更多相关文章

  1. rowkey设计原则和方法

    rowkey设计首先应当遵循三大原则: 1.rowkey长度原则 rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存, ...

  2. Linux下进程通信的八种方法

    Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量 ...

  3. Javascript刷新页面的八种方法

    /** * Javascript刷新页面的八种方法 * 说明一下,jQuery没有发现刷新页面的方法. */ 1 history.go(0) 2 location.reload() 3 locatio ...

  4. Linux 的shell 字符串截取很有用。有八种方法。

    一 Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.linuxidc.com/123.htm 1  # 号截取,删除左边字符,保留右边字符. echo ${va ...

  5. Android中UI线程与后台线程交互设计的5种方法

    我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一 些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必 ...

  6. c/c++测试函数的运行时间(八种方法)

    目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但 ...

  7. Apache shiro集群实现 (八) web集群时session同步的3种方法

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  8. nodejs高并发大流量的设计实现,控制并发的三种方法

    nodejs高并发大流量的设计实现,控制并发的三种方法eventproxy.async.mapLimit.async.queue控制并发Node.js是建立在Google V8 JavaScript引 ...

  9. 简洁经常使用权限系统的设计与实现(一):构造权限菜单树的N(N>=4)种方法

    权限系统.Web开发常见标准子系统之中的一个.结合自己的一些思考和实践,从本篇開始权限系统的设计与实现之路. 近期,重构了项目的权限菜单构造过程,向前端返回json格式的权限树. 这一篇.仅仅是大致介 ...

随机推荐

  1. 【原创】JMS生产者和消费者【PTP异步接收消息】

    PTP模式下,异步接收消息需要定义一个MessageListener来监听,当生产者有消息要发送时会主动通知Listener去处理该消息,会调用监听的onMessage方法去处理. 首先看生产者(和同 ...

  2. hiho1079 - 数据结构 线段树(入门题,离散化)

    题目链接 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去 ...

  3. .NET 拼音汉字转化(全面)

    引言 这是一个.NET 用C#语言编写的  拼音转汉字类,考虑到有很多拼音转汉字,但是试用过发现大部分有很多生僻字都没有办法显示.在此分享一个支持绝大多数的较为全面的拼音汉字转化帮助类.不多说,代码附 ...

  4. 使用Python进行多线程检查.moe三位剩余有效域名

    翻看博客看到一段不错的代码 虽然近期没有购买域名的需求 不过日后有购买域名的需求的话 稍作修改直接使用还是很方便的 import threading import requests import js ...

  5. BZOJ 2154/2693 Crash的数字表格/jzptab (莫比乌斯反演)

    题目大意:求$\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)$的和 易得$\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{gcd(i,j)}$ 套 ...

  6. vue+element-ui+slot-scope或原生实现可编辑表格(日历)

    你们公司的产品是不是还在做一个可编辑表格功能? 1.前言 咱开发拿到需求大多数是去网上找成型的组件,找不到再看原生的方法能否实现,大牛除外哈,大牛一般喜欢封装组件框架. 2.思路 可编辑表格在后台管理 ...

  7. 紫书 习题 8-20 UVa 1620 (找规律+求逆序对)

    这道题看了半天没看出什么规律, 然后看到别人的博客, 结论是当n为奇数且逆序数为奇数的时候 无解, 否则有解.但是没有给出证明, 在网上也找到详细的证明--我也不知道是为什么-- 求逆序对有两种方法, ...

  8. 素数计数函数$\pi(x)\sim \Theta(\frac{x}{\log{x}})$的一个初等方法——素数定理的估计

    $\DeclareMathOperator{\lcm}{lcm}$ 本文的方法来源于GTM 190:"Problems in Algebraic Number Theory",给出 ...

  9. libTIFF 图像读取与保存

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/YhL_Leo/article/details/49848391 1 头文件 libtif ...

  10. wipefs进程是啥,占用了百分之90多的cpu

    http://www.cnblogs.com/liuchuyu/p/7490338.html