hbase 根据需求创建组合索引(组合rowkey)及组合索引创建规则
来源:互联网 发布:php beast 解密 编辑:程序博客网 时间:2024/05/16 09:30
hbase据我目前的了解来看 《查询》方面的最大优势是根据rowkey 进行查询,然后结合map/reduce 运算效率非常高,但是如果牵扯到表关联查询,涉及到列簇中的列时,因为没有索引效率就变的非常低下,所以我这采用了组合索引(组合rowkey)方式来解决这个问题,下面采用简单的例子来说明如何创建,及创建组合rowkey时需要注意的问题。
关系数据库用户表:user
user_id name
1 raymond1
2 raymond2
3 raymond3
关系数据库用户文章列表ariticle:
article_id content user_id
1 有才 1
2 帅哥 1
3 奥特man 2
4 no凹凸man 2
最简单的一个业务需求:查询出某个用户发表所有文章
在关系型数据库解决非常简单,在article表的user_id创建索引,大数据量下效率也没问题,但是hbase下如果按照这个结构,创建article表
article_id 作为rowkey,user_id作为列簇中的列,这时候程序用hbase扫描器scanner进行user_id的扫描就有问题了,因为现在的版本是不支持在列上创建索引的,我现在的解决办法,主键用user_id,article_id 组合方式,
结构如下 user_id+_+article_id
hbase 里article结构如下
rowkey col1
1_1 有才
1_2 帅哥
1_3 奥特man
2_4 no凹凸man
扫描user_id 为1的用户文章,可以通过如下一句设置
Scan scan = new Scan(Bytes.toBytes("1_1"), Bytes.toBytes("1_9"));
来使扫描器定位出1用户所有文章
我曾经担心下见面的rowkey使用Scan scan = new Scan(Bytes.toBytes("1_1"), Bytes.toBytes("1_9"))会有问题
1_1
1_11
1_111
但是经测试发现担心是多余的,scan会自动匹配所有已 1_1 开始1_9结束的数据。
- hbase 根据需求创建组合索引(组合rowkey)及组合索引创建规则
- hbase 根据需求创建组合索引(组合rowkey)及组合索引创建规则
- mysql创建组合索引
- 分区表及分区索引(5)--创建range-hash组合分区
- 分区表及分区索引(6)--创建range-list组合分区
- 组合索引
- 组合索引
- 组合索引
- 组合索引
- 组合索引
- 组合索引
- 组合索引
- 组合索引
- 组合索引
- MySQL单列索引和组合索引的创建及区别介绍
- MongoDB性能篇 -创建索引,组合索引,唯一索引,删除索引和explain执行计划
- MongoDB性能篇 -创建索引,组合索引,唯一索引,删除索引和explain执行计划
- MongoDB性能篇 -创建索引,组合索引,唯一索引,删除索引和explain执行计划
- POJ 3370 Halloween treats
- 表格的横纵转
- EPOLL为我们带来了什么
- sql case when
- counting 1 bits C implementations
- hbase 根据需求创建组合索引(组合rowkey)及组合索引创建规则
- Double 精度问题总结
- shell调用expect
- 勾股数,gcd
- 大规模数据库的性能改善方法之一 数据分割
- 电脑配置单(自用勿删)
- VC2005手动添加定时器函数
- Linux报“too many open files”的错误
- java并发编程实践笔记