一直以来对rowkey的设计都比较迷茫,《hbase权威指南》倒是给出了个还算靠谱的例子。
下面这个例子有点儿像帖子表结构,它的rowkey设计是这样的,可以简单的理解为,什么人在什么时间发了什么信息,信息包括什么附件,它是用户为主线的一个设计。
<userId>-<date>-<messageId>-<attachmentId>
如果我们想查某个用户发的信息,我们可以设置scan的start rowkey 为该userId,end rowkey为userId+1即可。
当我们要查某个用户某天发了什么信息,我们可以使用<userId>-<date>来搜索该用户所有的帖子。
当我们要查某个具体的帖子的内容,rowkey过滤<userId>-<date>-<messageId>即可。
所以rowkey的设计是要看具体的应用的。
上面这个例子没有考虑热点的问题,实际上每个用户的帖子被访问的热度是不一样的,有些帖子被大量访问,有的无人问津。
那怎么办呢?有的书上写,在前面加0-n的随机数,random % 机器数 。但是这样子的话,以后你想取某个用户的userId的时候只能开多线程去访问了,因为你不能逆推出来它的rowkey。在和支付宝的工程狮聊了一下,他们是这样处理的取md5(userId)的前4位+reverse(userId)这个样子来处理userId,这样子的话,能解决热点的问题,也可以逆推出来rowkey。
转载于:https://my.oschina.net/u/923508/blog/413126
分享到:
相关推荐
《HBase的Rowkey设计详解》 HBase作为一种高性能的分布式NoSQL数据库,因其在OLAP实时分析中的卓越性能而受到广泛关注。其核心特性之一便是通过Rowkey进行数据查询,因此Rowkey的设计对于HBase的读写性能至关重要。...
当我们需要将Spark处理的数据存储到HBase时,RowKey的设计就显得至关重要,因为它直接影响数据的读写性能和分布均匀性。本文将围绕"Spark存储数据到HBase实现RowKey完全散列,多进程多线程间Random完全随机,解决...
"大数据性能调优之HBase的RowKey设计" 大数据功能调优之HBase的RowKey设计是指在HBase中对RowKey的设计,以提高HBase的性能和可扩展性。RowKey是HBase中的一种二进制码流,可以是任意字符串,最大长度为64kb,但...
HBase RowKey 设计与协处理器运用 HBase 是一个基于 HDFS 的分布式、面向列的 NoSQL 数据库,具有高性能、可靠性和扩展性等特点。本文将详细介绍 HBase 的 RowKey 设计和协处理器运用。 HBase 的介绍 HBase 是一...
更重要的是,合理设计rowkey,因为HBase是基于rowkey的字典顺序进行存储的。rowkey的设计应尽量短小,以减少存储空间的消耗和提高查询效率。 客户端调优涉及多个参数。例如,设置scanner缓存大小可以减少对服务器的...
用户历史订单列表查询rowkey设计技巧 最左前缀原则
接下来,我们将详细讨论HBase中RowKey与索引的设计原则和技巧,以及它们在HBase中的重要性和应用案例。 首先,RowKey是HBase中表的主键,用于唯一标识表中的每一行记录。它在HBase的数据模型中扮演着非常关键的角色...
本资料主要探讨了HBase中的RowKey(行键)设计以及如何利用它来实现高效的索引策略。下面我们将深入探讨这些关键概念。 **1. HBase的基本架构** HBase是基于Google Bigtable模型设计的,它将数据以表的形式存储,...
在HBase中,行键(RowKey)的设计是至关重要的,因为它直接影响到数据的存取效率和查询性能。HBase是一种分布式、列式存储的NoSQL数据库,它以Key-Value的形式存储数据,并且主要依赖RowKey进行快速定位。由于HBase...
有效的RowKey设计对于HBase的性能至关重要。良好的RowKey设计可以减少热点问题,提高查询效率。以下是一些RowKey设计的通用原则: 1. **避免热点问题**:确保RowKey的分布尽可能均匀,避免所有访问集中在少数几个...
【HBase数据库设计】 HBase是一种基于列存储的分布式数据库,它是Apache Hadoop生态系统的一部分,设计用于处理海量数据。HBase的主要特征包括: 1. **分布式存储**:HBase构建在Hadoop的HDFS(Hadoop Distributed...
│ Hbase表中rowkey及列簇的设计 │ Hbase表设计-微博案例的表设计 │ Hbase表设计-微博案例的业务实现 │ Hbase列簇属性的介绍 │ Hbase性能优化-GC调优 │ Hbase性能优化-内存管理 │ Hbase性能优化-flush、...
HBase的学习和使用需要对Hadoop生态系统有所了解,因为HBase与Hadoop的其他组件紧密集成,尤其是HDFS和Zookeeper。对于希望构建大规模、可扩展的分布式系统的技术人员来说,掌握HBase是实现这一目标的关键技能之一。
【HBase 表结构设计】 HBase 是一种分布式非关系型数据库,它是基于谷歌的 Bigtable 论文设计的,适用于大数据存储。HBase 的核心特性包括列式存储、分布式、可扩展性和强一致性。在设计 HBase 表结构时,我们需要...
同时,掌握HBase的安装、配置和基本操作,如创建表、插入数据、查询数据等,是学习HBase的基础。 【HBase与其他技术的集成】 HBase可以与Apache Spark集成,用于实时数据处理和分析。Phoenix是SQL查询引擎,允许...
【描述】虽然描述为空,但我们可以推测博主可能在文章中分享了个人学习HBase的心得体会,包括如何配置和搭建环境,理解HBase的核心概念如Region、RowKey、Column Family和Cell,以及如何使用HBase API进行数据操作。...
本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路。 1. 表的属性 HBase 表...