基于多个数据库的数据查询方法及装置制造方法及图纸

技术编号:13502676 阅读:176 留言:0更新日期:2016-08-10 00:24
本发明专利技术实施例公开了一种基于多个数据库的数据查询方法及装置,该方法包括:解析用户发送的SQL语句,得到SQL语句中包括的关键表,SQL语句用于请求从多个数据库中查询用户需要的数据;对用户进行鉴权;若用户通过鉴权,确定每个关键表所在的数据库;分别从每个关键表所在的数据库中获取SQL语句请求的数据;合并获取的数据后发送给用户。可见,用户只需要提供用于查询数据的SQL语句,该方法就可以直接根据该SQL语句从多个数据库中查询用户需要的数据,无需用户依次从各个数据库中进行获取,相对于现有技术中用户需要多次请求才能够获取到需要的数据的方式,简化了用户操作步骤,提高了查询数据的效率。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种基于多个数据库的数据查询方法及装置
技术介绍
大数据(BigData)是指无法用现有的软件工具提取、存储、搜索、共享、分析和处理的海量的、复杂的数据集合,可以包括多个数据库,例如Hadoop、内存数据库、关系数据库等等。目前,一般采用数据共享平台或者数据开放平台对外开放超文本传送协议(Hypertexttransferprotocol,HTTP)应用程序编程接口(ApplicationProgrammingInterface,API),从而实现用户查询多个数据库中的数据。通常,每个API接口都对应特定参数,API接口接收到用户的请求后,根据该请求中携带的特定参数进行数据查询,将查询到的数据返回给用户,由于一个API只能提供一部分特定需求,若用户需要的数据存在于多个数据库中,就需要组合众多API接口联合实现数据查询。例如,公司的人力资源主管要查询某个员工的个人信息,个人信息包括工作简历、发表论文等等,若工作简历、发表论文等等信息保存在不同的数据库中,那么该人力资源主管只能分别通过这些数据库对应的API接口才能获取到该员工的个人信息。可见,若用户需要的数据存在于多个数据库中,用户需要多次请求才能够获取到需要的数据,用户的操作步骤非常繁琐,查询数据的效率也非常低。
技术实现思路
本专利技术实施例提供一种基于多个数据库的数据查询,用以解决现有技术中存在的用户的操作步骤非常繁琐,查询数据的效率也非常低的问题。根据本专利技术实施例例,提供一种基于多个数据库的数据查询方法,包括:解析用户发送的结构化查询语言SQL语句,得到所述SQL语句中包括的关键表,所述SQL语句用于请求从所述多个数据库中查询所述用户需要的数据;对所述用户进行鉴权;若所述用户通过鉴权,确定每个所述关键表所在的数据库;分别从每个所述关键表所在的数据库中获取所述SQL语句请求的数据;合并获取的数据后发送给所述用户。具体的,解析用户发送的SQL语句,得到所述SQL语句中包括的关键表,具体包括:提取所述SQL语句中包括的关键字;判断所述关键字的拼写以及所述关键字之间的逻辑关系是否正确;若所述关键字的拼写以及所述关键字之间的逻辑关系正确,则根据所述关键字和对应的关键元素建立所述SQL语句对应的语法树,获取所述语法树中的关键表。可选的,所述方法还包括:按照SQL语句的标准格式调整所述SQL语句;将调整后的所述SQL语句发送给所述用户。具体的,对所述用户进行鉴权,具体包括:获取用户与关键表的对应关系,若所述对应关系中对应保存有所述用户和每个所述关键表,则确定所述用户通过鉴权;或者,获取预先设置的白名单,若所述白名单中保存有所述用户,则确定所述用户通过鉴权。具体的,确定每个所述关键表所在的数据库,具体包括:获取预先保存的关键表描述信息;从所述关键表描述信息中获取每个所述关键表所在的数据库;分别从每个所述关键表所在的数据库中获取所述SQL语句请求的数据,具体包括:确定每个所述关键表所在的数据库的类型;将所述SQL语句翻译成每个所述关键表所在的数据库的类型对应的标准语句;使用翻译后的标准语句分别从对应的数据库中获取所述SQL语句请求的数据。具体的,合并获取的数据后发送给所述用户,具体包括:缓存获取的所述SQL语句请求的数据;采用流计算方式合并缓存的数据;将合并后的数据发送给所述用户。根据本专利技术实施例,还提供一种基于多个数据库的数据查询装置,包括:解析单元,用于解析用户发送的结构化查询语言SQL语句,得到所述SQL语句中包括的关键表,所述SQL语句用于请求从所述多个数据库中查询所述用户需要的数据;鉴权单元,用于对所述用户进行鉴权;确定单元,用于若所述用户通过鉴权,确定每个所述关键表所在的数据库;获取单元,用于分别从每个所述关键表所在的数据库中获取所述SQL语句请求的数据;发送单元,用于合并获取的数据后发送给所述用户。具体的,所述解析单元,具体用于:提取所述SQL语句中包括的关键字;判断所述关键字的拼写以及所述关键字之间的逻辑关系是否正确;若所述关键字的拼写以及所述关键字之间的逻辑关系正确,则根据所述关键字和对应的关键元素建立所述SQL语句对应的语法树,获取所述语法树中的关键表。具体的,所述鉴权单元,具体用于:获取用户与关键表的对应关系,若所述对应关系中对应保存有所述用户和每个所述关键表,则确定所述用户通过鉴权;或者,获取预先设置的白名单,若所述白名单中保存有所述用户,则确定所述用户通过鉴权。具体的,所述确定单元,具体用于:获取预先保存的关键表描述信息;从所述关键表描述信息中获取每个所述关键表所在的数据库;所述获取单元,具体用于:确定每个所述关键表所在的数据库的类型;将所述SQL语句翻译成每个所述关键表所在的数据库的类型对应的标准语句;使用翻译后的标准语句分别从对应的数据库中获取所述SQL语句请求的数据。本专利技术有益效果如下:本专利技术实施例提供的基于多个数据库的数据查询方法及装置,通过解析用户发送的SQL语句,得到SQL语句中包括的关键表,SQL语句用于请求从多个数据库中查询用户需要的数据;对用户进行鉴权;若用户通过鉴权,确定每个关键表所在的数据库;分别从每个关键表所在的数据库中获取SQL语句请求的数据;合并获取的数据后发送给用户。可见,用户只需要提供用于查询数据的SQL语句,该方法就可以直接根据该SQL语句从多个数据库中查询用户需要的数据,无需用户依次从各个数据库中进行获取,相对于现有技术中用户需要多次请求才能够获取到需要的数据的方式,简化了用户操作步骤,提高了查询数据的效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例一种基于多个数据库的数据查询方法的流程示意图;图2为本专利技术实施例一种得到SQL语句中包括的关键表的方法流程图;图3为本专利技术实施例一种基于多个数据库的数据查询装置的结构示意图;图4为本专利技术实施例另一种基于多个数据库的数据查询装置的结构示意图。具体实施方式针对现有技术中存在的用户的操作步骤非常繁琐,查询数据的效率也非常低的问题,本专利技术实施例提供一种基于多个数据库的数据查询方法,该方法的执行主体可以是服务器,<本文档来自技高网...

