一种数据库检索方法及装置与流程

文档序号:11155316阅读:274来源:国知局
一种数据库检索方法及装置与制造工艺

本发明涉及数据处理领域,尤其涉及一种数据库检索方法及装置。



背景技术:

随着互联网的爆炸式发展,目前电子商务,系统运行日志,web应用等都积累了大量的数据,其规模巨大,即使是小型企业也收集了上TB的数据量,对于这种大数据集的应用背景,传统的数据库已经无法适用。目前针对该类场景,成功的解决方案是利用分布式键值(key-value)存储系统数据库通过建立列存结构,结合压缩、分块等技术提高数据的压缩效率和存储规模。

键值存储中,数据被称作值(value),每个值对应着一个唯一的标识(key),根据唯一标识(key)可以直接定位到值(value)的位置,这个唯一标识也可被称为主键。因此,键值存储不再有类似文件系统的目录层级结构,而是完全扁平化存储,这样,相比文件存储,键值存储更容易进行容量扩展,并且由于数据读写可以直通对象层,键值存储比目录结构的存储方式的读写效率也更高。

对键值数据库中的数据进行检索时,除了可以根据主键直接检索确定出对应的值,也可以通过非主键条件,筛选出符合条件的检索结果。这种通过非主键条件检索,需要遍历整个键值数据库,在数据库存有大量数据的情况下,非主键条件检索所需的时间长,效率较低。



技术实现要素:

本发明实施例提供一种数据库检索方法及装置,用以解决键值数据库中根据非主键条件进行检索,时间长效率低的问题。

本发明实施例提供的数据库检索方法包括:

确定接收到的第一非主键条件对应的第一检索表达式;

利用检索表达式与主键集合之间的映射关系,确定所述第一检索表达式对应的第一主键集合,其中,所述第一主键集合中的主键与数据库中满足所述第一非主键条件的值对应;

根据所述第一主键集合中的主键,确定所述第一非主键条件对应的检索结果。

可选的,所述确定接收到的第一非主键条件对应的第一检索表达式之前,还包括:

将所述数据库的非主键条件组成检索表达式,所述每个检索表达式为任一非主键条件或者多个非主键条件的任意组合;

构建每个检索表达式与主键集合之间的映射关系。

可选的,所述构建每个检索表达式与主键集合之间的映射关系,包括:

针对一个检索表达式,构建所述检索表达式与第二主键集合的第一哈希表,所述第一哈希表的键为所述检索表达式中的非主键条件对应的数据;确定所述数据库中满足所述第一哈希表的键的值;将所述值对应的主键组成所述第二主键集合,所述第一哈希表的值为所述第二主键集合。

可选的,所述构建所述检索表达式与所述主键集合的第一哈希表之后,还包括:

根据所述第一哈希表的值构建第二哈希表,一个第二哈希表对应所述第一哈希表的一个键,所述第二哈希表的键为第二非主键条件对应的数据,所述第二哈希表的值为满足所述第二非主键条件的值对应的第三主键集合,以使所述检索结果根据所述第二非主键条件分类。

可选的,所述根据所述第一主键集合中的主键,确定所述第一非主键条件对应的检索结果之前,还包括:

将所述第一主键集合中的主键进行排序,以使所述检索结果按序排列。

一种数据库检索装置,包括:

条件形成模块,用于确定接收到的第一非主键条件对应的第一检索表达式;

条件解析模块,用于利用检索表达式与主键集合之间的映射关系,确定所述第一检索表达式对应的第一主键集合,其中,所述主键集合中的主键为数据库的非主键条件对应的值的主键;

结果提取模块,用于根据所述第一主键集合中的主键,确定所述第一非主键条件对应的检索结果。

可选的,还包括哈希表构建模块,用于:

将所述数据库的非主键条件组成检索表达式,所述每个检索表达式为任一非主键条件或者多个非主键条件的任意组合;

构建每个检索表达式与主键集合之间的映射关系。

可选的,所述哈希表构建模块,具体用于:

针对一个检索表达式,构建所述检索表达式与第二主键集合的第一哈希表,所述第一哈希表的键为所述检索表达式中的非主键条件对应的数据;确定所述数据库中满足所述第一哈希表的键的值;将所述值对应的主键组成所述第二主键集合,所述第一哈希表的值为所述第二主键集合。

可选的,所述哈希表构建模块,还用于:

根据所述第一哈希表的值构建第二哈希表,一个第二哈希表对应所述第一哈希表的一个键,所述第二哈希表的键为第二非主键条件对应的数据,所述第二哈希表的值为所述第二非主键条件对应的第三主键集合,以使所述检索结果根据所述第二非主键条件分类。

可选的,还包括排序模块,用于:将所述第一主键集合中的主键进行排序,以使所述检索结果按序排列。

