标签:https 身份证 授权 主键 取数 提高 如何 search 干货
在自己5年的开发生涯中时常在想crud对开发水平的提升真的有用吗?答案当然是没用的。通过自身的经历告诉大家唯有提高架构思想,完善问题解决方案才有提升的可能。在此就不再啰嗦了直接上干货。
场景描述:有这样一张关系型数据表包括身份证,姓名,年龄,手机号,家庭住址(数据量太大普通关系型数据库已无法支撑)。需要使用ETL把数据加工到hbase并通过姓名或者年龄在非关系型数据库中查询所有数据。
一. hbase是一分布式的面向列的开源数据库,只有三种查询方式(hbase的简介与特点就不在这累述了)
根据业务场景首先我们会想到通过hbase全表搜索的方式来获取数据,当然在非实时的需求下没什么大问题,如果要求在几秒内返回数据呢?问题来了吧!在此就可引入二级索引的解决方案,在实现具体方案之前让我们来看看另外一个工具,那就是ES(elasticsearch)搜索引擎。
二.Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力(Elasticsearch的简介与特点在此也不在这累述了,百度一抓一大把)。在此我们主要使用它的搜索功能,能在大量数据的环境下以秒级响应返回。
说了这么多让我们来看看具体怎么做吧,首先我们先把身份证号加上戳MD5后作为hbase的主键(加上时间戳是考虑到用户改名的情况),其次我们把需要参与搜索的字段以及主键一并存入es的索引中(当然这些步骤都可以通过etl的方式实现)。最后让我们来看看怎么快速获取到数据,第一步通过es查询到主键列表,第二步通过主键列表一并获取记录(需注意不能多次循环的方式到hbase获取记录否则一定达不到秒级返回的效果)。
如何避免hbase条件查询全表扫描问题(hbase二级索引解决方案)
标签:https 身份证 授权 主键 取数 提高 如何 search 干货
原文地址:https://www.cnblogs.com/woxinhuanxi/p/14878751.html