HBase二级索引实现方案.doc


立即下载 咿呀哟
2024-03-20
DataTable Region IndexTable 索引 创建 RowKey Start Key HBase 二级
7.6 MB

HBase二级索引实现方案
——ODP
说明:本方案主要参照了华为公布的HBase二级索引实现方案。
1. 概要设计
主要思路:为每个DataTable创建一个与之对应的IndexTable,通过各种途径,保证IndexTable Region与DataTable Region一一对应,并且存储在同一个RegionServer上,存储结构如图1所示。最终要实现的效果是,每个IndexTable Region是对应的DataTable Region的局部索引,使用索引进行查询时,将对每个IndexTable Region进行检索,找出所有符合条件的DataTable RowKey,再根据DataTable RowKey到对应的DataTable Region中读取相应DataTable Row。
图1 HBase二级索引存储结构示意图
2. 详细设计
2.1. IndexTable的创建
IndexTable的创建主要出现在两个时机,一是创建新DataTable时,系统根据索引定义,自动创建对应的IndexTable;二是对已存在的DataTable,用户调用接口方法,动态创建索引。
IndexTable的创建过程如下:
第一步,获取DataTable的所有RegionInfo,得到所有DataTable Region的StartKey。
第二步,结合索引定义和DataTable Region的StartKey信息,调用HBaseAdmin的createTable(final HTableDescriptor desc, byte [][] splitKeys)方法创建索引表。
通过以上两步便建立了IndexTable Region和DataTable Region的以StartKey为依据的一一对应关系。
2.2. IndexTable RowKey的设计
IndexTable的RowKey由四部分组成,按顺序依次是:DataTable Region StartKey、IndexName、IndexValue和DataTable RowKey,如图2所示。
图2 IndexTable RowKey结构示意图
A. DataTable Region StartKey。将DataTable Region的StartKey作为IndexTa


DataTable/Region/IndexTable/索引/创建/RowKey/Start/Key/HBase/二级/ DataTable/Region/IndexTable/索引/创建/RowKey/Start/Key/HBase/二级/
-1 条回复
登录 后才能参与评论
-->