一种基于HBase的SQL查询方法及设备与流程

本发明涉及数据库查询,尤其涉及一种基于hbase的sql查询方法及设备。
背景技术:
1、现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。数据的增长急需数据库存储容量的扩充,现有的关系型数据库很难在硬件上满足数据疯狂增长的需要。apache hbase是一个高性能、分布式、面向列、可伸缩的开源分布式nosql数据库,它不同于一般的关系型数据库,是一个适合于非结构化数据存储的数据库。
2、hbase是非常有用的大数据存储,但是它的访问机制非常原始,只能通过客户端的api,map/reduce接口和交互的shell。sql访问hbase数据可通过map/reduce或者接口机制以及“本地sql”技术。但使用这两种技术存在以下两个问题:
3、1)资源占用大:
4、采用map/reduce或者接口机制进行数据访问的包括spark、hive、impala等系统。此类系统都需要大量的内存资源用以对数据进行分析、计算。而以phoenix为代表的“本地sql技术”则需要根据hbase中的数据提前构建数据视图,以响应各种查询要求。数据视图占用了大量的磁盘空间。整体而言,目前的sql on hbase都是重量级的系统,且需要额外的大量主机资源。
5、2)无法跨数据库
6、目前的sql on hbase基本上都是单库的数据分析,很少能在多个数据库中完成多表关联查询。需要进行跨库多表查询时,需要将数据完整的复制到一类数据库中,然后才可以进行关联查询。
技术实现思路
1、本发明提供了一种基于hbase的sql查询方法及设备,用以解决上述技术问题中的至少一个。
2、一方面,本发明提供了一种基于hbase的sql查询方法,所述方法包括:对sql语句进行sql解析,以获得所述sql语句对应的数据来源和查询条件;根据所述数据来源确定所述sql语句对应的查询类型;基于所述查询类型,通过所述查询条件对所述数据来源进行分解;对分解后的数据来源进行查询,以得到所述sql语句对应的查询数据。
3、在本发明的一种可能实现方式中,对sql语句进行sql解析,包括:解析所述sql语句以获得待查询的表以及对应表的查询条件;通过所述待查询的表构成所述数据来源。
4、在本发明的一种可能实现方式中,根据所述数据来源确定所述sql语句对应的查询类型,包括:若所述待查询的表均属于hbase数据库,则所述查询类型为hbase多表查询类型;若所述待查询的表属于hbase数据库和关系型数据库,则所述查询类型为跨数据库查询类型。
5、在本发明的一种可能实现方式中,若所述查询类型为hbase多表查询类型,所述方法还包括:根据所述查询条件将所述数据来源划分为明确条件表和非明确条件表;对所述明确条件表进行查询,得到第一查询结果;将所述第一查询结果应用到所述非明确条件表中,并对所述非明确条件表进行查询,得到第二查询结果;根据所述第一查询结果和所述第二查询结果,得到所述sql语句对应的查询数据。
6、在本发明的一种可能实现方式中,得到所述sql语句对应的查询数据,包括:将所述第一查询结果和所述第二查询结果合并成数据合集,并存储至本地文件中;利用所述sql语句对所述本地文件进行二次查询,得到所述查询数据。
7、在本发明的一种可能实现方式中,若所述查询类型为跨数据库查询类型,所述方法还包括:按照所属数据库对所述数据来源进行划分,得到单数据库的待查询表;通过所述查询条件,对属于关系型数据库的待查询表进行查询,得到第一查询结果;按照预设筛选规则对所述查询条件进行处理,并通过处理后的查询条件对属于hbase数据库的待查询表进行查询,得到第二查询结果;根据所述第一查询结果和所述第二查询结果,得到所述sql语句对应的查询数据。
8、在本发明的一种可能实现方式中,得到所述sql语句对应的查询数据,包括:将所述第一查询结果和所述第二查询结果合并成数据合集,并存储至本地文件中;利用所述sql语句对所述本地文件进行二次查询,得到所述查询数据。
9、在本发明的一种可能实现方式中,所述预设筛选条件包括:减少属于hbase数据库的待查询表的查询结果,和/或,减少属于hbase数据库的待查询表的查询范围。
10、在本发明的一种可能实现方式中,利用所述sql语句对所述数据来源进行查询时,所述方法还包括:若所述数据来源属于hbase数据库,则在查询前将所述sql语句解析为api查询语句。
11、另一方面,本发明还提供了一种基于hbase的sql查询设备,所述设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能够被所述至少一个处理器执行的指令,以使所述至少一个处理器能够执行对sql语句进行sql解析,以获得所述sql语句对应的数据来源和查询条件;根据所述数据来源确定所述sql语句对应的查询类型;基于所述查询类型,通过所述查询条件对所述数据来源进行分解;对分解后的数据来源进行查询,以得到所述sql语句对应的查询数据。
12、本发明提供的一种基于hbase的sql查询方法及设备,具有以下有益效果:
13、1)基本无额外资源占用,整个查询流程只有各表的中间结果集的文件落地占用了一部分资源,且此数据和最终结果数据相差不大,可以理解为最终结果的一个超集,除此之外再无其他资源的占用,实现了在保证查询结果的前提下,不增加额外的资源占用。
14、2)可以实现跨数据库查询,可以将多类数据库的表数据“拼接“在一起,且无需额外操作,实现和关系型数据库和hbase数据库的关联查询。
15、3)查询效率较高,每张表的查询都最大化的明确数据范围,以得到最精确的查询结果,从而减少二次查询的数据量,提高了整体的查询效率。
技术特征:
1.一种基于hbase的sql查询方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种基于hbase的sql查询方法,其特征在于,对sql语句进行sql解析,包括:
3.根据权利要求2所述的一种基于hbase的sql查询方法,其特征在于,根据所述数据来源确定所述sql语句对应的查询类型,包括:
4.根据权利要求1所述的一种基于hbase的sql查询方法,其特征在于,若所述查询类型为hbase多表查询类型,所述方法还包括:
5.根据权利要求4所述的一种基于hbase的sql查询方法,其特征在于,得到所述sql语句对应的查询数据,包括:
6.根据权利要求1所述的一种基于hbase的sql查询方法,其特征在于,若所述查询类型为跨数据库查询类型,所述方法还包括:
7.根据权利要求6所述的一种基于hbase的sql查询方法,其特征在于,得到所述sql语句对应的查询数据,包括:
8.根据权利要求6所述的一种基于hbase的sql查询方法,其特征在于,所述预设筛选条件包括:
9.根据权利要求1所述的一种基于hbase的sql查询方法,其特征在于,利用所述sql语句对所述数据来源进行查询时,所述方法还包括:
10.一种基于hbase的sql查询设备,其特征在于,所述设备包括:
技术总结
本发明公开了一种基于HBase的SQL查询方法及设备,用以解决如何在保证查询效率的情况下最大化的减少额外资源的占用的技术问题。方法包括:对SQL语句进行SQL解析,以获得所述SQL语句对应的数据来源和查询条件;根据所述数据来源确定所述SQL语句对应的查询类型;基于所述查询类型,通过所述查询条件对所述数据来源进行分解;对分解后的数据来源进行查询,以得到所述SQL语句对应的查询数据。本发明通过上述方案,在实现SQL on HBase功能的同时,最大限度的节约了资源的使用量,同时支撑多类数据库的关联查询功能,例如可以实现Oracle+HBase、MySQL+HBase的关联查询。
技术研发人员:邢剑,张惠潼,房爱印,尹曦萌,牛月华,韩永利
受保护的技术使用者:山东浪潮智水数字科技有限公司
技术研发日:
技术公布日:2024/11/18
技术研发人员:邢剑,张惠潼,房爱印,尹曦萌,牛月华,韩永利
技术所有人:山东浪潮智水数字科技有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
