日期:2014-05-16  浏览次数:20552 次

一种在HBase中创建多个索引的实现方式

Hbase只支持一级索引,如rowkey,那么如果有创建多个索引的需求如何实现呢?

场景如下:

学生表涉及信息如下:

学号
身份证id
姓名
专业

?

在对学生查询的时候需求如下:

1.基于学号
2.基于身份证号
3.基于姓名

?

那么如何实现所级索引?

实现方案:

1.创建索引表用于存储二级索引到rowkey的映射关系

2.查询的时候先查询索引表然后在查询主表

3.设定job定时更新索引表

以身份证和姓名为例,身份证号为主表rowkey

index_student_name

rowkey:name

value:身份证id列表(有重名情况)

?

?

?

1 楼 406657836 2013-09-09  
可以看看 华为的 基于coprcessor的 secondary index。你举例子这几个字段都不会是 经常变动的,做索引效率还是挺高的!copressor肯定会影响你的写入性能,看你的写入量了。

华为 copressor地址https://github.com/Huawei-Hadoop/hindex