本发明实施例中,建立检索表达式与主键集合之间的映射关系,其中,检索表达式由非主键条件组成,主键集合中的主键对应数据库中的值。用户利用非主键条件检索数据库时,将非主键条件发送给服务器。服务器根据接收到的第一非主键条件确定对应的第一检索表达式,根据检索表达式与主键集合之间的映射关系,确定第一检索表达式对应的第一主键集合。由于第一主键集合中的主键与数据库中满足第一非主键条件的值唯一对应,因此,可以根据第一主键集合中的主键,从数据库中确定出对应的值,即为满足第一非主键条件的检索结果。本发明实施例中,无需遍历整个数据库查找满足第一非主键条件的值,而是根据第一非主键条件确定对应的第一主键集合,然后根据第一主键集合中的主键从数据库中确定值的存储位置,从而确定出第一非主键条件对应的检索结果。因此,只需两步即可确定出满足第一非主键条件的检索结果,而无需遍历整个数据库,有效减少了读写磁盘的次数,耗时较短,提高了数据库的检索效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种数据库检索方法的流程图;

图2本发明实施例中第一哈希表结构的示意图;

图3为本发明实施例中第二哈希表结构的示意图;

图4为本发明的具体实施例中数据库检索方法的流程图;

图5为本发明的具体实施例中两级哈希表结构的示意图;

图6为本发明实施例中一种数据库检索装置的示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供了一种数据库检索方法,流程如图1所示,方法可以包括如下步骤:

S101、确定接收到的第一非主键条件对应的第一检索表达式。

S102、利用检索表达式与主键集合之间的映射关系,确定所述第一检索表达式对应的第一主键集合,其中,所述第一主键集合中的主键与数据库中满足所述第一非主键条件的值对应。

S103、根据所述第一主键集合中的主键,确定所述第一非主键条件对应的检索结果。

本发明实施例中,建立检索表达式与主键集合之间的映射关系,其中,检索表达式由非主键条件组成,主键集合中的主键对应数据库中的值。用户利用非主键条件检索数据库时,将非主键条件发送给服务器。服务器根据接收到的第一非主键条件确定对应的第一检索表达式,根据检索表达式与主键集合之间的映射关系,确定第一检索表达式对应的第一主键集合。由于第一主键集合中的主键与数据库中满足第一非主键条件的值唯一对应,因此,可以根据第一主键集合中的主键,从数据库中确定出对应的值,即为满足第一非主键条件的检索结果。本发明实施例中,无需遍历整个数据库查找满足第一非主键条件的值,而是根据第一非主键条件确定对应的第一主键集合,然后根据第一主键集合中的主键从数据库中确定值的存储位置,从而确定出第一非主键条件对应的检索结果。因此,只需两步即可确定出满足第一非主键条件的检索结果,而无需遍历整个数据库,有效减少了读写磁盘的次数,耗时较短,提高了数据库的检索效率。

本发明实施例中的检索表达式由一个或多个非主键条件组成,即步骤S101之前,还包括:

将所述数据库的非主键条件组成检索表达式,所述每个检索表达式为任一非主键条件或者多个非主键条件的任意组合;

构建每个检索表达式与主键集合之间的映射关系。

具体地,对数据库进行检索,可以利用主键直接定位出值的位置,也可根据非主键条件,遍历数据库确定出满足非主键条件的值。这里进行检索的非主键条件的个数可以根据检索的需要选取,一般来说,数据库存在最多可能的非主键条件,即每次检索,可以同时检索的非主键条件的个数存在最大值N,也就是说可以利用最少1个最多N个非主键条件进行检索。每次检索使用的非主键条件组成检索表达式,故每个检索表达式包括最少1个最多N个非主键条件,因此,对于数据库来说,若非主键条件的总个数为M,一次检索能使用的非主键条件个数为N,则非主键条件有种组合方式,也就是可以向数据库输入的检索表达式的种类个数为

举例来说,数据库的非主键条件为A、B、C、D、E,若数据库一次可以输入的非主键条件个数最多为3个,因此,检索表达式可以为如下组合中的一个:

A、B、C、D、E、AB、AC、AD、AE、BC、BD、BE、CD、CE、DE、ABC、ABD、ABE、ACD、ACE、ADE、BCD、BCE、BDE、CDE

由于检索表达式中的非主键条件排序前后不影响检索结果,因此非主键条件的组合方式的个数为即存在25种检索表达式。

为了便于将用户输入的非主键条件匹配相应的检索表达式,本发明实施例将每个非主键条件分配编码,并将非主键条件按照编码进行排序组成检索表达式。服务器接收到用户输入的第一非主键条件后,判断每个第一非主键条件的编码,根据编码顺序,对用户输入的第一非主键条件重新排序,得到格式化的第一检索表达式,这样便于后续确定第一检索表达式对应的第一主键集合。

