一种数据库查询方法及相关装置转让专利

申请号 : CN202110036828.2

文献号 : CN114764406B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴慧敏牛龙飞郑斌丁攀

申请人 : 中国联合网络通信集团有限公司

摘要 :

本申请提供一种数据库查询方法及相关装置。本申请提供的技术方案中,接收查询请求消息,所述查询请求消息采用REST风格;根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系;根据所述第一名称和所述第二名称获取所述待查询数据库的元数据;根据元数据、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系获取所述待查询表的索引;根据所述待查询表的索引获取目标查询数据。本申请提出的技术方案,增加了数据库的查询便捷度,降低用户的数据查询难度。

权利要求 :

1.一种数据库查询方法,其特征在于,包括:

接收查询请求消息,所述查询请求消息采用性状态传递REST风格;

根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系,所述第二组合元素由至少一个基本元素和所述至少一个基本元素的集合关系构成,所述第二组合元素中包含的基本元素的数量少于所述第一组合元素中包含的基本元素的数量,所述基本元素是指最小数据查询单元;

根据所述第一名称和所述第二名称获取所述待查询数据库的元数据,所述元数据包括所述待查询数据库的地址和所述待查询表的索引;

判断所述待查询表的索引中是否包含所述第一组合元素;

若所述待查询表的索引中包含所述第一组合元素,则根据所述地址读取所述待查询数据库的所述待查询表中索引值满足所述第一组合元素表示的查询条件的数据,得到所述第一组合元素对应的第一查询数据;

若所述待查询表的索引中不包含所述第一组合元素,则分别判断所述待查询表的索引中是否包含所述每个第二组合元素;

针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中包含所述任意一个第二组合元素时,根据所述地址读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素表示的查询条件的数据,得到所述任意一个第二组合元素对应的第二查询数据;

针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中不包含所述任意一个第二组合元素时,根据所述地址分别读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素中的每个基本元素对应的查询条件的数据,并根据所述任意一个第二组合元素中的基本元素之间的集合关系对所述读取的数据进行集合处理,得到所述任意一个第二组合元素对应的第二查询数据;

根据所述多个第二组合元素中的第二组合元素之间的集合关系、以及所述多个第二组合元素中每个第二组合元素对应的第二查询数据,确定所述第一组合元素对应的第一查询数据;

根据所述第一查询数据输出目标查询数据。

2.根据权利要求1所述的方法,其特征在于,所述REST风格满足如下字段格式要求:http://ip:port/query/{domain}/{tableName}?queryCondition其中,“http”表示所述查询请求消息为超文本传输协议http消息,“ip”表示所述查询请求消息的目标互联网协议地址,“port”表示所述查询请求消息的目标端口号,“query”表示所述查询请求消息为查询类型的消息,“domain”表示所述待查询数据库的名称,“tableName”表示所述查询表的名称,“queryCondition”表示包含查询条件的字符串。

3.根据权利要求1所述的方法,其特征在于,所述根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系,包括:对所述查询请求消息进行http解析,获取待查询数据库的第一名称、待查询表的第二名称和待查询条件;

通过词法语法分析器对所述待查询条件进行解析,获取所述第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系。

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述待查询数据库的索引的主键包括所述待查询表中至少一个列,所述待查询数据库的索引值包括所述待查询表的原始主键。

5.一种数据库查询装置,其特征在于,包括:

接收模块,用于接收查询请求消息,所述查询请求消息采用性状态传递REST风格;

第一获取模块,用于根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系,所述第二组合元素由至少一个基本元素和所述至少一个基本元素的集合关系构成,所述第二组合元素中包含的基本元素的数量少于所述第一组合元素中包含的基本元素的数量,所述基本元素是指最小数据查询单元;

第二获取模块,用于根据所述第一名称和所述第二名称获取所述待查询数据库的元数据,所述元数据包括所述待查询数据库的地址和所述待查询表的索引;

第一判断模块,用于判断所述待查询表的索引中是否包含所述第一组合元素;

读取模块,用于若所述待查询表的索引中包含所述第一组合元素,则根据所述地址读取所述待查询数据库的所述待查询表中索引值满足所述第一组合元素表示的查询条件的数据,得到所述第一组合元素对应的第一查询数据;

第二判断模块,用于若所述待查询表的索引中不包含所述第一组合元素,则分别判断所述待查询表的索引中是否包含所述每个第二组合元素;

