本文主要是介绍HBase 中RowKey的设计原则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、应当尽量将需要查询的信息存储在行健中,并且越靠左的字段其选择性越高(与MySQL中的建立的多列索引,支持左前缀索引,因此越靠左的字段选择性越高)
2、为了让所有字段都有意义,并且在特定的位置表示特定的字段,建议将每个字段设置为定长(不够的补0),这种定长的好处在范围查询中能够体现出来。
3、根据左前缀进行组合字段必须都有意义
比如:
当我们设计的RowKey类型为:
<userI>-<date>-<messageId>-<attachmentId>
则需要让组合字段的各个左前缀都有意义:
RowKey 描述
<userId> 扫描一个给定用户ID下的所有信息
<userId>-<date> 扫描一个给定用户ID下特定日期下的全部消息
<userId>-<date>-<messageId> 扫描一个给定用户ID和日期下的指定消息的所有附件信息
<userId>-<date>-<messageId>-<attache> 扫描一个给定用户ID和日期下以及给定消息和给定附件的具体内容
根据上面设计的格式,在实际要查询的时候(和MySQL的多列索引的查询方式类似),最左的字段我们可以自定为常量,在其之后加上范围查询。
4、让RowKey按时间降序排列的方法
(1)时间戳转为位,再按位取反
(2)LONG.MAX_VALUE-<date-as-long>
这篇关于HBase 中RowKey的设计原则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!