例如,数据库中存储有某中学的学生信息,其中每个学生的学号是与学生唯一对应的,因此,在该数据库中学号就是主键。非主键条件为年级、性别、年龄、班级,数据库服务器将非主键条件分配编码:年级为1,性别为3,年龄为4、班级为2,按编码排序为年级、班级、性别、年龄。该数据库中规定最多可以输入的非主键条件的个数为3个,故检索表达式可以为如下:

年级、班级、性别、年龄、年级班级、年级性别、年级年龄、班级性别、班级年龄、性别年龄、年级班级性别、年级班级年龄、年级性别年龄、班级性别年龄。

若用户输入第一非主键条件为“性别”,由于只有一个非主键条件,因此无需排序,第一检索表达式即为“性别”。若用户输入第一非主键条件分别为“性别班级”,性别的编码为3,班级的编码为2,则数据库服务器将第一非主键条件重新排序为“班级性别”,即第一检索表达式为“班级性别”。若用户输入第一非主键条件为“班级年龄性别”,由于班级的编码为2,年龄的编码为4,性别的编码为3,则第一检索表达式为“班级性别年龄”。

为了加快检索表达式与主键集合之间的匹配速度,提高检索效率,本发明实施例在检索之前,建立出各个检索表达式与主键集合之间的映射关系。构建映射关系的方法包括:

针对一个检索表达式,构建所述检索表达式与第二主键集合的第一哈希表,所述第一哈希表的键为所述检索表达式中的非主键条件对应的数据;确定所述数据库中满足所述第一哈希表的键的值;将所述值对应的主键组成所述第二主键集合,所述第一哈希表的值为所述第二主键集合。

具体来说,对于一个确定的检索表达式来说,该检索表达式由非主键条件组成,每一个非主键条件在数据库中具有对应的数据,构建第一哈希表,则第一哈希表的键即为该检索表达式中各非主键条件对应的数据。从数据库中遍历出满足每一个键的值。每一个值具有唯一对应的主键,将遍历出的值的主键组成第二主键集合,则第一哈希表的值即为该第二主键集合。因此,该检索表达式与该第二主键集合相对应,可以构建出该检索表达式与第二主键集合的第一哈希表。

仍以上述某中学的学生信息为例,数据库可以接受的检索表达式有14种,从数据库中分别确定出这14种检索表达式在不同的取值下对应的主键集合。例如,对于检索表达式“年级”,包括的非主键条件为“年级”,数据库中非主键条件“年级”对应的数据有“1”、“2”、“3”,分别代表“一年级”、“二年级”、“三年级”,因此,检索表达式“年级”对应的第一哈希表的键即为“1”、“2”、“3”。确定满足第一哈希表的键的值,即为遍历数据库分别确定满足条件“年级-1”、“年级-2”、“年级-3”的学生信息。每个学生对应一个学号,因此,“学号”为学生信息的主键,将每个年级的学生学号组成第二主键集合,分别与“年级-1”、“年级-2”、“年级-3”相对应,即对应的第一哈希表的值为一年级学生的学号集合、二年级学生的学号集合、三年级学生的学号集合。如图2示出了第一哈希表的一部分内容,第一哈希表的键为年级对应的数据,第一哈希表的值为学号集合。若用户输入的非主键条件为“年级2”,则服务器将根据第一哈希表确定出主键集合为二年级学生的学号,并根据各个学生的学号从数据库中直接定位出满足检索表达式的学生信息的存储位置,从而确定需要检索的学生信息。

此外,若检索表达式中包括多个非主键条件,则将不同非主键条件对应的数据全部组合排列出,并分别对应主键集合。如图2中检索表达式为“年级性别”,则将不同的年级号以及不同的性别进行排列组合,作为第一哈希表的键,如“年级-1;性别-男”。然后从数据库中确定出满足检索条件“年级-1;性别-男”的学生的学号,组成主键集合即学号集合4。这样,当用户输入非主键条件“年级-1;性别-男”时,服务器可以直接根据第一哈希表确定出对应的主键集合“学号集合4”,然后根据“学号集合4”中学生的学号直接从数据库中定位出学生信息的存储位置,从而输出检索结果。

进一步地,为了将检索的结果进行分类,本发明实施例在第一哈希表的基础上,构建第二哈希表,包括:

根据所述第一哈希表的值构建第二哈希表,一个第二哈希表对应所述第一哈希表的一个键,所述第二哈希表的键为第二非主键条件对应的数据,所述第二哈希表的值为满足所述第二非主键条件的值对应的第三主键集合,以使所述检索结果根据所述第二非主键条件分类。