第一读取模块,用于针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中包含所述任意一个第二组合元素时,根据所述地址读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素表示的查询条件的数据,得到所述任意一个第二组合元素对应的第二查询数据;

第二读取模块,用于针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中不包含所述任意一个第二组合元素时,根据所述地址分别读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素中的每个基本元素对应的查询条件的数据,并根据所述任意一个第二组合元素中的基本元素之间的集合关系对所述读取的数据进行集合处理,得到所述任意一个第二组合元素对应的第二查询数据;

整合模块,用于根据所述多个第二组合元素中的第二组合元素之间的集合关系、以及所述多个第二组合元素中每个第二组合元素对应的第二查询数据,确定所述第一组合元素对应的第一查询数据;

输出模块,用于根据所述第一查询数据输出目标查询数据。

6.根据权利要求5所述的装置,其特征在于,所述REST风格满足如下字段格式要求:http://ip:port/query/{domain}/{tableName}?queryCondition其中,“http”表示所述查询请求消息为超文本传输协议http消息,“ip”表示所述查询请求消息的目标互联网协议地址,“port”表示所述查询请求消息的目标端口号,“query”表示所述查询请求消息为查询类型的消息,“domain”表示所述待查询数据库的名称,“tableName”表示所述查询表的名称,“queryCondition”表示包含查询条件的字符串。

7.根据权利要求5所述的装置,其特征在于,所述第一获取模块具体用于:

对所述查询请求消息进行http解析,获取待查询数据库的第一名称、待查询表的第二名称和待查询条件;

通过词法语法分析器对所述待查询条件进行解析,获取所述第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系。

8.根据权利要求5至7中任一项所述的装置,其特征在于,所述待查询数据库的索引的主键包括所述待查询表中至少一个列,所述待查询数据库的索引值包括所述待查询表的原始主键。

9.一种数据库查询装置,其特征在于,包括:存储器和处理器;

所述存储器用于存储程序指令;

所述处理器用于调用所述存储器中的程序指令执行如权利要求1至4中任一项所述的方法。

10.一种计算机可读介质,其特征在于,所述计算机可读介质存储用于计算机执行的程序代码,该程序代码包括用于执行如权利要求1至4中任一项所述的方法的指令。

说明书 :

一种数据库查询方法及相关装置

技术领域

[0001] 本申请涉及数据库访问技术领域,尤其涉及一种数据库查询方法及相关装置。

背景技术

[0002] 在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。随着业务的发展,业务系统功能的增多,业务系统架构变得越来越复杂,对数据的存储和需求也变的越来越多样。其中,除了SQL数据库,列存储的Hbase、Hypertable、文档存储的MongoDB以及键‑值存储的Redis等不同种类的NoSQL数据库在业务系统中的使用率也越来越高。
[0003] 由于不同类型数据库中的数据结构不同,因此查询不同类型数据库时不能利用传统结构化SQL语句进行数据查询,而是针对不同种类的非结构化数据库,需要使用相应的查询语句才能实现的数据查询功能。
[0004] 由此可知,当一个业务系统中包含多个类型数据库,即包含多源异构数据库时,该业务系统需要为不同类型的数据库提供相应的查询语句,并且,在用户需要查询业务系统中某个数据库中的数据时,只要在接收到用户输入的相应查询语句才能为用户提供查询功能。这大大降低了数据库的查询便捷度,增加用户的数据查询难度。

发明内容

