CN108009296B - 一种基于Hbase的SQL查询方法、系统及相关装置 - Google Patents

一种基于Hbase的SQL查询方法、系统及相关装置 Download PDF

Info

Publication number
CN108009296B
CN108009296B CN201711446320.XA CN201711446320A CN108009296B CN 108009296 B CN108009296 B CN 108009296B CN 201711446320 A CN201711446320 A CN 201711446320A CN 108009296 B CN108009296 B CN 108009296B
Authority
CN
China
Prior art keywords
sql
hbase
elasticissearch
command
target data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711446320.XA
Other languages
English (en)
Other versions
CN108009296A (zh
Inventor
高维国
冯宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongguancun Kejin Technology Co Ltd
Original Assignee
Beijing Zhongguancun Kejin Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Zhongguancun Kejin Technology Co Ltd filed Critical Beijing Zhongguancun Kejin Technology Co Ltd
Priority to CN201711446320.XA priority Critical patent/CN108009296B/zh
Publication of CN108009296A publication Critical patent/CN108009296A/zh
Application granted granted Critical
Publication of CN108009296B publication Critical patent/CN108009296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Abstract

本申请公开了一种基于Hbase的SQL查询方法,该SQL查询方法将原SQL命令根据包含的SQL子句内容拆分出Elasticsearch SQL和/或Hbase SQL,前者可以利用更强大的、适用性更强的Elasticsearch搜索工具实现在Hbase数据库上进行索引查询,后者则可以直接根据包含的Rowkey信息查询到目标数据,无需使用协处理器和自定义过滤器,实现步骤更加简便,且不依赖于Hbase数据库自身的API,以一种更简单、速度更快、成本更低的方式实现了SQL on NoSQL。本申请还同时公开了一种基于Hbase的SQL查询系统、装置及计算机可读存储介质,具有上述有益效果。

Description

一种基于Hbase的SQL查询方法、系统及相关装置
技术领域
本申请涉及NoSQL数据库技术领域,特别涉及一种基于Hbase的SQL查询方法、系统、装置及计算机可读存储介质。
背景技术
海量数据的存储和查询是近年来业界的研究热点之一。传统的关系数据库已经受到可扩展性和处理性能的限制逐渐无法满足当今的要求,新兴的非关系型数据库—NoSQL(Not Only SQL,不仅仅是SQL)数据库由于其具有良好的可扩展性、可以处理超大量的数据的特点而进入了人们的视野。
Hbase作为NoSQL数据库中最具代表性一员而被广泛使用,Hbase是一种基于Key—Value的键值对数据库,其数据寻找方式是在确定Key时,能够根据Key—Value之间存在的唯一对应关系寻找到相应的Value,却不支持广泛应用在关系型数据库中的SQL命令查询。SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作,不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,同时SQL支持嵌套,这使它具有极大的灵活性和强大的功能。相比传统关系型数据具有较大优势的NoSQL数据库却无法支持SQL进行数据查询,无疑大大限制了其使用性能的潜力和适用场景。
现有技术通常通过使用协处理器和自定义过滤器的搭配基于Hbase数据库本身的API(Application Programming Interface,应用程序编程接口)最终实现SQL on NoSQL(在NoSQL数据库中实现SQL查询),但是各部分搭配起来实施步骤十分复杂,同时由于Hbase数据库的API版本会经常更迭以支持更多功能,因此在每次版本更迭后还需要频繁更新,实际使用效果不好。
所以,如何克服现有SQL on NoSQL方案存在的各项技术缺陷是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种基于Hbase的SQL查询方法,将原SQL命令根据包含的SQL子句内容拆分出Elasticsearch SQL和/或Hbase SQL,前者可以利用更强大的、适用性更强的Elasticsearch搜索工具实现在Hbase数据库上进行索引查询,后者则可以直接根据包含的Rowkey信息查询到目标数据,无需使用协处理器和自定义过滤器,实现步骤更加简便,且不依赖于Hbase数据库自身的API,以一种更简单、速度更快、成本更低的方式实现了SQL onNoSQL。
本申请的另一目的在于提供了一种基于Hbase的SQL查询系统、装置及计算机可读存储介质。
为实现上述目的,本申请提供一种基于Hbase的SQL查询方法,该SQL查询方法包括:
将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL;
当拆分得到所述Elasticsearch SQL时,将所述Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;
利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据;其中,所述Elasticsearch索引数据库基于Hbase数据构建得到;
当拆分得到所述Hbase SQL时,根据所述Hbase SQL中携带的Rowkey信息在所述Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回所述第二目标数据。
可选的,将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL,包括:
判断所述SQL命令中包含的各SQL子句能否拼接得到所述Elasticsearch SQL和/或所述Hbase SQL;
当各所述SQL子句满足所述Elasticsearch SQL的拼接条件时,拼接满足所述Elasticsearch SQL的拼接条件的SQL子句,得到所述Elasticsearch SQL;
当各所述SQL子句满足所述Hbase SQL的拼接条件时,拼接满足所述Hbase SQL的拼接条件的SQL子句,得到所述Hbase SQL。
可选的,该SQL查询方法还包括:
当各所述SQL子句不满足所述Elasticsearch SQL的拼接条件或所述Hbase SQL的拼接条件时,通过第三预设路径发送SQL命令错误警报。
可选的,在通过第一预设路径返回所述第一目标数据之前,还包括:
获取所述第一目标数据的数据类型,并根据所述数据类型对应的数据封装方式对所述第一目标数据进行封装。
为实现上述目的,本申请还提供了一种基于Hbase的SQL查询系统,该SQL查询系统包括:
SQL命令拆分单元,用于将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL;
Elasticsearch SQL语法转换单元,用于在拆分得到所述Elasticsearch SQL时,将所述Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;
Elasticsearch命令查询单元,用于利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据;其中,所述Elasticsearch索引数据库基于Hbase数据构建得到;
Hbase SQL查询单元,用于在拆分得到所述Hbase SQL时,根据所述Hbase SQL中携带的Rowkey信息在所述Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回所述第二目标数据。
可选的,所述SQL命令拆分单元包括:
SQL子句内容判断子单元,用于判断所述SQL命令中包含的各SQL子句能够拼接得到所述Elasticsearch SQL和/或所述Hbase SQL;
第一拼接子单元,用于在各所述SQL子句满足所述Elasticsearch SQL的拼接条件时,拼接满足所述Elasticsearch SQL的拼接条件的SQL子句,得到所述ElasticsearchSQL;
第二拼接子单元,用于在各所述SQL子句满足所述Hbase SQL的拼接条件时,拼接满足所述Hbase SQL的拼接条件的SQL子句,得到所述Hbase SQL。
可选的,该SQL查询系统还包括:
错误警告发送单元,用于在各所述SQL子句不满足所述Elasticsearch SQL的拼接条件或所述Hbase SQL的拼接条件时,通过第三预设路径发送SQL命令错误警报。
可选的,该SQL查询系统还包括:
封装单元,用于获取所述第一目标数据的数据类型,并根据所述数据类型对应的数据封装方式对所述第一目标数据进行封装。
为实现上述目的,本申请还提供了一种基于Hbase的SQL查询装置,该SQL查询装置包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述内容所描述的基于Hbase的SQL查询方法的步骤。
为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内容所描述的基于Hbase的SQL查询方法的步骤。
本申请所提供的一种基于Hbase的SQL查询方法:当拆分得到所述ElasticsearchSQL时,将所述Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据;当拆分得到所述Hbase SQL时,根据所述Hbase SQL中携带的Rowkey信息在所述Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回所述第二目标数据。
显然,本申请所提供的技术方案,将原SQL命令根据包含的SQL子句内容拆分出Elasticsearch SQL和/或Hbase SQL,前者可以利用更强大的、适用性更强的Elasticsearch搜索工具实现在Hbase数据库上进行索引查询,后者则可以直接根据包含的Rowkey信息查询到目标数据,无需使用协处理器和自定义过滤器,实现步骤更加简便,且不依赖于Hbase数据库自身的API,以一种更简单、速度更快、成本更低的方式实现了SQL onNoSQL。本申请同时还提供了一种基于Hbase的SQL查询系统、装置及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种基于Hbase的SQL查询方法的流程图;
图2为本申请实施例所提供的另一种基于Hbase的SQL查询方法的流程图;
图3为本申请实施例所提供的一种基于Hbase的SQL查询系统的结构框图。
具体实施方式
本申请的核心是提供一种基于Hbase的SQL查询方法、系统、装置及计算机可读存储介质,将原SQL命令根据包含的SQL子句内容拆分出Elasticsearch SQL和/或Hbase SQL,前者可以利用更强大的、适用性更强的Elasticsearch搜索工具实现在Hbase数据库上进行索引查询,后者则可以直接根据包含的Rowkey信息查询到目标数据,无需使用协处理器和自定义过滤器,实现步骤更加简便,且不依赖于Hbase数据库自身的API,以一种更简单、速度更快、成本更低的方式实现了SQL on NoSQL。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
以下结合图1,图1为本申请实施例所提供的一种基于Hbase的SQL查询方法的流程图。
其具体包括以下步骤:
S101:将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL;
本步骤旨在将原SQL命令按其中包含的各SQL子句类型进行拆分处理,以得到Elasticsearch SQL和/或Hbase SQL。因为每个SQL命令都是有很多SQL子句组成的,这些子句中的部分可能会符合Elasticsearch SQL的拼接条件,也可能会符合Hbase SQL的拼接条件,因此当这些子句符合哪个的拼接条件时,就可以将这些子句按照对应的拼接规则拼接成相应的Elasticsearch SQL和/或Hbase SQL。
具体的,会出现三种情况:第一种,只符合Elasticsearch SQL的拼接条件,拼接得到Elasticsearch SQL;第二种,只符合Hbase SQL的拼接条件,拼接得到Hbase SQL;第三种,不仅符合Elasticsearch SQL的拼接条件也符合Hbase SQL的拼接条件,可以同时得到Elasticsearch SQL和Hbase SQL。当然,也会出现原SQL命令中包含的SQL子句不满足Elasticsearch SQL的拼接条件或Hbase SQL的拼接条件的情况,此时就需要返回SQL命令错误警报,以提醒相关人员检查原SQL命令是否输入错误等。
S102:当拆分得到Hbase SQL时,根据Hbase SQL中携带的Rowkey信息在Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回第二目标数据;
本步骤建立在S101的拆分结果为能够拆分出Hbase SQL的基础上,由于Hbase SQL的一个拼接条件就是原SQL命令包含的SQL子句中存在Rowkey信息(主键信息,用于唯一确定对应的数据),因此本步骤就可以根据Hbase SQL中携带的Rowkey信息在Hbase数据库中查得对应的目标数据,并返回该目标数据,实现SQL on NoSQL。
S103:当拆分得到Elasticsearch SQL时,将Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;
本步骤建立在S101的拆分结果为能够拆分出Elasticsearch SQL的基础上,旨在将拼接得到的Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令。
Elasticsearch是一个建立在全文搜索引擎Apache Lucene(TM)基础上的搜索引擎。当然Elasticsearch并不仅仅是Lucene(一个开源的全文数据搜索工具包)那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索;实时分析的分布式搜索引擎;可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
Elasticsearch会依靠Hbase数据库中数据的所有字段建立得到一个Elasticsearch索引数据库,在该Elasticsearch索引数据库中可以直接使用符合Elasticsearch语法规则的Elasticsearch命令查得相应的结果数据,也就无需依靠Rowkey信息来在Hbase数据库进行数据查询。
S104:利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据。
在S103的基础上,本步骤旨在利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据。Elasticsearch的构成和工作特性在S103已经介绍过,基于Elasticsearch全文检索并建立索引的特性,本步骤通过直接使用转换得到的Elasticsearch命令在建立的Elasticsearch索引数据库中实现索引目标数据的目的,最终将该目标数据返回实现SQL on NoSQL。
进一步的,在从原SQL命令中包含的SQL子句中不仅能够拆分得到ElasticsearchSQL,还能够拆分得到Hbase SQL时,还需要利用该第一目标数据确定Hbase数据库中的Rowkey信息,以在确定Rowkey信息的前提下在Hbase数据库中进行查询动作,以最终实现查得目标数据的目的。
上述各步骤提及的第一预设路径、第二预设路径以及第三预设路径分别用于实现传输错误警报信息和返回相应的目标数据,具体表现方式多种多样,可以基于某种数据传输协议实现,也可以基于某个目标数据传输地址实现等等,可根据实际情况灵活选择,此处并不做具体限定。
进一步的,为缩小数据传输体积、便于进行备份等考虑,可以在得到目标数据后、返回目标数据前进行相应的封装操作,同时也可以在封装过程中增加识别标识,以便接收端根据该识别标识识别出时基于哪个SQL最终实现了数据查询,具体实现方式有很多,可根据实际情况下各种影响因素灵活选择,此处并不做具体限定。
基于上述技术方案,本申请实施例提供的一种基于Hbase的SQL查询方法,将原SQL命令根据包含的SQL子句内容拆分出Elasticsearch SQL和/或Hbase SQL,前者可以利用更强大的、适用性更强的Elasticsearch搜索工具实现在Hbase数据库上进行索引查询,后者则可以直接根据包含的Rowkey信息查询到目标数据,无需使用协处理器和自定义过滤器,实现步骤更加简便,且不依赖于Hbase数据库自身的API,以一种更简单、速度更快、成本更低的方式实现了SQL on NoSQL。
以下结合图2,图2为本申请实施例所提供的另一种基于Hbase的SQL查询方法的流程图。
本步骤旨在针对实施例一提供一种具体的实现方式,具体包括以下步骤:
S201:判断SQL命令中包含的各SQL子句能否拼接得到Elasticsearch SQL和/或Hbase SQL;
S202:当各SQL子句满足Elasticsearch SQL的拼接条件时,拼接满足Elasticsearch SQL的拼接条件的SQL子句,得到Elasticsearch SQL;
S203:利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据;
S204:获取第一目标数据的数据类型,并根据数据类型对应的数据封装方式对第一目标数据进行封装;
S205:通过第一预设路径返回封装得到的数据包;
S206:当各SQL子句满足Hbase SQL的拼接条件时,拼接满足Hbase SQL的拼接条件的SQL子句,得到Hbase SQL;
S207:根据Hbase SQL中携带的Rowkey信息在Hbase数据库中查得对应的第二目标数据;
S208:获取第二目标数据的数据类型,并根据数据类型对应的数据封装方式对第二目标数据进行封装;
S209:通过第二预设路径返回封装得到的数据包;
S210:当各SQL子句不满足Elasticsearch SQL的拼接条件或Hbase SQL的拼接条件时,通过第三预设路径发送SQL命令错误警报。
需要说明的是,与实施例一中S102和S103以及基于S103的S104不存在先后顺序一样,本实施例中的三种情况都是并列的,只是在步骤编号时存在先后顺序,实际判断和执行过程中都是并列的。除上述三种情况外,当从原SQL命令中包含的SQL子句中不仅能够拆分得到Elasticsearch SQL,还能够拆分得到Hbase SQL时,还需要利用该第一目标数据确定Hbase数据库中的Rowkey信息,以在确定Rowkey信息的前提下在Hbase数据库中进行查询动作,以最终实现查得目标数据的目的。
基于上述技术方案,本申请实施例提供的一种基于Hbase的SQL查询方法,将原SQL命令根据包含的SQL子句内容拆分出Elasticsearch SQL和/或Hbase SQL,前者可以利用更强大的、适用性更强的Elasticsearch搜索工具实现在Hbase数据库上进行索引查询,后者则可以直接根据包含的Rowkey信息查询到目标数据,无需使用协处理器和自定义过滤器,实现步骤更加简便,且不依赖于Hbase数据库自身的API,以一种更简单、速度更快、成本更低的方式实现了SQL on NoSQL。
因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
下面请参见图3,图3为本申请实施例所提供的一种基于Hbase的SQL查询系统的结构框图。
该SQL查询系统可以包括:
SQL命令拆分单元100,用于将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL;
Elasticsearch SQL语法转换单元200,用于在拆分得到Elasticsearch SQL时,将Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;
Elasticsearch命令查询单元210,用于利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据;
Hbase SQL查询单元300,用于在拆分得到Hbase SQL时,根据Hbase SQL中携带的Rowkey信息在Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回第二目标数据。
可选的,SQL命令拆分单元100包括:
SQL子句内容判断子单元,用于判断SQL命令中包含的各SQL子句能够拼接得到Elasticsearch SQL和/或Hbase SQL;
第一拼接子单元,用于在各SQL子句满足Elasticsearch SQL的拼接条件时,拼接满足Elasticsearch SQL的拼接条件的SQL子句,得到Elasticsearch SQL;
第二拼接子单元,用于在各SQL子句满足Hbase SQL的拼接条件时,拼接满足HbaseSQL的拼接条件的SQL子句,得到Hbase SQL。
可选的,该SQL查询系统还包括:
错误警告发送单元,用于在各SQL子句不满足Elasticsearch SQL的拼接条件或Hbase SQL的拼接条件时,通过第三预设路径发送SQL命令错误警报。
可选的,该SQL查询系统还包括:
封装单元,用于获取第一目标数据的数据类型,并根据数据类型对应的数据封装方式对第一目标数据进行封装。
以上各单元可以应用于以下的一个具体的实际例子中:
本实施例根据从原SQL命令中拆分出的Elasticsearch SQL和/或Hbase SQL的工作特性,将Elasticsearch SQL的后续过程容纳在索引适配器中,将Hbase SQL的后续过程容纳在非索引适配器。其中,索引适配器通过将Elasticsearch SQL转换成Elasticsearch语法实现索引查询,非索引适配器则从Hbase SQL中根据包含的Rowkey信息查询出相应的结果,最终将索引适配器和非索引适配器进行封装处理。使用者可以直接使用原SQL命令在Hbase数据库中进行查询,最终实现SQL on NoSQL,加速Hbase查询速度和提升Hbase数据库使用者体验。
本实施例将整个实现过程分别原SQL命令分发、元数据管理、Elasticsearch适配器,Hbase适配器,下面将展开进行阐述:
原SQL命令分发模块:根据元数据,将原SQL命令自动拆分成elasticsearch部分sql和hbase部分sql,并将两部分流程串联,并封装返回结果。具体步骤如下:
第一步:获取元数据,解析schema(数据库对象的集合,包含有该对象下的所有表结构);
第二步:SQL解析,获取table、select列、where列、agg列、distinct列、order列、limit以及offset部分(上述内容均为schema表结构的组成部分);
第三步:通过schema判断where列、agg列、distinct列、order列是否已经存在于Elasticsearch适配器中;
第四步:若不存在,则返回SQL异常;
第五步:判断SQL类型是否是distinct或者聚合查询(如果是意味着一需要输出一个数据,故被称为聚合查询;如何不是,则意味着会输出多个数据);
情况一(1):如果是distinct或者聚合查询,通过schema判断select列上所有数据均已存在于Elasticsearch适配器中,如果不存在则报错,如果存在则拼接得到Elasticsearch SQL,并调用Elasticsearch适配器;
情况二(1):如果不是distinct或者聚合查询,通过schema获取索引列和非索引列,拼接得到Elasticsearch SQL;
情况二(2):调用Elasticsearch适配器,根据拼接得到的Elasticsearch SQL确定相应的Rowkey列表;
情况二(3)/情况一(2):拼接得到Hbase SQL,调用Hbase适配器。
元数据管理模块:将表、索引、列三者之间的关系维护到Redis(一个键值对数据库)中,索引表示存在于Elasticsearch中的列;
Elasticsearch适配器:
异常检查步骤:获取表的schema;检查Elasticsearch SQL的语法是否正确;检查Elasticsearch SQL的表及其索引列是否存在;
异常返回:如果Elasticsearch SQL语法不正确或者Elasticsearch SQL的表和索引列不存在,返回Elasticsearch SQL异常;
正常转换:将Elasticsearch SQL转换成Elasticsearch语法;
封装判断:判断Elasticsearch SQL类型,对利用Elasticsearch命令得到的数据结果进行封装处理:
情况一:正常select直接返回SearchHit迭代器进行转换;
情况二:聚合select取出返回的Aggregation迭代器进行转换;
情况三:去重distinct获取InternalMappedTerms迭代器进行转换;
数据返回:根据不同Elasticsearch SQL类型,进行结果处理并返回给原SQL命令分发模块。
Hbase适配器:
第一步:从Hbase SQL提取得到相应的Rowkey列表;
第二步:根据该Rowkey列表获取相应的查询列;
第三步:调用Hbase的filter(过滤器)API查询出Hbase的列数据;
第四步:解析Hbase的查询结果,并进行转换;
第五步:将Hbase的转换结果封装成迭代器;
第六步:进行结果处理,并返回给原SQL命令分发模块。
需要说明的是,在进行上述步骤之前,还需要事先提供原SQL命令利用schema进行校验;需要事先对需要处理的SQL子句进行适配处理。
基于上述实施例内容,本申请使用了具有更专业和更高效索引外置技术的Elasticsearch取代现有技术中采用的Hbase协处理和自定义过滤器,减轻了对Hbase数据库的压力,同时提升了数据的实时性和吞吐量,可以定制化开发SQL命令以满足更多的业务需求。
基于上述实施例,本申请还提供了一种基于Hbase的SQL查询装置,可以包括存储器和处理器,其中,该存储器中存有计算机程序,该处理器调用该存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然该SQL查询装置还可以包括各种必要的网络接口、电源以及其它零部件等。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种基于Hbase的SQL查询方法,其特征在于,包括:
将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或HbaseSQL;
当拆分得到所述Elasticsearch SQL时,将所述Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;
利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据;其中,所述Elasticsearch索引数据库基于Hbase数据的所有字段,按照所述Elasticsearch语法规则构建得到;
当拆分得到所述Hbase SQL时,根据所述Hbase SQL中携带的Rowkey信息在所述Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回所述第二目标数据。
2.根据权利要求1所述的SQL查询方法,其特征在于,将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL,包括:
判断所述SQL命令中包含的各SQL子句能否拼接得到所述Elasticsearch SQL和/或所述Hbase SQL;
当各所述SQL子句满足所述Elasticsearch SQL的拼接条件时,拼接满足所述Elasticsearch SQL的拼接条件的SQL子句,得到所述Elasticsearch SQL;
当各所述SQL子句满足所述Hbase SQL的拼接条件时,拼接满足所述Hbase SQL的拼接条件的SQL子句,得到所述Hbase SQL。
3.根据权利要求1或2所述的SQL查询方法,其特征在于,还包括:
当各所述SQL子句不满足所述Elasticsearch SQL的拼接条件或所述Hbase SQL的拼接条件时,通过第三预设路径发送SQL命令错误警报。
4.根据权利要求3所述的SQL查询方法,其特征在于,在通过第一预设路径返回所述第一目标数据之前,还包括:
获取所述第一目标数据的数据类型,并根据所述数据类型对应的数据封装方式对所述第一目标数据进行封装。
5.一种基于Hbase的SQL查询系统,其特征在于,包括:
SQL命令拆分单元,用于将SQL命令按包含的SQL子句类型进行拆分处理,得到Elasticsearch SQL和/或Hbase SQL;
Elasticsearch SQL语法转换单元,用于在拆分得到所述Elasticsearch SQL时,将所述Elasticsearch SQL转换为符合Elasticsearch语法规则的Elasticsearch命令;
Elasticsearch命令查询单元,用于利用Elasticsearch命令在Elasticsearch索引数据库中查得对应的第一目标数据,且通过第一预设路径返回第一目标数据;其中,所述Elasticsearch索引数据库基于Hbase数据的所有字段,按照Elasticsearch语法规则构建得到;
Hbase SQL查询单元,用于在拆分得到所述Hbase SQL时,根据所述Hbase SQL中携带的Rowkey信息在所述Hbase数据库中查得对应的第二目标数据,并通过第二预设路径返回所述第二目标数据。
6.根据权利要求5所述的SQL查询系统,其特征在于,所述SQL命令拆分单元包括:
SQL子句内容判断子单元,用于判断所述SQL命令中包含的各SQL子句能够拼接得到所述Elasticsearch SQL和/或所述Hbase SQL;
第一拼接子单元,用于在各所述SQL子句满足所述Elasticsearch SQL的拼接条件时,拼接满足所述Elasticsearch SQL的拼接条件的SQL子句,得到所述Elasticsearch SQL;
第二拼接子单元,用于在各所述SQL子句满足所述Hbase SQL的拼接条件时,拼接满足所述Hbase SQL的拼接条件的SQL子句,得到所述Hbase SQL。
7.根据权利要求5或6所述的SQL查询系统,其特征在于,还包括:
错误警告发送单元,用于在各所述SQL子句不满足所述Elasticsearch SQL的拼接条件或所述Hbase SQL的拼接条件时,通过第三预设路径发送SQL命令错误警报。
8.根据权利要求7所述的SQL查询系统,其特征在于,还包括:
封装单元,用于获取所述第一目标数据的数据类型,并根据所述数据类型对应的数据封装方式对所述第一目标数据进行封装。
9.一种基于Hbase的SQL查询装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的基于Hbase的SQL查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的基于Hbase的SQL查询方法的步骤。
CN201711446320.XA 2017-12-27 2017-12-27 一种基于Hbase的SQL查询方法、系统及相关装置 Active CN108009296B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711446320.XA CN108009296B (zh) 2017-12-27 2017-12-27 一种基于Hbase的SQL查询方法、系统及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711446320.XA CN108009296B (zh) 2017-12-27 2017-12-27 一种基于Hbase的SQL查询方法、系统及相关装置

Publications (2)

Publication Number Publication Date
CN108009296A CN108009296A (zh) 2018-05-08
CN108009296B true CN108009296B (zh) 2020-10-16

Family

ID=62061884

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711446320.XA Active CN108009296B (zh) 2017-12-27 2017-12-27 一种基于Hbase的SQL查询方法、系统及相关装置

Country Status (1)

Country Link
CN (1) CN108009296B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325077A (zh) * 2018-08-03 2019-02-12 北京马上慧科技术有限公司 一种基于canal和kafka实现实时数仓的系统
CN110502607A (zh) * 2019-06-26 2019-11-26 中电万维信息技术有限责任公司 一种电子病历系统、查询电子病历的方法及服务器
CN111046060B (zh) * 2019-12-11 2023-04-25 杭州安恒信息技术股份有限公司 一种基于Elasticsearch的数据检索方法、装置、设备、介质
CN115516442A (zh) * 2020-04-27 2022-12-23 樊文飞 在有限资源下查询大数据
WO2022055588A1 (en) * 2020-09-08 2022-03-17 Medtronic, Inc. Imaging discovery utility for augmenting clinical image management
CN113392123A (zh) * 2021-06-10 2021-09-14 中国光大银行股份有限公司 一种sql语句处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649426A (zh) * 2016-08-05 2017-05-10 浪潮软件股份有限公司 一种数据分析方法和数据分析平台以及服务器
CN106934062A (zh) * 2017-03-28 2017-07-07 广东工业大学 一种查询elasticsearch的实现方法及系统
CN107122418A (zh) * 2017-03-31 2017-09-01 北京奇艺世纪科技有限公司 一种查询方法及装置
CN107133267A (zh) * 2017-04-01 2017-09-05 北京京东尚科信息技术有限公司 查询elasticsearch集群的方法、装置、电子设备和可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170206684A1 (en) * 2016-01-14 2017-07-20 Icharts, Inc. Intelligent container for analytic visualizations

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649426A (zh) * 2016-08-05 2017-05-10 浪潮软件股份有限公司 一种数据分析方法和数据分析平台以及服务器
CN106934062A (zh) * 2017-03-28 2017-07-07 广东工业大学 一种查询elasticsearch的实现方法及系统
CN107122418A (zh) * 2017-03-31 2017-09-01 北京奇艺世纪科技有限公司 一种查询方法及装置
CN107133267A (zh) * 2017-04-01 2017-09-05 北京京东尚科信息技术有限公司 查询elasticsearch集群的方法、装置、电子设备和可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
From relations to multi-dimensional maps: a SQL-to-HBase transformation methodology;Diego Serrano 等;《Proceeding CASCON "16 Proceedings of the 26th Annual International Conference on Computer Science and Software Engineering》;20161102;156-165 *
基于SQL的HBase查询的设计与实现;袁兆争 等;《计算机与现代化》;20170721(第7期);20-26,61 *

Also Published As

Publication number Publication date
CN108009296A (zh) 2018-05-08

Similar Documents

Publication Publication Date Title
CN108009296B (zh) 一种基于Hbase的SQL查询方法、系统及相关装置
CN109299102B (zh) 一种基于Elastcisearch的HBase二级索引系统及方法
CN109582691B (zh) 用于控制数据查询的方法和装置
US9104720B2 (en) Generation of technical description of report from functional description of report
CN109739867B (zh) 一种工业元数据管理方法及系统
CN109284323B (zh) 检测数据的管理方法及装置
US9753960B1 (en) System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria
CN104750795A (zh) 一种智能语义检索系统和方法
CN108958959B (zh) 检测hive数据表的方法和装置
CN111522927B (zh) 基于知识图谱的实体查询方法和装置
CN111241059B (zh) 一种基于数据库的数据库优化方法及装置
CN111368154B (zh) 指标信息确定方法及指标信息确定装置
CN109684402A (zh) 一种基于大数据平台元数据血缘关系实现方法
US10642897B2 (en) Distance in contextual network graph
CN104102701A (zh) 一种基于hive的历史数据存档与查询方法
CN106570095B (zh) 一种xml数据的操作方法及设备
CN110704432A (zh) 数据索引的建立方法和装置、可读存储介质、电子设备
CN108959294B (zh) 一种访问搜索引擎的方法和装置
CN116303628B (zh) 基于Elasticsearch的告警数据查询方法、系统及设备
US20160179857A1 (en) Database joins using uncertain criteria
CN103902651A (zh) 一种基于MongoDB的云端代码查询方法与装置
CN113326381A (zh) 基于动态本体的语义和知识图谱分析方法、平台及设备
CN107463618B (zh) 一种索引创建方法和装置
CN111078728A (zh) 一种数据库归档模式下跨库查询方法和装置
CN113934430A (zh) 数据检索分析方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant