码迷,mamicode.com
首页 > 其他好文 > 详细

如何避免hbase条件查询全表扫描问题(hbase二级索引解决方案)

时间:2021-06-13 10:32:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:https   身份证   授权   主键   取数   提高   如何   search   干货   

在自己5年的开发生涯中时常在想crud对开发水平的提升真的有用吗?答案当然是没用的。通过自身的经历告诉大家唯有提高架构思想,完善问题解决方案才有提升的可能。在此就不再啰嗦了直接上干货。

场景描述:有这样一张关系型数据表包括身份证,姓名,年龄,手机号,家庭住址(数据量太大普通关系型数据库已无法支撑)。需要使用ETL把数据加工到hbase并通过姓名或者年龄在非关系型数据库中查询所有数据。

一. hbase是一分布式的面向列的开源数据库,只有三种查询方式(hbase的简介与特点就不在这累述了)

  1. 单个row key 访问
  2. 通过row key 的范围查询
  3. 全表扫描

根据业务场景首先我们会想到通过hbase全表搜索的方式来获取数据,当然在非实时的需求下没什么大问题,如果要求在几秒内返回数据呢?问题来了吧!在此就可引入二级索引的解决方案,在实现具体方案之前让我们来看看另外一个工具,那就是ES(elasticsearch)搜索引擎。

二.Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力(Elasticsearch的简介与特点在此也不在这累述了,百度一抓一大把)。在此我们主要使用它的搜索功能,能在大量数据的环境下以秒级响应返回。

说了这么多让我们来看看具体怎么做吧,首先我们先把身份证号加上戳MD5后作为hbase的主键(加上时间戳是考虑到用户改名的情况),其次我们把需要参与搜索的字段以及主键一并存入es的索引中(当然这些步骤都可以通过etl的方式实现)。最后让我们来看看怎么快速获取到数据,第一步通过es查询到主键列表,第二步通过主键列表一并获取记录(需注意不能多次循环的方式到hbase获取记录否则一定达不到秒级返回的效果)。


作者:我心欢喜
链接:https://juejin.cn/post/6972807474470453255
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如何避免hbase条件查询全表扫描问题(hbase二级索引解决方案)

标签:https   身份证   授权   主键   取数   提高   如何   search   干货   

原文地址:https://www.cnblogs.com/woxinhuanxi/p/14878751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!