[0005] 本申请提出了一种数据库查询方法及相关装置,可以不用每次都编写复杂的代码程序才能实现数据库查询,进而增加了数据库的查询便捷度,降低用户的数据查询难度。
[0006] 第一方面,本申请提供一种数据库查询方法。该方法包括:接收查询请求消息,所述查询请求消息采用性状态传递REST风格;根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系,所述第二组合元素由至少一个基本元素和所述至少一个基本元素的集合关系构成,所述第二组合元素中包含的基本元素的数量少于所述第一组合元素中包含的基本元素的数量,所述基本元素是指最小数据查询单元;根据所述第一名称和所述第二名称获取所述待查询数据库的元数据,所述元数据包括所述待查询数据库的地址和所述待查询表的索引;判断所述待查询表的索引中是否包含所述第一组合元素;若所述待查询表的索引中包含所述第一组合元素,则根据所述地址读取所述待查询数据库的所述待查询表中索引值满足所述第一组合元素表示的查询条件的数据,得到所述第一组合元素对应的第一查询数据;若所述待查询表的索引中不包含所述第一组合元素,则分别判断所述待查询表的索引中是否包含所述每个第二组合元素;针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中包含所述任意一个第二组合元素时,根据所述地址读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素表示的查询条件的数据,得到所述任意一个第二组合元素对应的第二查询数据;针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中不包含所述任意一个第二组合元素时,根据所述地址分别读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素中的每个基本元素对应的查询条件的数据,并根据所述任意一个第二组合元素中的基本元素之间的集合关系对所述读取的数据进行集合处理,得到所述任意一个第二组合元素对应的第二查询数据;根据所述多个第二组合元素中的第二组合元素之间的集合关系、以及所述多个第二组合元素中每个第二组合元素对应的第二查询数据,确定所述第一组合元素对应的第一查询数据;根据所述第一查询数据输出目标查询数据。
[0007] 本申请的数据库查询方法不是通过编写复杂的程序实现的,而是通过一次简单的http调用实现的,因此大大降低了用户的使用难度,为数据库的访问提供了便捷。另外,本申请为待查询数据库的某一列或者某几列的组合建立二级索引,加快数据库的访问速度。
[0008] 结合第一方面,在第一种可能的实现方式中,所述REST风格满足如下字段格式要求:
[0009] http://ip:port/query/{domain}/{tableName}?queryCondition
[0010] 其中,“http”表示所述查询请求消息为超文本传输协议http消息,“ip”表示所述查询请求消息的目标互联网协议地址,“port”表示所述查询请求消息的目标端口号,“query”表示所述查询请求消息为查询类型的消息,“domain”表示所述待查询数据库的名称,“tableName”表示所述查询表的名称,“queryCondition”表示包含查询条件的字符串。
[0011] 该实现方式中,不再采用SQL语言进行数据库查询,而是通过调用REST风格的http查询请求实现的,降低了用户的使用难度,使数据库查询更加简单便捷。
[0012] 结合第一方面,在第二种可能的实现方式中,所述根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系,包括:对所述查询请求消息进行http解析,获取待查询数据库的第一名称、待查询表的第二名称和待查询条件;通过词法语法分析器对所述待查询条件进行解析,获取所述第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系。
[0013] 结合第一方面或第一种或第二种中任意一种可能的实现方式,在第三种可能的实现方式中,所述待查询数据库的索引的主键包括所述待查询表中至少一个列,所述待查询数据库的索引值包括所述待查询表的原始主键。
[0014] 该实现方式中,通过建立二级索引访问数据库,可以大大加快数据库数据的检索速度,提升系统性能。
[0015] 第二方面,本申请提供一种数据库查询装置,所述装置可以包括用于实现第一方面中的方法的各个模块,这些模块可以通过软件和/或硬件的方式实现。
[0016] 例如,该装置可以包括接收模块、第一获取模块、第二获取模块、第一判断模块、读取模块、第二判断模块、第一读取模块、第二读取模块、整合模块和输出模块。
[0017] 接收模块,用于接收查询请求消息,所述查询请求消息采用性状态传递REST风格;第一获取模块,用于根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系,所述第二组合元素由至少一个基本元素和所述至少一个基本元素的集合关系构成,所述第二组合元素中包含的基本元素的数量少于所述第一组合元素中包含的基本元素的数量,所述基本元素是指最小数据查询单元;第二获取模块,用于根据所述第一名称和所述第二名称获取所述待查询数据库的元数据,所述元数据包括所述待查询数据库的地址和所述待查询表的索引;第一判断模块,用于判断所述待查询表的索引中是否包含所述第一组合元素;读取模块,用于若所述待查询表的索引中包含所述第一组合元素,则根据所述地址读取所述待查询数据库的所述待查询表中索引值满足所述第一组合元素表示的查询条件的数据,得到所述第一组合元素对应的第一查询数据;第二判断模块,用于若所述待查询表的索引中不包含所述第一组合元素,则分别判断所述待查询表的索引中是否包含所述每个第二组合元素;第一读取模块,用于针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中包含所述任意一个第二组合元素时,根据所述地址读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素表示的查询条件的数据,得到所述任意一个第二组合元素对应的第二查询数据;第二读取模块,用于针对所述多个第二组合元素中的任意一个第二组合元素,所述待查询表的索引中不包含所述任意一个第二组合元素时,根据所述地址分别读取所述待查询数据库的所述待查询表中满足所述任意一个第二组合元素中的每个基本元素对应的查询条件的数据,并根据所述任意一个第二组合元素中的基本元素之间的集合关系对所述读取的数据进行集合处理,得到所述任意一个第二组合元素对应的第二查询数据;整合模块,用于根据所述多个第二组合元素中的第二组合元素之间的集合关系、以及所述多个第二组合元素中每个第二组合元素对应的第二查询数据,确定所述第一组合元素对应的第一查询数据;输出模块,用于根据所述第一查询数据输出目标查询数据。
[0018] 结合第二方面,在第一种可能的实现方式中,所述REST风格满足如下字段格式要求:
[0019] http://ip:port/query/{domain}/{tableName}?queryCondition
[0020] 其中,“http”表示所述查询请求消息为超文本传输协议http消息,“ip”表示所述查询请求消息的目标互联网协议地址,“port”表示所述查询请求消息的目标端口号,“query”表示所述查询请求消息为查询类型的消息,“domain”表示所述待查询数据库的名称,“tableName”表示所述查询表的名称,“queryCondition”表示包含查询条件的字符串。
[0021] 结合第一种可能的实现方式,在第二种可能的实现方式中,所述第一获取模块具体用于:对所述查询请求消息进行http解析,获取待查询数据库的第一名称、待查询表的第二名称和待查询条件;通过词法语法分析器对所述待查询条件进行解析,获取所述第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系。
[0022] 结合第一方面或第一种或第二种中任意一种可能的实现方式,在第三种可能的实现方式中,所述待查询数据库的索引的主键包括所述待查询表中至少一个列,所述待查询数据库的索引值包括所述待查询表的原始主键。
[0023] 第三方面,本申请提供一种数据库查询装置,包括:存储器和处理器;所述存储器用于存储程序指令;所述处理器用于调用所述存储器中的程序指令执行如第一方面或其中任意一种可能的实现方式所述的方法。
[0024] 第四方面,本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口和所述至少一个处理器通过线路互联,所述至少一个处理器用于运行计算机程序或指令,以执行如第一方面或其中任意一种可能的实现方式所述的方法。
[0025] 第五方面,本申请提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如第一方面或其中任意一种可能的实现方式所述的方法。
[0026] 第六方面,本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如第一方面或其中任意一种可能的实现方式所述的方法。
[0027] 第七方面,本申请提供一种计算设备,包括至少一个处理器和通信接口,所述通信接口和所述至少一个处理器通过线路互联,所述通信接口与目标系统通信,所述至少一个处理器用于运行计算机程序或指令,以执行如第一方面或其中任意一种可能的实现方式所述的方法。