【技术保护点】
一种基于多个数据库的数据查询方法,其特征在于,包括:解析用户发送的结构化查询语言SQL语句,得到所述SQL语句中包括的关键表,所述SQL语句用于请求从所述多个数据库中查询所述用户需要的数据;对所述用户进行鉴权;若所述用户通过鉴权,确定每个所述关键表所在的数据库;分别从每个所述关键表所在的数据库中获取所述SQL语句请求的数据;合并获取的数据后发送给所述用户。

【技术特征摘要】
1.一种基于多个数据库的数据查询方法,其特征在于,包括:
解析用户发送的结构化查询语言SQL语句,得到所述SQL语句中包括的关键表,所述
SQL语句用于请求从所述多个数据库中查询所述用户需要的数据;
对所述用户进行鉴权;
若所述用户通过鉴权,确定每个所述关键表所在的数据库;
分别从每个所述关键表所在的数据库中获取所述SQL语句请求的数据;
合并获取的数据后发送给所述用户。
2.如权利要求1所述的方法,其特征在于,解析用户发送的SQL语句,得到所述SQL
语句中包括的关键表,具体包括:
提取所述SQL语句中包括的关键字;
判断所述关键字的拼写以及所述关键字之间的逻辑关系是否正确;
若所述关键字的拼写以及所述关键字之间的逻辑关系正确,则根据所述关键字和对应
的关键元素建立所述SQL语句对应的语法树,获取所述语法树中的关键表。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
按照SQL语句的标准格式调整所述SQL语句;
将调整后的所述SQL语句发送给所述用户。
4.如权利要求1所述的方法,其特征在于,对所述用户进行鉴权,具体包括:
获取用户与关键表的对应关系,若所述对应关系中对应保存有所述用户和每个所述关
键表,则确定所述用户通过鉴权;或者,
获取预先设置的白名单,若所述白名单中保存有所述用户,则确定所述用户通过鉴权。
5.如权利要求1所述的方法,其特征在于,确定每个所述关键表所在的数据库,具体
包括:
获取预先保存的关键表描述信息;
从所述关键表描述信息中获取每个所述关键表所在的数据库;
分别从每个所述关键表所在的数据库中获取所述SQL语句请求的数据,具体包括:
确定每个所述关键表所在的数据库的类型;
将所述SQL语句翻译成每个所述关键表所在的数据库的类型对应的标准语句;
使用翻译后的标准语句分别从对应的数据库中获取所述SQL语句请求的数据。
6...

【专利技术属性】
技术研发人员:李忠浩王庆磊张国波
申请(专利权)人:北京神州泰岳软件股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1