导读
阿里云HBase发布了“全文索引服务”
运用“全文索引服务”功用能够让用户在HBase之上构建功用更丰厚的查找事务,不再局限于KV简略查询,不再苦恼于规划各种rowkey,不再后怕日益改变的HBase杂乱查询事务。
为什么要增强HBase的检索才能
咱们在运用HBase的时分都会面对一个问题,便是规划HBase的rowkey。可虽然咱们工程师是多么的优异,收拾罗列了一切事务检索需求,并裁剪折中了这样那样的事务,缺仍然不能规划一个万能的rowkey来满意各种事务查询需求。
又例如在某新零售事务中,需求对产品标题或许描绘内容进行关键字查询,在HBase中咱们只能运用含糊查询来完成,但含糊查询在HBase中是比较低效的。相似这种标题/描绘内容中进行关键字查询事务,比较适宜运用分词查询,这个功用HBase都无法供给满意。
别的,在新零售查询事务中,为了进步用户体会,经常会进步查找成果进行分类计算的需求,例如咱们在电商网站中,查找关键字“时髦”,在显现匹配此关键字成果的产品中,依照 衣服、电子、日用等类型进行了分类计算匹配成果,这样用户就能够挑选对应的大类进行二次查询,快速查询到用户想要的产品,然后进步了用户体会。像这个功用,HBase也无法满意。
终究为了习惯HBase体系的查询特色,对事务做了折中,只保存部分KV查询的事务,其他能够进步用户体会的各种查询事务被悉数砍掉了。
总结下来,咱们列出来了几个运用HBase进行查询事务规划时碰到的痛点:
-
无法满意恣意条件组合查询
-
不能高效支撑含糊查询
-
不支撑关键字分词查询
-
不能高效支撑多维度的排序/分页
-
不能对查询的成果集进行分类计算
云HBase全文索引服务 增强HBase检索才能
全文索引服务是为了增强HBase查询才能而规划,使得HBase除了强壮的KV才能外,愈加丰厚了它的在杂乱条件查询下的才能,详细笼统出来以下几个场景:
-
杂乱条件恣意查询
-
多维度排序
-
杂乱条件分页
-
分词关键字查询
-
匹配成果集分类计算
-
常用min/max/avg/sum等stats计算
云HBase全文索引服务运用简略,只需求DDL阶段树立索引,后续主动进行数据索引同步,架构如下:
和自建的差异
功用 |
云HBase启用全文索引 |
自建HBase+indexer+solr |
HBase |
简略rowkey查询 |
支撑 |
支撑 |
支撑 |
杂乱查询 |
支撑 |
支撑 |
不支撑 |
索引同步 |
支撑 |
支撑 |
不支撑 |
乱序同步 |
支撑 |
不支撑 |
——— |
强共同 |
支撑 |
不支撑 |
——— |
xml动态列 |
支撑 |
不支撑 |
——— |
别的,自建hbase+indexer+solr存在几个bug,导致许多用户反应的自建这种架构丢数据现象;云HBase对此进行了许多bugfix和改善。
怎么运用云HBase全文索引服务
敞开服务
树立索引
1. 下载索引办理客户端东西
wget http://public-hbase.oss-cn-hangzhou.aliyuncs.com/installpackage/solr-7.3.1-ali-1.0.tgz
tar zxvf solr-7.3.1-ali-1.0.tgz
2. 修正solr-7.3.1-ali-1.0/bin/solr.in.sh文件的ZK_HOST如下:
ZK_HOST=zk1:2181,zk2:2181,zk3:2181/solr
3. 创立HBase表,敞开replication同步机制
create 'solrdemo',{NAME='info', REPLICATION_SCOPE= '1'}
4. 创立Solr表democollection
第一步,修正并上传solrconfig.xml/schema,假如不需求修正,可运用demo默许config进行上传,如下:
solr-7.3.1-ali-1.0/bin/solr zk upconfig -d _democonfig -n democollection_config -z zk1:2181/solr
第二步,运用刚上传的装备创立democollection,如下:
curl "http://hostname:8983/solr/admin/collections?action=CREATEname=democollectionnumShards=1replicationFactor=1collection.configName=democollection_config"
其间hostname能够运用master3-1中缀的zk hostname进行替换。
5. 装备HBase solrdemo表到Solr democollection表的字段映射索引联系
?xml version="1.0"?indexer table="solrdemo"field name="name_s" value="info:q2" type="string"/field name="age_i" value="info:q3" type="int"/param name="update_version_l" value="true"//indexer
装备描绘了hbase表solrdemo的 info:q2 info:3 别离映射成solr democollection里边的name_s和age_i 字段。并指定以string解析info:q2 列保存到name_s字段中,以int解析info:q3 保存到age_i中。
其间solr collection的name_s、age_i是何种类型,是依据solr collection的装备觉得,默许选用动态类型揣度,即依据collection字段的姓名后缀判别类型进行存储。
常见类型_i、_s、_l、_b、_f、_d别离对应int/string/long/boolean/float/double。当然,用户也能够直接指定字段类型。最终一个update_version_l为固定写法,保存document等级的最新更新时刻。
第二步,运用东西将 index_conf.xml 设置相关hbase表solrdemo和solr表democollection的索引映射联系,指令如下:
solr-7.3.1-ali-1.0/bin/solr-indexer add \
-n demoindex \ -f indexer_conf.xml \
-c democollection
到此,咱们就完成了索引的联系映射,随后正常刺进hbase即可,就不需求关怀索引同步,它会主动同步hbase solrdemo表的对应字段到solr democollection表的对应字段中。如上例映射如下:
其间,HBase表的rowkey映射到Solr表里边的id字段。
查询检索
查询较为简略,仍然彻底兼容开源HBase API和Solr API的操作,依据事务运用solr进行条件查询,成果会集,id字段便是一切契合条件的hbase rowkey,咱们只要这个id转换为rowkey,并运用HBase API读取归于这个行的原数据即可。流程图大致如下:
展望
-
索引办理更简略易用
-
SQL进口接入全文索引服务
-
全文引擎新一代更高效副本机制
-
除了异步索引,同步索引也会后续支撑
点击
即可
云数据库HBase
阿里巴巴数据库技能

解构实战干货