附图说明

[0028] 图1为根据申请实施例的数据库查询方法流程图;
[0029] 图2为本申请一个实施例提供的数据库查询装置的结构示意图;
[0030] 图3为本申请另一个实施例提供的数据库查询装置的结构示意图。

具体实施方式

[0031] 为了增加数据库的查询便捷度,降低用户的数据查询难度,本申请提供一种数据库查询方法及相关装置。该方法中,接收查询请求消息,所述查询请求消息采用性状态传递REST风格;根据所述查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系;根据所述第一名称和所述第二名称获取所述待查询数据库的元数据;根据元数据、第一组合元素和所述第一组合元素中的多个第二组合元素间的集合关系获取所述待查询表的索引;根据所述待查询表的索引获取目标查询数据。
[0032] 下面结合附图介绍本申请提出的各个方法和相关装置。
[0033] 图1为根据申请实施例的数据库查询方法流程图。如图1所示,该方法可以包括S101、S102、S103、S104、S105、S106、S107、S108、S109和S110。
[0034] S101,接收查询请求消息,该查询请求消息采用性状态传递REST风格。
[0035] 具体地,可以通过本申请设计的语言解析器模块接收客户端的数据库查询请求消息,该查询请求消息的调用格式采用表述性状态传递(Representational  State Transfer,REST)风格。
[0036] 其中,REST是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是REST风格。需要注意的是,REST是设计风格而不是标准。REST通常基于使用超文本传输协议(hypertext transfer protocol,http),统一资源标识符(uniform resource identifier,URI),和可扩展标记语言(extensible markup language,XML)以及超文本标记语言(hypertext markup language,HTML)这些现有的广泛流行的协议和标准。
[0037] 作为一种示例,语言解析器模块通过启动一个网页服务器来等待客户端的http查询请求消息。采用REST风格的http查询请求消息的示例如下:
[0038] http://ip:port/query/{domain}/{tableName}?queryCondition
[0039] 其中,“http”表示该查询请求消息为http消息,“ip”表示该查询请求消息的目标互联网协议地址,“port”表示该查询请求消息的目标端口号,“query”表示该查询请求消息为查询类型的消息,“domain”表示该待查询数据库的名称,“tableName”表示该查询表的名称,“queryCondition”表示包含查询条件的字符串。
[0040] S102,根据该查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和该第一组合元素中的多个第二组合元素间的集合关系,该第二组合元素由至少一个基本元素和该至少一个基本元素的集合关系构成,该第二组合元素中包含的基本元素的数量少于该第一组合元素中包含的基本元素的数量,该基本元素是指最小数据查询单元。
[0041] 在本步骤中根据该查询请求消息,获取待查询数据库的第一名称、待查询表的第二名称、第一组合元素和该第一组合元素中的多个第二组合元素间的集合关系具体可以包括以下步骤:
[0042] 对该查询请求消息进行http解析,获取待查询数据库的第一名称、待查询表的第二名称和待查询条件;
[0043] 通过词法语法分析器对待查询条件进行解析,获取该第一组合元素和该第一组合元素中的多个第二组合元素间的集合关系。
[0044] 其中,本申请设计的词法语法分析器在进行解析时的语料包括单词(英文字母和数字组合),比较运算符(==等于、>、>=、<、<=),逻辑运算符(&&、||),优先级运算符()等。
[0045] 作为一种示例,一个查询请求消息1为:
[0046] http://127.0.0.1:8888/query/hbase1/user.table1?NAME==’1’||(AGE>=’18’&&TIME==’2020‑06‑06:18:18:18’)
[0047] 首先通过http解析获得待查询数据库的第一名称为hbase1,待查询表的第二名称为user.table1,待查询条件为NAME==’1’||(AGE>=’18’&&TIME==’2020‑06‑06:18:18:18’)。
[0048] 然后通过词法语法分析器从待查询条件NAME==’1’||(AGE>=’18’&&TIME==’2020‑06‑06:18:18:18’)中解析得到第一组合元素e、第二组合元素d和第一组合元素中的多个第二组合元素间的集合关系,其中第二组合元素d为a&&b,第一组合元素e为c||d,a为基本元素AGE>=’18’,b为基本元素TIME==’2020‑06‑06:18:18:18’,c为基本元素NAME==’1’。另外,还可解析得到组合元素间的执行顺序,本例中组合元素间的执行顺序为先执行d再执行e。
[0049] 本步骤中,基本元素也可以根据写成组合元素的形式,如基本元素a可以用组合元素a&&a来表示。其中,集合关系左侧的组合元素称为左元素,右侧的组合元素称为右元素,例如a、c为左元素,b、d为右元素。
[0050] S103,根据该第一名称和该第二名称获取该待查询数据库的元数据,该元数据包括该待查询数据库的地址和该待查询表的索引。
[0051] 在该步骤中,需要提前建立每个数据库的元数据与待查询数据库的第一名称、待查询表的第二名称之间的映射关系,就可根据该映射关系获取待查询数据库的元数据。
[0052] 进一步的,本申请设计的查询计划器模块通过映射关系与根据语言解析器模块得到的第一名称和该第二名称获取该待查询数据库的元数据,该元数据用于判断语言解析器模块解析得到的每个组合元素是否可以作为主键或索引,进而查询数据库数据。其中,也可通过元数据获取该待查询表的主键,通过主键进行数据库查询。
[0053] 作为一种示例,该待查询表的索引或主键是由该待查询表中的单列构成。
[0054] 作为另一种示例,该待查询表的索引设计为列的组合,其中索引的实现是将该查询表中列或列组合作为主键,原始主键作为索引值,列索引查询时先获取原始主键再根据原始主键即可获取原始数据。
[0055] S104,判断该待查询表的索引中是否包含该第一组合元素。
[0056] 具体地,可以通过本申请设计的查询计划器模块判断该待查询表的索引中是否包含该第一组合元素,即第一组合元素是否可以作为待查询表的索引查询数据库。若待查询表的索引中包含该第一组合元素,则执行步骤S105,否则执行S106。
[0057] S105,若该待查询表的索引中包含该第一组合元素,则根据该地址读取该待查询数据库的该待查询表中索引值满足该第一组合元素表示的查询条件的数据,得到该第一组合元素对应的第一查询数据。
[0058] 在该步骤中,若该待查询表的索引中包含该第一组合元素,也就是说查询计划器模块判断该第一组合元素可以作为待查询表的索引对数据库进行查询。
[0059] 具体地,根据待查询数据库的地址读取该待查询数据库的该待查询表中索引值满足该第一组合元素表示的查询条件的数据,得到该第一组合元素对应的第一查询数据。
[0060] 其中,获取满足查询条件的数据是通过本申请设计的查询执行器模块实现的,获取的顺序是通过组合元素间的关系确定的。
[0061] S106,若该待查询表的索引中不包含该第一组合元素,则分别判断该待查询表的索引中是否包含每个第二组合元素。
[0062] 在该步骤中,若该待查询表的索引中不包含该第一组合元素,也就是说查询计划器模块判断该第一组合元素不可以作为待查询表的索引查询数据库,因此需要将第一组合元素拆分为多个第二组合元素,分别判断该待查询表的索引中是否包含每个第二组合元素。
[0063] 进一步地,若该待查询表的索引中包含任意一个第二组合元素,则执行S107,否则执行S108。
[0064] S107,针对该多个第二组合元素中的任意一个第二组合元素,该待查询表的索引中包含该任意一个第二组合元素时,根据该地址读取该待查询数据库的该待查询表中满足该任意一个第二组合元素表示的查询条件的数据,得到该任意一个第二组合元素对应的第二查询数据。
[0065] 在该步骤中,若该待查询表的索引中包含任意一个第二组合元素,也就是说查询计划器模块判断任意一个第二组合元素可以作为待查询表的索引对数据库进行查询。
[0066] 具体地,根据待查询数据库的地址读取该待查询数据库的待查询表中索引值满足任意一个第二组合元素表示的查询条件的数据,得到该第二组合元素对应的第二查询数据。
[0067] S108,针对该多个第二组合元素中的任意一个第二组合元素,该待查询表的索引中不包含该任意一个第二组合元素时,根据该地址分别读取该待查询数据库的该待查询表中满足该任意一个第二组合元素中的每个基本元素对应的查询条件的数据,并根据该任意一个第二组合元素中的基本元素之间的集合关系对该读取的数据进行集合处理,得到该任意一个第二组合元素对应的第二查询数据。
[0068] 在该步骤中,若该待查询表的索引中不包含任意一个第二组合元素,也就是说查询计划器模块判断任意一个第二组合元素不可以作为待查询表的索引对数据库进行查询。
[0069] 进一步地,根据该待查询数据库的地址分别读取该待查询数据库的待查询表中满足该任意一个第二组合元素中的每个基本元素对应的查询条件的数据,并根据该任意一个第二组合元素中的基本元素之间的集合关系对该读取的数据进行集合处理,得到该任意一个第二组合元素对应的第二查询数据。
[0070] 其中,一个第二组合元素中的基本元素之间的集合关系对该读取的数据进行集合处理是通过本申请的查询器管理模块实现的。
[0071] S109,根据该多个第二组合元素中的第二组合元素之间的集合关系、以及该多个第二组合元素中每个第二组合元素对应的第二查询数据,确定该第一组合元素对应的第一查询数据。
[0072] 在该步骤中,把上述得到的每个第二组合元素中每个第二组合元素对应的第二查询数据按照第二组合元素之间的集合关系进行组合处理得到对应的第一查询数据。
[0073] 其中,对多个第第二查询数据的组合处理是通过本申请的查询器管理模块实现的。
[0074] S110,根据该第一查询数据输出目标查询数据。
[0075] 在该步骤中,通过第一查询数据进行处理得到目标查询数据,具体包括以下两种情况:
[0076] 如果查询条件的字符串经过语言解析模块解析得到的整体组合元素可作为第一组合元素,则第一查询数据为目标查询数据,将第一查询数据作为目标查询数据输出即可。
[0077] 如果查询条件的字符串经过语言解析模块解析得到的整体组合元素不能作为第一组合元素,则将多个第一查询数据进行集合处理得到目标查询数据。
[0078] 作为一个可选的实施例,查询计划器模块的实现流程如下,该方法可以包括如下步骤一、步骤二、步骤三、步骤四、步骤五和步骤六。
[0079] 步骤一,根据语言解析器模块获取多个组合元素间的集合关系,进而得到组合元素执行顺序,并依据该执行顺序依次按照步骤二执行。
[0080] 其中,该组合元素为第一组合元素或第二组合元素。
[0081] 步骤二,对于组合元素,按照步骤三判断是否能够获主键,如果有返回则将该主键或者索引添加到与主键或索引对应的rowkey_map当中;如果返回为空则按照步骤四分别执行左元素和右元素,如返回结果都为正确则不做判断,如果执行左元素返回结果为正确,且执行右元素返回错误则转到步骤五执行。
[0082] 其中,rowkey_map是一种数据结构。
[0083] 步骤三,递归将组合元素全部还原成基本元素,根据外部数据源的元数据判断基本元素是否能组合成主键,如能返回主键构成,如不能返回空。
[0084] 作为一个可选的示例,查询请求消息1将e还原成c||d,c还原成a&&b,然后再判断a&&b||c能否够成主键,在这里显然是不能,因为主键构成是所有列的与&&关系,即列1和列2和列3共同组合成一个主键值。
[0085] 步骤四,判断rowkey_map里是否有该组合元素对应的主键,如果有则返回正确,如果没有则返回错误。
[0086] 步骤五,将右元素按照步骤三执行,如有返回则添加到rowkey_map里,如返回空,则不做判断。
[0087] 步骤六,顺序执行完步骤一后,对rowkey_map的多个主键进行判断,如果其中某主键(类型为组合元素)包含另一主键,则将被包含者从rowkey_map中去除。
[0088] 作为一个可选的示例,对于查询消息1,e包含了d,如果e、d都在rowkey_map的多个主键中,则将d从rowkey_map中去除。
[0089] 在本实施例中,可以得到至少一个主键,将其输入查询执行器模块可以实现对数据库的查询。
[0090] 图2为本申请一个实施例提供的数据库查询装置的结构示意图。图2所示的装置可以用于执行图1所述的方法。如图2所示,本实施例的数据库查询装置200可以包括:接收模块201、第一获取模块202、第二获取模块203、第一判断模块204、读取模块205、第二判断模块206、第一读取模块207、第二读取模块208、整合模块209和输出模块210。
[0091] 例如,接收模块201可以用于执行S101,第一获取模块202可以用于执行S102,第二获取模块203可以用于执行S103,第一判断模块204可以用于执行S104,读取模块205可以用于执行S105,第一判断模块206可以用于执行S106,第一读取模块207可以用于执行S107,第二读取模块208可以用于执行S108,整合模块209可以用于执行S109,输出模块210可以用于执行S110。
[0092] 图3为本申请另一个实施例提供的数据库查询装置的结构示意图。图3所示的装置可以用于执行图1所述的数据库查询方法。
[0093] 如图3所示,本实施例的装置300包括:存储器301、处理器302、通信接口303以及总线304。其中,存储器301、处理器302、通信接口303通过总线304实现彼此之间的通信连接。
[0094] 存储器301可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器301可以存储程序,当存储器301中存储的程序被处理器302执行时,处理器302用于执行图1所示的方法的各个步骤。
[0095] 处理器302可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请方法实施例的数据库查询方法。
[0096] 处理器302还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请实施例的规划自动驾驶车辆的方法的各个步骤可以通过处理器302中的硬件的集成逻辑电路或者软件形式的指令完成。
[0097] 上述处理器302还可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0098] 结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器301,处理器302读取存储器301中的信息,结合其硬件完成本申请测温装置包括的单元所需执行的功能,例如,可以执行图1所示实施例的各个步骤/功能。
[0099] 通信接口303可以使用但不限于收发器一类的收发装置,来实现装置300与其他设备或通信网络之间的通信。
[0100] 总线304可以包括在装置300各个部件(例如,存储器301、处理器302、通信接口303)之间传送信息的通路。
[0101] 应理解,本申请实施例所示的装置300可以是电子设备,或者,也可以是配置于电子设备中的芯片。
[0102] 应理解,本申请实施例中的处理器可以为中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0103] 还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read‑only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM。
[0104] 上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
[0105] 应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
[0106] 本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a‑b,a‑c,b‑c,或a‑b‑c,其中a,b,c可以是单个,也可以是多个。
[0107] 应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0108] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0109] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0110] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0111] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0112] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0113] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0114] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。