CN109299110B - 数据查询方法、装置、存储介质和电子设备 - Google Patents
数据查询方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN109299110B CN109299110B CN201811334227.4A CN201811334227A CN109299110B CN 109299110 B CN109299110 B CN 109299110B CN 201811334227 A CN201811334227 A CN 201811334227A CN 109299110 B CN109299110 B CN 109299110B
- Authority
- CN
- China
- Prior art keywords
- query
- data
- row
- matched
- row key
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据查询方法、装置、存储介质和电子设备,涉及信息技术领域,应用于服务器,该方法包括:解析由终端发送的查询请求,以获得查询请求中至少一个查询信息对应的至少一个查询模式,在索引表中查找是否存在与至少一个查询模式匹配的第一行键,当索引表中存在至少一个第一行键时,在数据库中的由至少一个第一行键所标识的数据行中,查找与至少一个查询信息匹配的数据行,将与至少一个查询信息匹配的数据行作为查询结果发送给终端。本公开实现了对分布式数据库的查询,提高了分布式数据库的查询效率,节省了存储资源。
Description
技术领域
本公开涉及信息技术领域,具体地,涉及一种数据查询方法、装置、存储介质和电子设备。
背景技术
随着互联网、云计算和物联网等信息技术的迅猛发展,相应带来的数据量也是呈现爆发式的增长,而传统的数据库已经不能满足海量数据的存储需求,因此对海量数据的存储通常会选用分布式数据库(英文:distributed data base,缩写:DDB)。例如Hbase数据库,是一个分布式的、面向列的开源数据库,适合于非结构化数据存储,在Hbase数据库中读取一行记录的方式是,通过能够唯一标识一行记录的行键(英文:Rowkey)。
现有技术中,要实现Hbase数据库的查询,需要人工对数据库中指定的表或指定的列建立索引(从数据库中映射出部分列),在进行查询时,只在索引映射出的列中查询,从而返回行键。由于数据库中的数据量很大,并且结构复杂,因此查询的效率很低,同时建立索引也耗费了存储空间。
发明内容
本公开的目的是提供一种数据查询方法、装置、存储介质和电子设备,用以解决现有技术中数据查询效率低,耗费存储空间的问题。
为了实现上述目的,根据本公开实施例的第一方面,提供一种数据查询方法,应用于服务器,所述方法包括:
解析由终端发送的查询请求,以获得所述查询请求中至少一个查询信息对应的至少一个查询模式;
在索引表中查找是否存在与所述至少一个查询模式匹配的第一行键;
当所述索引表中存在至少一个所述第一行键时,在数据库中的由所述至少一个所述第一行键所标识的数据行中,查找与所述至少一个查询信息匹配的数据行;
将与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端。
可选的,所述在数据库中的由所述至少一个所述第一行键所标识的数据行中,查找与所述至少一个查询信息匹配的数据行,包括:
当所述索引表中存在至少一个所述第一行键时,将所述数据库中所述至少一个所述第一行键所标识的数据行作为目标行;
在所述目标行中查找与所述至少一个查询信息匹配的数据行。
可选的,所述当所述索引表中存在至少一个所述第一行键时,将所述数据库中所述至少一个所述第一行键所标识的数据行作为目标行,包括:
当所述索引表中存在至少一个所述第一行键时,确定每个所述第一行键对应的第一表名;
在所述数据库中查找每个所述第一表名所标识的数据表;
在所有所述数据表中确定所述至少一个所述第一行键所标识的至少一个数据行;
将所述至少一个数据行作为所述目标行。
可选的,所述解析由终端发送的查询请求,以获得所述查询请求中至少一个查询信息对应的至少一个查询模式,包括:
根据所述至少一个查询信息,获取每个查询信息匹配的正则表达式;
将每个所述查询信息匹配的正则表达式作为一个所述查询模式。
可选的,所述方法还包括:
当所述索引表中不存在所述第一行键时,在所述数据库中查找与所述查询模式匹配的目标数据列,所述目标数据列中的数据所匹配的正则表达式与所述查询模式相同;
当所述数据库中存在至少一个所述目标数据列时,确定所述至少一个所述目标数据列对应的至少一个第二行键,和每个所述第二行键对应的第二表名;
在所述数据库中查找每个所述第二表名所标识的数据表;
在所有所述数据表中确定所述至少一个第二行键所标识的至少一个数据行;
将所述至少一个第二行键所标识的至少一个数据行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端;
根据所述至少一个第二行键、每个所述第二行键对应的第二表名和所述查询模式,更新所述索引表。
可选的,所述将所述至少一个第二行键所标识的至少一个数据行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端,包括:
将所述至少一个第二行键所标识的至少一个数据行作为目标行;
将所述目标行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端。
可选的,所述方法还包括:
当所述数据库中不存在所述目标数据列时,将提示信息发送给所述终端,所述提示信息用于指示查询失败。
可选的,所述根据所述至少一个第二行键、每个所述第二行键对应的第二表名和所述查询模式,更新所述索引表,包括:
将每个所述第二行键和所述查询模式的对应关系、所述查询模式和所述目标数据列的对应关系,存入所述索引表。
根据本公开实施例的第二方面,提供一种数据查询装置,应用于服务器,所述装置包括:解析模块,用于解析由终端发送的查询请求,以获得所述查询请求中至少一个查询信息对应的至少一个查询模式;
第一查找模块,用于在索引表中查找是否存在与所述至少一个查询模式匹配的第一行键;
第二查找发送模块,用于当所述索引表中存在至少一个所述第一行键时,在数据库中的由所述至少一个所述第一行键所标识的数据行中,查找与所述至少一个查询信息匹配的数据行;
发送模块,用于将与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端。
可选的,所述第二查找发送模块包括:
第一查找子模块,用于当所述索引表中存在至少一个所述第一行键时,将所述数据库中所述至少一个所述第一行键所标识的数据行作为目标行;
第二查找子模块,用于在所述目标行中查找与所述至少一个查询信息匹配的数据行。
可选的,所述第一查找子模块用于:
当所述索引表中存在至少一个所述第一行键时,确定每个所述第一行键对应的第一表名;
在所述数据库中查找每个所述第一表名所标识的数据表;
在所有所述数据表中确定所述至少一个所述第一行键所标识的至少一个数据行;
将所述至少一个数据行作为所述目标行。
可选的,所述解析模块包括:
解析子模块,用于根据所述至少一个查询信息,获取每个查询信息匹配的正则表达式;
模式确定子模块,用于将每个所述查询信息匹配的正则表达式作为一个所述查询模式。
可选的,所述装置还包括:
数据列查找模块,用于当所述索引表中不存在所述第一行键时,在所述数据库中查找与所述查询模式匹配的目标数据列,所述目标数据列中的数据所匹配的正则表达式与所述查询模式相同;
所述数据列查找模块,还用于当所述数据库中存在至少一个所述目标数据列时,确定所述至少一个所述目标数据列对应的至少一个第二行键,和每个所述第二行键对应的第二表名;
所述数据列查找模块,还用于在所述数据库中查找每个所述第二表名所标识的数据表;
所述数据列查找模块,还用于在所有所述数据表中确定所述至少一个第二行键所标识的至少一个数据行;
所述发送模块,还用于将所述至少一个第二行键所标识的至少一个数据行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端;
更新模块,用于根据所述至少一个第二行键、每个所述第二行键对应的第二表名和所述查询模式,更新所述索引表。
可选的,所述发送模块包括:
查询子模块,用于将所述至少一个第二行键所标识的至少一个数据行作为目标行;
发送子模块,用于将所述目标行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端。
可选的,所述发送模块,还用于:
当所述数据库中不存在所述目标数据列时,将提示信息发送给所述终端,所述提示信息用于指示查询失败。
可选的,所述更新模块用于:
将每个所述第二行键和所述查询模式的对应关系、所述查询模式和所述目标数据列的对应关系,存入所述索引表。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面提供的数据查询方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面提供的数据查询方法的步骤。
通过上述技术方案,本公开首先接收由终端发送的查询请求,通过解析查询请求,以获得查询请求中包含至少一个查询信息对应的至少一个查询模式,再在索引表中查找是否存在与至少一个查询模式匹配的第一行键,当索引表中存在一个或多个第一行键时,在所有第一行键所标识的数据行中查找与至少一个查询信息匹配的数据行,最后将与至少一个查询信息匹配的数据行作为查询结果发送给终端。能够实现对分布式数据库的查询,提高了分布式数据库的查询效率,节省了存储资源。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种数据查询方法的流程图;
图2是根据一示例性实施例示出的另一种数据查询方法的流程图;
图3是根据一示例性实施例示出的另一种数据查询方法的流程图;
图4是根据一示例性实施例示出的另一种数据查询方法的流程图;
图5是根据一示例性实施例示出的另一种数据查询方法的流程图;
图6是根据一示例性实施例示出的一种数据查询装置的框图;
图7是根据一示例性实施例示出的另一种数据查询装置的框图;
图8是根据一示例性实施例示出的另一种数据查询装置的框图;
图9是根据一示例性实施例示出的另一种数据查询装置的框图;
图10是根据一示例性实施例示出的另一种数据查询装置的框图;
图11是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在介绍本公开提供的数据查询方法、装置、存储介质和电子设备之前,首先对本公开中各个实施例所涉及的应用场景进行介绍,该应用场景中包括服务器和终端,终端能够通过网络与服务器进行通信,服务器中包含了数据库(例如可以是Hbase数据库),能够接收终端发送的查询请求,并将查询结果返回给终端。其中,服务器可以是本地服务器,也可以是云端服务器,终端例如可以是智能手机、平板电脑、智能电视、智能手表、PDA(英文:Personal Digital Assistant,中文:个人数字助理)、便携计算机等移动终端,也可以是台式计算机等固定终端。
图1是根据一示例性实施例示出的一种数据查询方法的流程图,如图1所示,该方法应用于服务器,包括:
步骤101,解析由终端发送的查询请求,以获得查询请求中至少一个查询信息对应的至少一个查询模式。
举例来说,用户需要查找数据库中的数据时,可以通过终端向服务器发送查询请求,查询请求中可以包括用户要查询的数据,即查询信息,查询信息可以是一个或多个。服务器在接收到查询请求后,对查询请求中的每一个查询信息进行解析,以得到该至少一个查询信息对应的一个或多个查询模式。其中,查询请求中的查询信息可以是按照预设的DSL(英文:Domain-specific Languages,中文:领域特定语言)描述的,服务器对查询请求以对应的DSL来解析查询信息,以得到查询信息对应的查询模式,查询模式可以理解为用户要查询的数据的属性,即数据库中的某一数据列的数据格式,查询模式可以有一个或多个,每个查询模式对应数据库中的某一数据列的数据格式。以用户需要查找数据库中包含身份证号为211123456789101234和姓名为李明的数据,通过终端向服务器发送查询请求,查询请求包括<211123456789101234>AND<李明>,即“211123456789101234”为一个查询信息,“李明”为一个查询信息,服务器对两个查询信息进行解析,得到两个查询模式:17或18位数字(即身份证号对应的查询模式)、2-4位汉字(即姓名对应的查询模式)。
步骤102,在索引表中查找是否存在与至少一个查询模式匹配的第一行键。
示例的,在索引表中查找是否存在与全部查询模式匹配的第一行键,索引表中可以包含数据库中各个数据表中的某些数据列(或者称为字段)的模式,还包括这些数据列对应一个或多个行键,同时还可以包括这些行键中每个行键对应的表名,其中,表名能够唯一标识数据表,还需要说明的是。第一行键可以是零个、一个或多个。当第一行键不存在(即零个)时,表示索引表中没有与全部查询模式完全匹配的数据列,当第一行键为一个或多个时,表示索引表中存在与全部查询模式完全匹配的数据列,这些数据列对应的行键即为第一行键。与全部查询模式匹配的数据列,可以理解为数据列中数据的模式与查询模式一一对应,即根据索引表中行键与查询模式的对应关系,将索引表中与查询模式匹配的全部行键作为所述第一行键组。例如,索引表中的有两个数据列中的数据,分别满足17或18位数字的模式,和2-4位汉字的模式,那么可以确定这两个数据列与<211123456789101234>AND<李明>所解析出的查询模式匹配,相应的这两个数据列对应的行键即为第一行键。需要说明的是,索引表中包含的数据列,可以是之前查询过的查询模式中对应的数据列,也可以是预先指定的某些数据列。
步骤103,当索引表中存在至少一个第一行键时,在数据库中的由至少一个第一行键所标识的数据行中,查找与至少一个查询信息匹配的数据行。
步骤104,将与至少一个查询信息匹配的数据行作为查询结果发送给终端。
举例来说,当索引表中存在一个或多个行键时,根据索引表中行键与表名的关系,确定每个第一行键对应的表名,再根据每个第一行键对应的表名确定每个第一行键对应的数据表,再获取数据表中全部第一行键所标识的数据行,之后在全部第一行键所标识的数据行中查找与至少一个查询信息匹配的数据行,最后将与至少一个查询信息匹配的数据行作为查询结果发送给终端。其中,第一行键的数量大于或等于数据表的个数,即一个数据表可以对应一个或多个第一行键。例如,查询请求包括<211123456789101234>AND<李明>,则解析出的查询模式为17或18位数字和2-4位汉字,也即查询模式为身份证号和姓名,假设索引表中的有两个数据列分别与17或18位数字和2-4位汉字这两个查询模式匹配,相应的这两个数据列对应了三个行键,则这三个行键就是上述的第一行键(可以理解为找到了符合查询请求中查询条件的数据行的标识),假设这三个第一行键分别为:1001101、1100110、1100111,则可以取出数据库中1001101、1100110、1100111所标识的三个数据行,再在这三个数据行中查询包括了“211123456789101234”和“李明”的数据行,作为查询结果发送给终端。
例如,数据库中存储了某城市的人口信息,现在需要查找数据库中姓名为“王明”,身份证号为“610123456789101234”,性别为“男”的数据,可以通过终端输入<王明>AND<610123456789101234>AND<男>的查询请求,终端将查询请求发送至服务器。服务器在接收到该查询请求后,对查询请求进行解析,对查询请求中包含的三个查询信息“王明”、“610123456789101234”和“男”分别求对应的正则表达式,以获取三个查询模式:2-4位汉字(姓名对应的查询模式)、17或18位数字(身份证号对应的查询模式)、0或1(性别对应的查询模式)。之后,在索引表中查找是否存在与全部查询模式匹配的第一行键,即查询索引表中是否存在三个数据列中的数据,分别满足2-4位汉字、17或18位数字、0或1的模式,如果存在,这三个数据列对应的行键即为第一行键,例如三个数据列对应两个第一行键,分别为:1111101、1100000,取出数据库中1111101、1100000标识的两个数据行,最后将这两个数据行中包括“王明”、“610123456789101234”和“男”的数据行作为查询结果发送给终端,例如1100000标识的数据行中包含“王明”,但不包含“610123456789101234”和“男”,而1111101标识的数据行中同时包含“王明”、“610123456789101234”和“男”,则将1111101标识的数据行对应的数据表中取出1111101所标识的数据行,作为最终的查询结果发送给终端。
综上所述,本公开首先接收由终端发送的查询请求,通过解析查询请求,以获得查询请求中包含至少一个查询信息对应的至少一个查询模式,再在索引表中查找是否存在与至少一个查询模式匹配的第一行键,当索引表中存在一个或多个第一行键时,在所有第一行键所标识的数据行中查找与至少一个查询信息匹配的数据行,最后将与至少一个查询信息匹配的数据行作为查询结果发送给终端。能够实现对分布式数据库的查询,提高了分布式数据库的查询效率,节省了存储资源。
图2是根据一示例性实施例示出的另一种数据查询方法的流程图,如图2所示,步骤103可以通过以下步骤来实现:
步骤1031,当索引表中存在至少一个第一行键时,将数据库中至少一个第一行键所标识的数据行作为目标行。
步骤1032,在目标行中查找与至少一个查询信息匹配的数据行。
示例的,当索引表中存在一个或多个行键时,根据索引表中行键与表名的关系,确定每个第一行键对应的表名,再根据每个第一行键对应的表名确定每个第一行键对应的数据表,再将数据表中全部第一行键所标识的数据行作为目标行,之后在目标行中查找与至少一个查询信息匹配的数据行。
可选的,步骤1031可以通过以下方式来实现:
1)当索引表中存在至少一个第一行键时,确定每个第一行键对应的第一表名。
2)在数据库中查找每个第一表名所标识的数据表。
3)在所有数据表中确定至少一个第一行键所标识的至少一个数据行。
4)将至少一个数据行作为目标行。
举例来说,当索引表中存在至少一个第一行键时,首先根据索引表中行键与表名的对应关系,确定每个第一行键对应的第一表名,其中,第一行键的数量大于或等于第一表名的数量(即一个第一行键对应一个第一表名标识的数据表,一个第一表名标识的数据表可以包括多个第一行键),再确定数据库中第一表名所标识的数据表,之后获取所有数据表中全部第一行键所标识的全部数据行(第一行键与数据行一一对应),最后将全部数据行作为目标行。例如,索引表中的有两个数据列分别与<211123456789101234>AND<李明>所解析出的查询模式匹配,相应的这两个数据列对应三个第一行键,分别为:1001101、1100110、1100111,先确定三个第一行键对应的表名,1001101所属的表名为:0x5211,1100110和1100111所属的表名都为0x7100,那么在数据库中查找0x5211和0x7100对应的数据表,并在0x5211标识的数据表中取出1001101对应的一个数据行,在0x7100标识的数据表中取出1100110、1100111对应的两个数据行,将这三个数据行作为目标行。
图3是根据一示例性实施例示出的另一种数据查询方法的流程图,如图3所示,步骤101可以包括:
步骤1011,根据至少一个查询信息,获取每个查询信息匹配的正则表达式。
步骤1012,将每个查询信息匹配的正则表达式作为一个查询模式。
示例的,查询请求中可以包含一个或多个查询信息,查询信息例如可以是文本的格式,将每个查询信息对应的数据按照正则表达式(英文:Regular Expression)的规则进行描述,以获取每个查询信息匹配的正则表达式,将每个查询信息匹配的正则表达式作为一个查询模式,即一个正则表达式对应一个查询模式,多个正则表达式对应多个查询模式。相应的,查询模式与数据列匹配,则可以理解为数据列中的数据所对应的正则表达式与查询模式对应的正则表达式相同。以查询请求为<张三>AND<男>举例,服务器可以去除查询请求中的连接符号(例如:AND、OR等)之后,解析出查询请求中包含的两个查询信息:“张三”和“男”,将“男”对应的数据按照正则表达式的规则进行描述,即0或1(性别对应的查询模式),将“张三”对应的数据按照正则表达式的规则进行描述,即2-4位汉字(姓名对应的查询模式),将“姓名”、“性别”对应的两个正则表达式作为两个查询模式。
图4是根据一示例性实施例示出的另一种数据查询方法的流程图,如图4所示,该方法还包括以下步骤:
步骤105,当索引表中不存在第一行键时,在数据库中查找与查询模式匹配的目标数据列,目标数据列中的数据所匹配的正则表达式与查询模式相同。
举例来说,当索引表中不存在第一行键时,可以通过在数据库中查找与查询模式匹配的目标数据列来查询数据,其中,目标数据列中的数据所匹配的正则表达式与查询模式相同。
步骤106,当数据库中存在至少一个目标数据列时,确定至少一个目标数据列对应的至少一个第二行键,和每个第二行键对应的第二表名。
步骤107,在数据库中查找每个第二表名所标识的数据表。
步骤108,在所有数据表中确定至少一个第二行键所标识的至少一个数据行。
步骤109,将至少一个第二行键所标识的至少一个数据行中与至少一个查询信息匹配的数据行作为查询结果发送给终端。
示例的,当数据库中存在与查询模式匹配的目标数据列时,可以确定目标数据列对应的第二行键,和每个第二行键对应的第二表名。其中,第二行键可以是一个或多个,第二表名的数量小于或等于第二行键的数量。再根据第二表名确定对应的数据表,最后将所有数据表中全部第二行键所标识的全部数据行(第二行键与数据行一一对应)中与至少一个查询信息匹配的数据行作为查询结果发送给终端。上述的在所有数据表中确定至少一个第二行键所标识的至少一个数据行,以及在第二行键所标识的至少一个数据行中确定与至少一个查询信息匹配的数据行发送给终端的方法,与上述步骤103和104中针对第一行键标识的至少一个数据行的处理方法相同,不再赘述。
步骤110,根据至少一个第二行键、每个第二行键对应的第二表名和查询模式,更新索引表。
示例的,在步骤106中确定了第二行键、和每个第二行键对应的第二表名之后,将查询模式与第二行键、第二表名之间的对应关系存入索引表,更新索引表以便之后查询能够直接根据索引表来获取查询结果。其中,可以将每个第二行键和查询模式的对应关系、查询模式和目标数据列的对应关系,存入索引表,即索引表中包含了行键与查询模式的对应关系、查询模式与数据库中数据列的对应关系、行键与表名的对应关系,其中,行键与数据行一一对应,表名与数据表一一对应,数据表可以包含一个或多个行键。
图5是根据一示例性实施例示出的另一种数据查询方法的流程图,如图5所示,步骤109可以包括以下步骤:
步骤1091,将至少一个第二行键所标识的至少一个数据行作为目标行。
步骤1092,将目标行中与至少一个查询信息匹配的数据行作为查询结果发送给终端。
示例的,当数据库中存在与查询模式匹配的目标数据列时,可以确定目标数据列对应的第二行键,和每个第二行键对应的第二表名。其中,第二行键可以是一个或多个,第二表名的数量小于或等于第二行键的数量。再根据第二表名确定对应的数据表,最后将所有数据表中全部第二行键所标识的全部数据行(第二行键与数据行一一对应)作为目标行,再将目标行中与至少一个查询信息匹配的数据行作为查询结果发送给终端。
需要说明的是,在索引表为空时(即初次查询时),步骤102中确定不存在第一行键,执行步骤105至步骤106,查询数据库中是否存在目标数据列,如果存在,将查询模式和目标数据列对应的第二行键、第二表名存入索引表,此时索引表中已经包括了初次查询中查询指令对应的索引信息,以便之后的终端再次发送相同的查询指令时,可以直接从索引表中查找第一行键。随着查询次数的增多,索引表中所包含的查询模式也越来越多(查询次数越大,索引表中的查询模式最终会维持在一个有限数量级),因此,本实施例中,不需要预先手动建立索引表,可以在数据查询的过程中,动态建立索引表,避免了手动建立索引表带来的工作量,并且能够准确识别数据库中数据的结构(即数据列中数据的模式),提高了索引表建立和数据查询的准确度。进一步的,对于数据库的横向扩展,不需要修改索引表,可以在数据查询的过程中,自动适配索引表,提高了数据查询的效率。
可选的,该方法还可以包括以下步骤:
当数据库中不存在目标数据列时,将提示信息发送给终端,提示信息用于指示查询失败。
示例的,当步骤105中确定数据库中不存在目标数据列,那么表示数据库中没有满足查询模式的数据行,此时可以向终端发送提示信息,以提示使用终端的用户,此次查询失败。
综上所述,本公开首先接收由终端发送的查询请求,通过解析查询请求,以获得查询请求中包含至少一个查询信息对应的至少一个查询模式,再在索引表中查找是否存在与至少一个查询模式匹配的第一行键,当索引表中存在一个或多个第一行键时,在所有第一行键所标识的数据行中查找与至少一个查询信息匹配的数据行,最后将与至少一个查询信息匹配的数据行作为查询结果发送给终端。能够实现对分布式数据库的查询,提高了分布式数据库的查询效率,节省了存储资源。
图6是根据一示例性实施例示出的一种数据查询装置的框图,如图6所示,该装置200应用于服务器,包括:
解析模块201,用于解析由终端发送的查询请求,以获得查询请求中至少一个查询信息对应的至少一个查询模式。
第一查找模块202,用于在索引表中查找是否存在与至少一个查询模式匹配的第一行键。
第二查找模块203,用于当索引表中存在至少一个第一行键时,在数据库中的由至少一个第一行键所标识的数据行中,查找与至少一个查询信息匹配的数据行。
发送模块204,用于将与至少一个查询信息匹配的数据行作为查询结果发送给终端。
图7是根据一示例性实施例示出的另一种数据查询装置的框图,如图7所示,第二查找模块203包括:
第一查找子模块2031,用于当索引表中存在至少一个第一行键时,将数据库中至少一个第一行键所标识的数据行作为目标行。
第二查找子模块2032,用于在目标行中查找与至少一个查询信息匹配的数据行。
可选的,第一查找子模块2031可以用于执行以下步骤:
1)当索引表中存在至少一个第一行键时,确定每个第一行键对应的第一表名。
2)在数据库中查找每个第一表名所标识的数据表。
3)在所有数据表中确定至少一个第一行键所标识的至少一个数据行。
4)将至少一个数据行作为目标行。
图8是根据一示例性实施例示出的另一种数据查询装置的框图,如图8所示,解析模块201包括:
解析子模块2011,用于根据至少一个查询信息,获取每个查询信息匹配的正则表达式。
模式确定子模块2012,用于将每个查询信息匹配的正则表达式作为一个查询模式。
图9是根据一示例性实施例示出的另一种数据查询装置的框图,如图9所示,该装置200还包括:
数据列查找模块205,用于当索引表中不存在第一行键时,在数据库中查找与查询模式匹配的目标数据列,目标数据列中的数据所匹配的正则表达式与查询模式相同。
数据列查找模块205,还用于当数据库中存在至少一个目标数据列时,确定至少一个目标数据列对应的至少一个第二行键,和每个第二行键对应的第二表名。
数据列查找模块205,还用于在数据库中查找每个第二表名所标识的数据表。
数据列查找模块205,还用于在所有数据表中确定至少一个第二行键所标识的至少一个数据行。
发送模块204,还用于将至少一个第二行键所标识的至少一个数据行中与至少一个查询信息匹配的数据行作为查询结果发送给终端。
更新模块206,用于根据至少一个第二行键、每个第二行键对应的第二表名和查询模式,更新索引表。
图10是根据一示例性实施例示出的另一种数据查询装置的框图,如图10所示,发送模块204包括:
查询子模块2041,用于将至少一个第二行键所标识的至少一个数据行作为目标行。
发送子模块2042,用于将目标行中与至少一个查询信息匹配的数据行作为查询结果发送给终端。
可选的,发送模块203还可以用于:
当数据库中不存在目标数据列时,将提示信息发送给终端,提示信息用于指示查询失败。
可选的,更新模块205可以用于实现以下步骤:
将每个第二行键和查询模式的对应关系、查询模式和目标数据列的对应关系,存入索引表。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
综上所述,本公开首先接收由终端发送的查询请求,通过解析查询请求,以获得查询请求中包含至少一个查询信息对应的至少一个查询模式,再在索引表中查找是否存在与至少一个查询模式匹配的第一行键,当索引表中存在一个或多个第一行键时,在所有第一行键所标识的数据行中查找与至少一个查询信息匹配的数据行,最后将与至少一个查询信息匹配的数据行作为查询结果发送给终端。能够实现对分布式数据库的查询,提高了分布式数据库的查询效率,节省了存储资源。
图11是根据一示例性实施例示出的一种电子设备300的框图。例如,电子设备300可以被提供为一服务器。参照图11,电子设备300包括处理器322,其数量可以为一个或多个,以及存储器332,用于存储可由处理器322执行的计算机程序。存储器332中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器322可以被配置为执行该计算机程序,以执行上述的数据查询方法。
另外,电子设备300还可以包括电源组件326和通信组件350,该电源组件326可以被配置为执行电子设备300的电源管理,该通信组件350可以被配置为实现电子设备300的通信,例如,有线或无线通信。此外,该电子设备300还可以包括输入/输出(I/O)接口358。电子设备300可以操作基于存储在存储器332的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据查询方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器332,上述程序指令可由电子设备300的处理器322执行以完成上述的数据查询方法。
综上所述,本公开首先接收由终端发送的查询请求,通过解析查询请求,以获得查询请求中包含至少一个查询信息对应的至少一个查询模式,再在索引表中查找是否存在与至少一个查询模式匹配的第一行键,当索引表中存在一个或多个第一行键时,在所有第一行键所标识的数据行中查找与至少一个查询信息匹配的数据行,最后将与至少一个查询信息匹配的数据行作为查询结果发送给终端。能够实现对分布式数据库的查询,提高了分布式数据库的查询效率,节省了存储资源。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,本领域技术人员在考虑说明书及实践本公开后,容易想到本公开的其它实施方案,均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。同时本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。本公开并不局限于上面已经描述出的精确结构,本公开的范围仅由所附的权利要求来限制。
Claims (8)
1.一种数据查询方法,其特征在于,应用于服务器,所述方法包括:
解析由终端发送的查询请求,以获得所述查询请求中至少一个查询信息对应的至少一个查询模式;
在索引表中查找是否存在与所述至少一个查询模式匹配的第一行键;
当所述索引表中存在至少一个所述第一行键时,在数据库中的由所述至少一个所述第一行键所标识的数据行中,查找与所述至少一个查询信息匹配的数据行;
将与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端;
所述解析由终端发送的查询请求,以获得所述查询请求中至少一个查询信息对应的至少一个查询模式,包括:
根据所述至少一个查询信息,获取每个查询信息匹配的正则表达式;
将每个所述查询信息匹配的正则表达式作为一个所述查询模式;
所述方法还包括:
当所述索引表中不存在所述第一行键时,在所述数据库中查找与所述查询模式匹配的目标数据列,所述目标数据列中的数据所匹配的正则表达式与所述查询模式相同;
当所述数据库中存在至少一个所述目标数据列时,确定所述至少一个所述目标数据列对应的至少一个第二行键,和每个所述第二行键对应的第二表名;
在所述数据库中查找每个所述第二表名所标识的数据表;
在所有所述数据表中确定所述至少一个第二行键所标识的至少一个数据行;
将所述至少一个第二行键所标识的至少一个数据行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端;
根据所述至少一个第二行键、每个所述第二行键对应的第二表名和所述查询模式,更新所述索引表。
2.根据权利要求1所述的方法,其特征在于,所述在数据库中的由所述至少一个所述第一行键所标识的数据行中,查找与所述至少一个查询信息匹配的数据行,包括:
当所述索引表中存在至少一个所述第一行键时,将所述数据库中所述至少一个所述第一行键所标识的数据行作为目标行;
在所述目标行中查找与所述至少一个查询信息匹配的数据行。
3.根据权利要求2所述的方法,其特征在于,所述当所述索引表中存在至少一个所述第一行键时,将所述数据库中所述至少一个所述第一行键所标识的数据行作为目标行,包括:
当所述索引表中存在至少一个所述第一行键时,确定每个所述第一行键对应的第一表名;
在所述数据库中查找每个所述第一表名所标识的数据表;
在所有所述数据表中确定所述至少一个所述第一行键所标识的至少一个数据行;
将所述至少一个数据行作为所述目标行。
4.根据权利要求1所述的方法,其特征在于,所述将所述至少一个第二行键所标识的至少一个数据行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端,包括:
将所述至少一个第二行键所标识的至少一个数据行作为目标行;
将所述目标行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端。
5.一种数据查询装置,其特征在于,应用于服务器,所述装置包括:
解析模块,用于解析由终端发送的查询请求,以获得所述查询请求中至少一个查询信息对应的至少一个查询模式;
第一查找模块,用于在索引表中查找是否存在与所述至少一个查询模式匹配的第一行键;
第二查找发送模块,用于当所述索引表中存在至少一个所述第一行键时,在数据库中的由所述至少一个所述第一行键所标识的数据行中,查找与所述至少一个查询信息匹配的数据行;
发送模块,用于将与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端;
所述解析模块包括:
解析子模块,用于根据所述至少一个查询信息,获取每个查询信息匹配的正则表达式;
模式确定子模块,用于将每个所述查询信息匹配的正则表达式作为一个所述查询模式;
所述装置还包括:
数据列查找模块,用于当所述索引表中不存在所述第一行键时,在所述数据库中查找与所述查询模式匹配的目标数据列,所述目标数据列中的数据所匹配的正则表达式与所述查询模式相同;
所述数据列查找模块,还用于当所述数据库中存在至少一个所述目标数据列时,确定所述至少一个所述目标数据列对应的至少一个第二行键,和每个所述第二行键对应的第二表名;
所述数据列查找模块,还用于在所述数据库中查找每个所述第二表名所标识的数据表;
所述数据列查找模块,还用于在所有所述数据表中确定所述至少一个第二行键所标识的至少一个数据行;
所述发送模块,还用于将所述至少一个第二行键所标识的至少一个数据行中与所述至少一个查询信息匹配的数据行作为查询结果发送给所述终端;
更新模块,用于根据所述至少一个第二行键、每个所述第二行键对应的第二表名和所述查询模式,更新所述索引表。
6.根据权利要求5所述的装置,其特征在于,所述第二查找发送模块包括:
第一查找子模块,用于当所述索引表中存在至少一个所述第一行键时,将所述数据库中所述至少一个所述第一行键所标识的数据行作为目标行;
第二查找子模块,用于在所述目标行中查找与所述至少一个查询信息匹配的数据行。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811334227.4A CN109299110B (zh) | 2018-11-09 | 2018-11-09 | 数据查询方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811334227.4A CN109299110B (zh) | 2018-11-09 | 2018-11-09 | 数据查询方法、装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109299110A CN109299110A (zh) | 2019-02-01 |
CN109299110B true CN109299110B (zh) | 2020-09-25 |
Family
ID=65146366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811334227.4A Active CN109299110B (zh) | 2018-11-09 | 2018-11-09 | 数据查询方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299110B (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US12118009B2 (en) | 2017-07-31 | 2024-10-15 | Splunk Inc. | Supporting query languages through distributed execution of query engines |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
CN109918472A (zh) | 2019-02-27 | 2019-06-21 | 北京百度网讯科技有限公司 | 存储和查询数据的方法、装置、设备和介质 |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
CN111897840A (zh) * | 2020-08-14 | 2020-11-06 | 北京字节跳动网络技术有限公司 | 一种数据搜索方法、装置、电子设备及存储介质 |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
CN113297273B (zh) * | 2021-06-09 | 2024-03-01 | 北京百度网讯科技有限公司 | 查询元数据的方法、装置和电子设备 |
CN113688150B (zh) * | 2021-07-27 | 2024-08-13 | 珠海金山办公软件有限公司 | 一种关键字查找方法、装置、电子设备和存储介质 |
US12072939B1 (en) | 2021-07-30 | 2024-08-27 | Splunk Inc. | Federated data enrichment objects |
US12093272B1 (en) | 2022-04-29 | 2024-09-17 | Splunk Inc. | Retrieving data identifiers from queue for search of external data system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810224B (zh) * | 2012-11-15 | 2017-04-12 | 阿里巴巴集团控股有限公司 | 信息持久化和查询方法及装置 |
CN103020204B (zh) * | 2012-12-05 | 2018-09-25 | 北京普泽创智数据技术有限公司 | 一种对分布式顺序表进行多维区间查询的方法及其系统 |
CN104636389B (zh) * | 2013-11-14 | 2018-03-27 | 博雅网络游戏开发(深圳)有限公司 | 实现Hbase数据库实时查询的方法和系统 |
CN104573022A (zh) * | 2015-01-12 | 2015-04-29 | 浪潮软件股份有限公司 | 一种HBase的数据查询方法及装置 |
CN107515882B (zh) * | 2016-06-17 | 2020-12-25 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN107506464A (zh) * | 2017-08-30 | 2017-12-22 | 武汉烽火众智数字技术有限责任公司 | 一种基于ES实现HBase二级索引的方法 |
-
2018
- 2018-11-09 CN CN201811334227.4A patent/CN109299110B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109299110A (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299110B (zh) | 数据查询方法、装置、存储介质和电子设备 | |
CN107784044B (zh) | 表数据查询方法及装置 | |
CN107590214B (zh) | 搜索关键词的推荐方法、装置及电子设备 | |
CN110929125B (zh) | 搜索召回方法、装置、设备及其存储介质 | |
CN108256718B (zh) | 保单服务任务分配方法、装置、计算机设备和存储设备 | |
CN112650858B (zh) | 应急协助信息的获取方法、装置、计算机设备及介质 | |
CN103902535A (zh) | 获取联想词的方法、装置及系统 | |
CN110019444B (zh) | 一种操作请求处理方法、装置、设备及系统 | |
CN110515979B (zh) | 数据查询方法、装置、设备和存储介质 | |
US9965812B2 (en) | Generating a supplemental description of an entity | |
CN113505143B (zh) | 语句类型的转换方法、装置、存储介质及电子装置 | |
CN110737662B (zh) | 一种数据分析方法、装置、服务器及计算机存储介质 | |
CN111930891B (zh) | 基于知识图谱的检索文本扩展方法及相关装置 | |
CN111611343B (zh) | 基于知识图谱最短路径查询的搜索系统、方法及设备 | |
CN118035320B (zh) | 融合数据库的数据查询方法、装置、设备和介质 | |
CN106649806B (zh) | 一种品牌信息维护的方法 | |
CN113590756A (zh) | 信息序列生成方法、装置、终端设备和计算机可读介质 | |
CN114579580A (zh) | 存储数据的方法、查询数据的方法和装置 | |
US20140089300A1 (en) | Method and system for inputting information in mobile terminal as well as mobile terminal | |
CN116263770A (zh) | 基于数据库的业务数据存储方法、装置、终端设备及介质 | |
CN113312540A (zh) | 信息处理方法、装置、设备、系统及可读存储介质 | |
CN113157722A (zh) | 一种数据处理方法、装置、服务器、系统及存储介质 | |
CN105608122A (zh) | 一种存储电子表单数据的方法和装置 | |
CN111079027A (zh) | 用户推荐方法、装置、可读存储介质及电子设备 | |
CN114238667B (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 |