HBASE 二级索引的设计
基于RowKey 的索引问题总结
1、索引单一
2、多维度(字段/列)查询困难
- 多字段分别作为RK,写入多次
- 组合字段作为RK,设计复杂,不灵活
3、不经过索引的并行scan过滤,大量资源消耗,无时效性可言
总体设计
索引的实质是另一种编排形式的数据冗余,高效的检索源自于面向查询特别设计的编排形式,如果再辅以分布式的计算框架,就可以支撑起高性能的大数据查询。
二级索引构建模式
1)二级索引:某个或某些列的值与对应记录的RowKey的映射关系
2)索引的构建与数据的查询都是分布式、并发式进行的
索引设计
1)索引与主数据存放在同一张表的不同Column Family 中
- 索引与主数据划分到同一个Region 上,从索引抓取目标主数据减少RPC 次数,减少网络通信压力,把性能损失降低到最小
- 索引与主数据分配在不同的Column Family 中,实现了索引与主数据的物理分离
2)索引区的Column Family 不包含任何 Qualifier,是一个典型的“Dummy Column Family”
- 减少读写压力,快速定位
3)RowKey 格式:RegionStartKey-索引名-索引键-索引值
- RegionStartKey:索引RowKey 的前缀固定为当前Region的StartKey,一方面,这个值处在Region 的RowKey 区间之内,它确保了索引必定跟随其主数据被划分到同一个Region 里;另一方面,这个值是RowKey 区间内的最小值,这保证了在同一Region 里所有索引会集中排在主数据之前,实现了索引与主数据的逻辑分离。
- 索引键:由目标记录各对应字段的值组合而成
- 索引值:记录对应的RowKey

分享链接
参考文章地址:
http://blog.csdn.net/bluishglc/article/details/31799255
演讲稿下载地址:
http://download.csdn.net/detail/whbsr516/8922067
视频演讲地址:
http://www.infoq.com/cn/presentations/qihoo360-hbase-two-stage-index-design-and-practice

浙公网安备 33010602011771号