关于hbase二级索引的理解,请指导。
1、产生背景为了方便组合查询,类似select 关系型数据库
2、如何产生
在存储hbase数据时候,通过调用hbase底层接口,创建索引表和表数据
3、如何做
RS起始rowkey+索引名+索引值+rowkey
4、个人理解
场景:
知道某一列的值,不知道rowkey,如何查询呢? 可以使用上述构建索引方式,通过已知的value,查询出该行的rowkey,然后通过rowkey查询出对应列的值。
问题是:这个索引值是代码可以写的吗是已知的吗? 如不是,如何得到这个RS起始rowkey、索引名和索引值?
刚接触这个二级索引不久,请多多指导。
http://www.cnblogs.com/MOBIN/p/5579088.html 1、产生背景
为了方便组合查询,类似select 关系型数据库这个还都不到关系数据库sql,即使有二级索引,限制也是非常大的
2、如何产生
在存储hbase数据时候,通过调用hbase底层接口,创建索引表和表数据
赞同理解,不过需要明白索引表和主表的关系
3、如何做
RS起始rowkey+索引名+索引值+rowkey
如何做这里没看明白,二级索引是为了弥补一些列值快速查询
4、个人理解
场景:
知道某一列的值,不知道rowkey,如何查询呢? 可以使用上述构建索引方式,通过已知的value,查询出该行的rowkey,然后通过rowkey查询出对应列的值。
正因为不知道rowkey,所以要到索引表中去去查找
问题是:这个索引值是代码可以写的吗是已知的吗? 如不是,如何得到这个RS起始rowkey、索引名和索引值?
楼主可能缺乏实际项目经验。这个查询的值,是我们已知的。比如我们想查询店铺中有没某个商品,这个值是你输入的
推荐
hbase如何创建二级索引以及创建二级索引实例
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8857
让你明白hbase二级索引核心思想
http://www.aboutyun.com/forum.php?mod=viewthread&tid=8819
可以考虑elasticsearch或者solr 多谢分享 arsenduan 发表于 2017-1-9 17:30
1、产生背景
为了方便组合查询,类似select 关系型数据库这个还都不到关系数据库sql,即使有二级索引,限 ...
非常感谢详细的答复。的确是缺乏项目经验,目前也是自学阶段,理解很多还不到位。
还有一些疑问:
1、索引表中除了rowkwy之外,其他的都是已知的。
楼主可能缺乏实际项目经验。这个查询的值,是我们已知的。比如我们想查询店铺中有没某个商品,这个值是你输入的。
这个输入的应该是索引表索引值吧,索引值和索引名啥区别?
没有项目经验如何学呢?担心理解出错啊
谢谢
credit 发表于 2017-1-9 17:35
可以考虑elasticsearch或者solr
OK。 研究下
谢谢啊
Wyy_Ck 发表于 2017-1-10 09:42
OK。 研究下
谢谢啊
不客气,只使用过solr,不过感觉elasticsearch的应用更多,使用solr如果有问题可以交流下
Wyy_Ck 发表于 2017-1-10 09:41
非常感谢详细的答复。的确是缺乏项目经验,目前也是自学阶段,理解很多还不到位。
还有一些疑问:
1、 ...
这个输入的应该是索引表索引值吧,索引值和索引名啥区别?
二者是一回事。其实这个很复杂的,需要楼主消化一段时间。多找资料,多打基础。回头再来看,就会明了多了。
先弄明白主表和索引表
主表其实就是我们的信息表。比如学生表
学生号,姓名,年龄,班级
在hbase中,学生号可以作为rowkey.
学生信息,可以作为列簇,而列簇里面包含三个列,分别为
姓名,年龄,班级。
但是我不止想通过学号,在查询学生,我还想通过姓名来查学生。
所以我们就要建立二级索引表,将学生号和学生姓名另外建表。
为何另外建表??
如果不明白,这里说明,还是处于混沌状态。
是因为hbase只有rowkey查询是速度是非常快的。其它查询是非常慢的。所以我们要另外建表。通过在索引表中,通过我们想查询的姓名【输入姓名】,快速的定位rowkey【学生号】,然后根据学生号【rowkey】快速的定位学生信息【比如学生号,姓名,年龄,班级】。
我们这样做的目的是什么?
为啥搞这么麻烦,就是为了效率,提升查询速度。
页:
[1]
2