具体来说,将第一哈希表作为第一级哈希表,第二哈希表作为第二级哈希表,建立两级的哈希表结构。其中,每个第二哈希表对应一个第一哈希表的键,第二哈希表的键为第二非主键条件对应的数据,确定满足第二非主键条件的值对应的主键,将这些主键组成第三主键集合,则第二哈希表的值即为第三主键集合。这样,根据第一哈希表的检索条件得到的检索结果将按照第二非主键条件进行分类输出。如图3所示,按照不同的班级将根据年级检索到的结果进行分类。将每个第一哈希表的键对应的学号集合构建成一个第二哈希表,故每个第二哈希表对应于第一哈希表的一个键,即一个年级。第二哈希表的键为第二非主键条件的数据,则将一个年级的学号集合依据班级进行分类,每个班级的学号形成一个集合。这样,当用户检索一个年级的学生信息时,可以将学生信息按班级进行分类输出。

需要说明的是,若第二非主键条件与检索表达式中的某个第一非主键条件一致,则分类步骤没有意义,故第二非主键条件是与第一非主键条件不同的非主键条件。例如,若第一非主键条件是“年级性别”,则第二非主键条件可以是“班级”,或者可以是“年龄”;若第一非主键条件是“年级班级年龄”,则第二非主键条件只能是“性别”。

此外,本发明实施例还可以在分类的基础上,将检索结果有序排列,步骤S103之前,还包括:

将所述第一主键集合中的主键进行排序,以使所述检索结果按序排列。

具体地,可将第一主键集合中的主键,依照一定的规则进行排序。如将检索得到的学号集合的学号,按学号数字的大小进行排序,这样,依据学号检索出的学生信息也将按每个学生的学号进行先后排序。特殊地,若主键不是数字形式,无法直接排序,可以将自然数赋予每个主键,再按照自然数的大小给主键排序。

为了更清楚地理解本发明,下面以具体的实施例对上述流程进行详细描述,实施例的数据库中存储有某网络产品的注册用户信息,其主键为用户的注册号,非主键条件有用户的性别、年龄段、注册地,最多可以依照三个非主键条件组合检索,具体步骤如图4所示,包括:

S401、服务器将非主键条件组成检索表达式。这里,检索表达式可以为:“性别”、“年龄段”、“注册地”、“性别+年龄段”、“性别+注册地”、“年龄段+注册地”、“性别+年龄段+注册地”。

S402、服务器构建检索表达式与主键集合之间的第一哈希表。

S403、服务器利用各非主键条件,在第一哈希表的主键集合内构建第二哈希表,得到两级哈希表结构。具体的两级哈希表结构可以如图5所示。

S404、服务器接收用户输入的第一非主键条件和分类规则,并将第一非主键条件格式化为第一检索表达式,如用户输入的第一非主键条件为“年龄段-20至30+性别-男”,要求按照注册地分类,服务器将第一非主键条件格式化为第一检索表达式“性别-男+年龄段-20至30”。

S405、服务器确定第一检索表达式“性别-男+年龄段-20至30”对应的,并按性别分类后的主键集合为“注册号集合23”和“注册号集合24”。

S406、服务器将主键集合“注册号集合23”和“注册号集合24”中的主键按从小到大的顺序排列。

S407、服务器利用主键确定出对应的用户信息,并输出。

基于相同的技术构思,本发明实施例还提供一种数据库检索装置,如图6所示,包括:

条件形成模块61,用于确定接收到的第一非主键条件对应的第一检索表达式;

条件解析模块62,用于利用检索表达式与主键集合之间的映射关系,确定所述第一检索表达式对应的第一主键集合,其中,所述主键集合中的主键为数据库的非主键条件对应的值的主键;

结果提取模块63,用于根据所述第一主键集合中的主键,确定所述第一非主键条件对应的检索结果。

可选的,还包括哈希表构建模块64,用于:

将所述数据库的非主键条件组成检索表达式,所述每个检索表达式为任一非主键条件或者多个非主键条件的任意组合;

构建每个检索表达式与主键集合之间的映射关系。

可选的,所述哈希表构建模块64,具体用于:

针对一个检索表达式,构建所述检索表达式与第二主键集合的第一哈希表,所述第一哈希表的键为所述检索表达式中的非主键条件对应的数据;确定所述数据库中满足所述第一哈希表的键的值;将所述值对应的主键组成所述第二主键集合,所述第一哈希表的值为所述第二主键集合。

可选的,所述哈希表构建模块64,还用于:

根据所述第一哈希表的值构建第二哈希表,一个第二哈希表对应所述第一哈希表的一个键,所述第二哈希表的键为第二非主键条件对应的数据,所述第二哈希表的值为所述第二非主键条件对应的第三主键集合,以使所述检索结果根据所述第二非主键条件分类。

可选的,还包括排序模块65,用于:

将所述第一主键集合中的主键进行排序,以使所述检索结果按序排列。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1