小编syy*_*yys的帖子

关于重复和区域服务器热点的HBase表密钥设计

我需要存储由userId标识的用户生成的事件.每个用户都属于由companyId标识的公司.我在HBase中提出了一个表格设计如下:

rowkey:< companyId > < 用户id > < 时间戳 >

column-family:info(封装事件属性集,如下所示)

:< attr1 >,< attr2 > .... < attrn >

我知道这个关键设计将有助于稍后使用部分密钥扫描在companyId和/或userId上查询数据.话虽如此,我有一些问题和疑虑,并希望得到一些想法.

1-如果我们有一个读用例,读取给定时间范围的所有数据,那么使用当前设计,我们将无法使用rowKey.相反,我们必须在时间戳字段上进行全扫描和过滤行(作为attr列之一单独维护)我是否完全偏离此处?

2-如何处理重复?我知道HBase会在这种情况下创建一个新版本的行,但它是否允许稍后根据1中提到的读取用例进行读取?我知道您可以在查询时控制版本,但它是一个好的设计还是错误地重载了本机功能?

3-这涉及区域服务器热点.我们没有单一的密钥,但是如果说,一个特定的公司或用户非常活跃,我们仍然会遇到这个问题.基于服务器数量的散列和分段在这种情况下不起作用?也许如果我们在timestamp字段上哈希并将其附加到rowKey而不是原始值?但问题是,扫描密钥的时间戳组件是不可能的.我们必须在列中有一个单独的列(attr)来捕获它.有什么建议?

非常感谢您提供的任何输入(评论,链接,书籍,想法).

hbase duplicates primary-key-design

5
推荐指数
1
解决办法
3168
查看次数

标签 统计

duplicates ×1

hbase ×1

primary-key-design ×1