一种数据查询方法及系统转让专利

申请号 : CN201611051072.4

文献号 : CN106776809B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡佳迪

申请人 : 中国银联股份有限公司

摘要 :

本发明实施例公开了一种数据查询方法及系统,包括:接收数据查询请求后,将该数据查询请求中包含的待查询的多个索引字段对应的数据拼接成待查询字段,并在将其与掩码模板列表中的每个掩码模板进行运算得到待查询索引值后查询索引值列表,获取并返回数据查询结果。由于掩码模板列表中每个掩码模板与数据库中具有统一通配类型的一条或多条数据记录对应,因而利用待查询字段与某一掩码模板对应的一个索引值,可查询到数据库中具有同一通配类型的数据记录,无需利用将待查询字段中多个索引字段对应的通配数据进行相互组合后,逐一查询索引值,从而有效减少了查询索引值列表的次数,并提高了查询效率。

权利要求 :

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

接收数据查询请求,所述数据查询请求中包含待查询的多个索引字段对应的数据;

将所述多个索引字段对应的数据按照预设规则拼接成待查询字段;

将所述待查询字段与掩码模板列表中的每个掩码模板进行运算,得到所述每个掩码模板对应的待查询索引值;所述掩码模板列表中的每个掩码模板对应数据库存储的具有同一通配类型的一条或多条数据记录;所述掩码模板列表中的第一掩码模板是通过以下方式生成的:接收数据新增请求,所述数据新增请求中包括待新增数据记录;根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板;若确定所述掩码模板列表中不存在与所述待新增数据记录的第一掩码模板对应的掩码模板,则将所述待新增数据记录的第一掩码模板存储到掩码模板列表中;

根据所述每个掩码模版对应的待查询索引值,查询索引值列表;所述索引值列表中的索引值和所述数据库中存储的数据记录一一对应;

若确定所述索引值列表中存在与第一待查询索引值对应的目标索引值,则将所述目标索引值在数据库中对应的数据记录确定为第一掩码模板对应的目标数据记录;所述第一掩码模板为所述掩码模板列表中的任一掩码模板,所述第一待查询索引值为与所述第一掩码模板对应的待查询索引值;

根据所述掩码模板列表中的每个掩码模板对应的目标数据记录,返回所述数据查询请求的数据查询结果。

2.如权利要求1所述的方法,其特征在于,根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板,包括:将所述待新增数据记录中设置为通配的每个索引字段对应的数据均更改为十六进制数的00,将所述待新增数据记录中未设置为通配的每个索引字段对应的数据均更改为十六进制数的FF;

按照所述预设规则将所述待新增数据记录的多个索引字段对应的十六进制数00或FF进行排序,并添加十六进制标识后,得到所述第一掩码模板。

3.如权利要求1所述的方法,其特征在于,根据所述待查询字段与掩码模板列表中的每个掩码模板,得到所述每个掩码模板对应的待查询索引值,包括:将所述待查询字段与所述掩码模板列表中的每个掩码模板进行二进制与运算,得到所述每个掩码模板对应的待查询索引值。

4.如权利要求1所述的方法,其特征在于,所述方法还包括:

接收数据删除请求,所述删除请求消息中包括待删除索引值;

根据所述待删除索引值查询索引值列表,获取所述待删除索引值对应的待删除数据记录,并删除所述待删除数据记录。

5.一种数据查询系统,其特征在于,所述系统包括:

接收模块,用于接收数据查询请求,所述数据查询请求中包含待查询的多个索引字段对应的数据;所述接收模块,还用于接收数据新增请求,所述数据新增请求中包括待新增数据记录;处理模块,用于将所述多个索引字段对应的数据按照预设规则拼接成待查询字段;

将所述待查询字段与掩码模板列表中的每个掩码模板进行运算,得到所述每个掩码模板对应的待查询索引值;所述掩码模板列表中的每个掩码模板对应数据库存储的具有同一通配类型的一条或多条数据记录;所述处理模块,还用于根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板;查询模块,用于根据所述每个掩码模版对应的待查询索引值,查询索引值列表;所述索引值列表中的索引值和所述数据库中存储的数据记录一一对应;

确定模块,用于若确定所述索引值列表中存在与第一待查询索引值对应的目标索引值,则将所述目标索引值在数据库中对应的数据记录确定为第一掩码模板对应的目标数据记录;所述第一掩码模板为所述掩码模板列表中的任一掩码模板,所述第一待查询索引值为与所述第一掩码模板对应的待查询索引值;所述确定模块,还用于若确定所述掩码模板列表中不存在与所述待新增数据记录的第一掩码模板对应的掩码模板,则将所述待新增数据记录的第一掩码模板存储到掩码模板列表中;

返回模块,用于根据所述掩码模板列表中的每个掩码模板对应的目标数据记录,返回所述数据查询请求的数据查询结果。

6.如权利要求5所述的系统,其特征在于,所述处理模块具体用于:

将所述待新增数据记录中设置为通配的每个索引字段对应的数据均更改为十六进制数的00,将所述待新增数据记录中未设置为通配的每个索引字段对应的数据均更改为十六进制数的FF;

按照所述预设规则将所述待新增数据记录的多个索引字段对应的十六进制数00或FF进行排序,并添加十六进制标识后,得到所述第一掩码模板。

7.如权利要求5所述的系统,其特征在于,所述处理模块具体用于:

将所述待查询字段与所述掩码模板列表中的每个掩码模板进行二进制与运算,得到所述每个掩码模板对应的待查询索引值。

8.如权利要求5所述的系统,其特征在于,所述接收模块还用于:

接收数据删除请求,所述删除请求消息中包括待删除索引值;

所述处理模块还用于根据所述待删除索引值查询索引值列表,获取所述待删除索引值对应的待删除数据记录,并删除所述待删除数据记录。

说明书 :

一种数据查询方法及系统

技术领域

[0001] 本发明涉及数据库技术领域,尤其涉及一种数据查询方法及系统。

背景技术

[0002] 目前,计算机通常采用缓存技术把数据存储在缓存中,为了加快数据访问的速度,进一步提高应用系统的性能,缓存数据库中可以存储某些索引字段的内容可设为通配的通配数据,并可采用通配查询的方式对缓存数据库中的通配数据进行查询。
[0003] 现有技术中,通常使用查询键对数据库中的通配数据进行查询。查询键由数据库中的多个索引字段组成,使用查询键进行查询时,将查询键中多个索引字段中所有可能产生通配的情况进行组合,并根据组合的结果在缓存数据库中查询。然而,由于支持通配数据的索引字段较多,从而使得查询键中的多个索引字段中的通配数据组合后的数据量过大;且,将多个索引字段所有可能产生通配的情况进行组合后,可能导致某些组合在缓存数据库中并没有对应的数据,从而使得查询时缓存命中率较低,查询效率较差。
[0004] 综上,目前亟需一种数据查询方法,以提高数据缓存中通配数据的查询效率。

发明内容

[0005] 本发明提供一种数据查询方法及系统,用于解决现有技术中通配数据的查询效率较低的问题。
[0006] 本发明实施例提供的一种数据查询方法,包括:
[0007] 接收数据查询请求,所述数据查询请求中包含待查询的多个索引字段对应的数据;
[0008] 将所述多个索引字段对应的数据按照预设规则拼接成待查询字段;
[0009] 将所述待查询字段与掩码模板列表中的每个掩码模板进行运算,得到所述每个掩码模板对应的待查询索引值;所述掩码模板列表中的每个掩码模板对应数据库存储的具有同一通配类型的一条或多条数据记录;
[0010] 根据所述每个掩码模版对应的待查询索引值,查询索引值列表;所述索引值列表中的索引值和所述数据库中存储的数据记录一一对应;
[0011] 若确定所述索引值列表中存在与第一待查询索引值对应的目标索引值,则将所述目标索引值在数据库中对应的数据记录确定为第一掩码模板对应的目标数据记录;所述第一掩码模板为所述掩码模板列表中的任一掩码模板,所述第一待查询索引值为与所述第一掩码模板对应的待查询索引值;
[0012] 根据所述掩码模板列表中的每个掩码模板对应的目标数据记录,返回所述数据查询请求的数据查询结果。
[0013] 可选的,所述掩码模板列表中的第一掩码模板是通过以下方式生成的,所述第一掩码模板为所述掩码模板列表中的任一掩码模板:
[0014] 接收数据新增请求,所述数据新增请求中包括待新增数据记录;
[0015] 根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板;
[0016] 若确定所述掩码模板列表中不存在与所述待新增数据记录的第一掩码模板对应的掩码模板,则将所述待新增数据记录的第一掩码模板存储到掩码模板列表中。
[0017] 可选的,根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板,包括:
[0018] 将所述待新增数据记录中设置为通配的每个索引字段对应的数据均更改为十六进制数的00,将所述待新增数据记录中未设置为通配的每个索引字段对应的数据均更改为十六进制数的FF;
[0019] 按照所述预设规则将所述待新增数据记录的多个索引字段对应的十六进制数00或FF进行排序,并添加十六进制标识后,得到所述第一掩码模板。
[0020] 可选的,根据所述待查询字段与掩码模板列表中的每个掩码模板,得到所述每个掩码模板对应的待查询索引值,包括:
[0021] 将所述待查询字段与所述掩码模板列表中的每个掩码模板进行二进制与运算,得到所述每个掩码模板对应的待查询索引值。
[0022] 可选的,所述方法还包括:
[0023] 接收数据删除请求,所述删除请求消息中包括待删除索引值;
[0024] 根据所述待删除索引值查询索引值列表,获取所述待删除索引值对应的待删除数据记录,并删除所述待删除数据记录。
[0025] 本发明实施例提供的一种数据查询系统,包括:
[0026] 接收模块,用于接收数据查询请求,所述数据查询请求中包含待查询的多个索引字段对应的数据;
[0027] 处理模块,用于将所述多个索引字段对应的数据按照预设规则拼接成待查询字段;将所述待查询字段与掩码模板列表中的每个掩码模板进行运算,得到所述每个掩码模板对应的待查询索引值;所述掩码模板列表中的每个掩码模板对应数据库存储的具有同一通配类型的一条或多条数据记录;
[0028] 查询模块,用于根据所述每个掩码模版对应的待查询索引值,查询索引值列表;所述索引值列表中的索引值和所述数据库中存储的数据记录一一对应;
[0029] 确定模块,用于若确定所述索引值列表中存在与第一待查询索引值对应的目标索引值,则将所述目标索引值在数据库中对应的数据记录确定为第一掩码模板对应的目标数据记录;所述第一掩码模板为所述掩码模板列表中的任一掩码模板,所述第一待查询索引值为与所述第一掩码模板对应的待查询索引值;
[0030] 返回模块,用于根据所述掩码模板列表中的每个掩码模板对应的目标数据记录,返回所述数据查询请求的数据查询结果。
[0031] 可选的,所述接收模块,还用于接收数据新增请求,所述数据新增请求中包括待新增数据记录;
[0032] 所述处理模块,还用于根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板;
[0033] 所述确定模块,还用于若确定所述掩码模板列表中不存在与所述待新增数据记录的第一掩码模板对应的掩码模板,则将所述待新增数据记录的第一掩码模板存储到掩码模板列表中。
[0034] 可选的,所述处理模块具体用于:
[0035] 将所述待新增数据记录中设置为通配的每个索引字段对应的数据均更改为十六进制数的00,将所述待新增数据记录中未设置为通配的每个索引字段对应的数据均更改为十六进制数的FF;
[0036] 按照所述预设规则将所述待新增数据记录的多个索引字段对应的十六进制数00或FF进行排序,并添加十六进制标识后,得到所述第一掩码模板。
[0037] 可选的,所述处理模块具体用于:
[0038] 将所述待查询字段与所述掩码模板列表中的每个掩码模板进行二进制与运算,得到所述每个掩码模板对应的待查询索引值。
[0039] 可选的,所述接收模块还用于:
[0040] 接收数据删除请求,所述删除请求消息中包括待删除索引值;
[0041] 所述处理模块还用于根据所述待删除索引值查询索引值列表,获取所述待删除索引值对应的待删除数据记录,并删除所述待删除数据记录。
[0042] 本发明实施例,接收数据查询请求后,将该数据查询请求中包含的待查询的多个索引字段对应的数据按照预设规则拼接成待查询字段,将该待查询字段与掩码模板列表中的每个掩码模板进行运算,得到每个掩码模板对应的待查询索引值,根据每个掩码模板对应的待查询索引值查询索引值列表。若确定索引值列表中存在与第一待查询索引值对应的目标索引值,则将该目标索引值在数据库中对应的数据确定为该待查询索引值对应的掩码模板对应的目标数据。根据与掩码模板列表中的每个掩码模板对应的目标数据,返回数据查询结果。本发明实施例,由于掩码模板列表中每个掩码模板与数据库中具有同一通配类型的一条或多条数据记录相对应,因而利用待查询字段与某一掩码模板进行运算生成的一个索引值,就可查询到数据库中具有与该掩码模板相同通配类型的数据记录,无需利用待查询字段中支持通配的多个索引字段的数据进行相互组合,而一一生成索引值并查询,从而有效减少了待查询索引值的数量,以及利用待查询索引值查询索引值列表的次数,提高缓存的命中率,有效提高了通配数据的查询效率。

附图说明

[0043] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1为本发明实施例中的一种数据查询方法所对应的流程示意图;
[0045] 图2为本发明实施例中向数据列表中新增一条数据的方法所对应的流程示意图;
[0046] 图3为本发明实施例中删除数据列表中已有的一条数据的方法所对应的流程示意图;
[0047] 图4为本发明实施例中更改数据列表中已有的一条数据的方法所对应的流程示意图。
[0048] 图5为本发明实施例中的一种数据查询系统对应的结构示意图。

具体实施方式

[0049] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例,仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0050] 下面结合说明书附图对本发明实施例做进一步详细描述。图1为本发明实施例提供的一种数据查询方法所对应的流程示意图,如图1所示,包括以下步骤101至步骤106:
[0051] 步骤101:接收数据查询请求,所述数据查询请求中包含待查询的多个索引字段对应的数据;
[0052] 步骤102:将所述多个索引字段对应的数据按照预设规则拼接成待查询字段;
[0053] 步骤103:将所述待查询字段与掩码模板列表中的每个掩码模板进行运算,得到所述每个掩码模板对应的待查询索引值;所述掩码模板列表中的每个掩码模板对应数据库存储的具有同一通配类型的一条或多条数据记录;
[0054] 步骤104:根据所述每个掩码模版对应的待查询索引值,查询索引值列表;所述索引值列表中的索引值和所述数据库中存储的数据记录一一对应;
[0055] 步骤105:若确定所述索引值列表中存在与第一待查询索引值对应的目标索引值,则将所述目标索引值在数据库中对应的数据记录确定为第一掩码模板对应的目标数据记录;所述第一掩码模板为所述掩码模板列表中的任一掩码模板,所述第一待查询索引值为与所述第一掩码模板对应的待查询索引值;
[0056] 步骤106:根据所述掩码模板列表中的每个掩码模板对应的目标数据记录,返回所述数据查询请求的数据查询结果。
[0057] 本发明实施例,由于掩码模板列表中每个掩码模板与数据库中设置为通配的索引字段相同的一条或多条数据相对应,因而利用待查询字段与某一掩码模板进行运算生成的一个索引值,就可查询到数据库中与该掩码模板具有同一通配类型的索引字段的数据,无需利用待查询字段中支持通配的多个索引字段的数据值进行相互组合的多种可能而一一生成索引值,因而有效减少了待查询索引值的数量,以及利用待查询索引值查询索引值列表的次数,提高缓存的命中率,从而有效提高通配数据的查询效率。
[0058] 需要说明的是,上述步骤101至步骤106可以由具有数据处理功能的设备来执行,例如,可以由处理器来执行。下面以处理器为执行主体为处理器为例来进行说明。
[0059] 具体来说,数据库中的一条数据记录可包含多个字段对应的数据。其中,可将多个字段中的某些字段预先设置为索引字段,从而利用多个索引字段对应的数据,在数据库中查询目标数据记录。例如,数据库中的一条数据记录包括7个字段(如,机构、币种、角色、交易代码、交易模式、交易渠道、直联标志)对应的数据,可以将其中的3个字段(如,机构、币种、角色)预先设置为索引字段。
[0060] 步骤101中,处理器接收数据查询请求,其中该数据查询请求中包含的多个索引字段对应的数据为具体值,如索引字段“机构”对应的数据为00010000,索引字段“币种”对应的数据为344。
[0061] 步骤102中,预设规则可以为多个索引字段在数据库中存储的顺序,进而,处理器可根据多个索引字段在数据库中存储的顺序将该多个索引字段对应的数据拼接成待查询字段。
[0062] 在步骤103中,处理器可以将该待查询字段与掩码模板列表中每个掩码模板进行二进制与运算,得到每个掩码模板对应的待查询索引值。其中,掩码模板列表中的每个掩码模板与数据列表中存储的具有设为通配的索引字段相同的一条或多条数据记录相对应,也就是说,数据库中的每一条数据记录都对应一个掩码模板,而具有同一通配类型的数据记录可对应同一掩码模板。本发明实施例中,具有同一通配类型是指为通配符的索引字段相同。
[0063] 本发明实施例中,数据库中存储的数据具有多个索引字段,对任一索引字段来说,某一数据记录对应该索引字段的数据可以为具体数值,也可以通配符,例如,*或%,其中,通配符用于表示该数据对应该索引字段的数据可以为该索引字段的所有可能取值中的任一值。
[0064] 具体的,数据库中的数据记录可存储在数据列表的数据存储区,每个数据存储区用于存储数据库中的一条数据记录。而且,数据列表中的每个数据存储区还可具有一个相应的标识信息,用于表示该标识信息对应的数据存储区中存储的数据当前为有效或无效。若某一数据存储区中当前存储的数据为有效,则该数据存储区对应的标识信息为1,用于表示该数据存储区中存储的数据可以被访问或读取。若某一数据存储区中当前存储的数据为无效,则该数据存储区对应的标识信息为0,表示该数据存储区中当前存储的数据不可被访问或已被删除,可以释放该数据存储区以便用来存储新的数据记录。
[0065] 本发明实施例中,掩码模板是根据数据列表中存储的数据的多个索引字段对应的数据值生成的,且掩码模板的长度与该多个索引字段的总长度相同。
[0066] 下面以数据列表中的第一数据为例,具体介绍第一数据对应的掩码模板的生成过程,第一数据可为数据列表中存储的任一数据记录。
[0067] 具体的,若某索引字段的长度为a字节,第一数据对应该索引字段的数据为具体值,则该索引字段在第一数据的掩码模板中对应a个0xFF;若第一数据对应该索引字段的数据值设置为通配,则该索引字段在掩码模板中对应a个0x00。其中,0x用于表示该数为十六进制数,0xFF表示一个字节中的八位全为1,0x00表示一个字节中的八位全为0。
[0068] 举例来说,若数据列表中存储的数据记录具有7个索引字段,分别为机构、币种、角色、交易代码、交易模式、交易渠道、直联标志,如表1所示,7个索引字段的字段长度分别为8、3、1、3、1、2、1(单位为字节),假设第一数据对应各个索引字段的数据值分别为00010344、
840、*、*、*、07、0。其中,*表示第一数据的该索引字段设置为通配。
[0069] 表1:索引字段示例
[0070] 索引字段 机构 币种 角色 交易代码 交易模式 交易渠道 直联标志字段长度 8 3 1 3 1 2 1
第一数据 00010344 840 * * * 07 0
… … … … … … … …
[0071] 由上表可知,索引字段“机构”的字段长度为8字节,第一数据对应索引字段“机构”的数据为具体值“00010344”,则第一数据的掩码模板中该索引字段对应8个0xFF,即0xFFFFFFFFFFFFFFFF,表示该索引字段在掩码模板中表示为8个字节全为1的二进制数。索引字段“交易代码”的字段长度为3字节,第一数据对应索引字段“交易代码”的数据值设置为通配,则第一数据的掩码模板中该索引字段对应3个0x00,即0x000000,表示该索引字段在掩码模板中表示为8个字节全为0的二进制数。依次类推,可得到第一数据的掩码模板中各个索引字段对应的模板,将第一数据分别对应所有索引字段的模板按照各个索引字段的顺序拼接起来后,可得到第一数据的掩码模板为0xFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF。
[0072] 由上述内容可知,若数据列表中存储的不同的数据设置为通配的索引字段都相同,可确定这些数据将具有相同的掩码模板。而且,由于掩码模板的内容由若干个0x00和0xFF组成,根据二进制与运算规则,具体数据与掩码模板中的0x00进行与运算后,结果仍为
0x00,具体数据与掩码模板中的0xFF进行与运算后,结果为具体数据,那么将待查询字段与掩码模板进行二进制与运算,可以有效地屏蔽通配数据,高效地将待查询字段转化为索引值。
[0073] 具体的,掩码模板列表中的每个掩码模板还可具有一个与之相对应的计数器,用于统计该掩码模板在数据列表中对应的具有相同的设置为通配的掩码模板的数据记录的条数。而且,掩码模板列表中的任一掩码模板可在具有与该掩码模板对应的具有相同的设置为通配的索引字段的数据记录第一次增加在数据列表中时,根据该数据的多个索引字段对应的数据值生成。若后续增加在数据列表中的数据因设置为通配的索引字段相同而再次生成该掩码模板时,在确定掩码模板列表中已存在该掩码模板后,可对该掩码模板的计数器加一。
[0074] 具体的,本发明实施例中掩码模板列表中的各个掩码模板按照掩码模板的模板离散度由大至小的顺序排列。本发明实施例中,任一掩码模板的离散度是通过该掩码模板中的已设置为通配的各个索引字段的字段离散度计算而得。具体的,某一掩码模板的离散度等于该掩码模板中设置为通配的各个索引字段的字段离散度之积,若该掩码模板对应的数据中各个索引字段均未设置为通配,则该掩码模板的离散度为1。由于索引字段的字段离散度表示该索引字段所有可能取值的数目,因而掩码模板的离散度越大,该掩码模板可以覆盖的数据量就越多。
[0075] 以数据列表中的第一数据、第二数据、第三数据为例,具体说明掩码模板的离散度的计算过程。其中,第二数据和第三数据为区别于第一数据的其他数据,如表2所示。
[0076] 表2:索引字段的字段离散度示例
[0077]
[0078] 第一数据的掩码模板为0xFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF,其中,设置为通配的索引字段及对应的字段离散度分别为角色(字段离散度2)、交易代码(字段离散度为100)、交易模式(离散度为4),那么第一数据的掩码模板的离散度为2×100×4=800。
[0079] 同理可知,第二数据设置为通配的索引字段只有“机构”,且索引字段“机构”长度为8,字段离散度为4000,则第二数据对应的的掩码模板为0x0000000000000000FFFFFFFFFFFFFFFFFFFFFF,模板离散度为4000。第三数据的所有索引字段都为具体值,则第三数据的掩码模板为0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,模板离散度为1。
[0080] 在步骤104中,处理器根据每个掩码模板对应的待查询索引值,逐一查询索引值列表。本发明实施例中,可按照掩码模板列表中各个掩码模板的模板离散度由大到小顺序,逐一生成待查询索引值,并在索引值列表中查询。由于模板离散度越大的掩码模板,对应的数据记录中可覆盖的数据量越大,因而,优先查询掩码模板离散度大的掩码模板对应的待查询索引值,可有效提高通配数据的查询效率。
[0081] 具体的,索引值列表中的每个索引值与数据列表中存储的数据一一对应。本发明实施例中,索引值列表中的各个索引值是根据数据列表中存储的数据的多个索引字段对应的数据值得到的,具体的,若某索引字段的长度为a,某一数据对应该索引字段的数据值为具体值,那么该索引字段在该数据的索引值中的内容仍为具体值,若该数据中对应该索引字段的数据值设置为通配,那么该索引字段在该数据的索引值中的内容为a个0x00。以数据列表中的第一数据为例,假设第一数据对应多个索引字段的内容如表1所示。
[0082] 第一数据在索引字段“角色”、“交易代码”、“交易模式”中设置为通配,其它索引字段中为具体值,那么第一数据的索引值为000103448400x000x0000000x00070。
[0083] 本发明实施例中,索引值列表中的每个索引值还可具有一个对应的地址值,用于表示该索引值对应的数据在数据列表中的存储地址。其中,该地址值可以为对应数据在数据列表中的偏移量的形式,也可以为其他形式,此处不做具体限制。
[0084] 本发明实施例中,数据列表可以采用支持随机访问的数据结构,如队列。
[0085] 以多个待查询索引值中第一掩码模板对应生成的第一待查询索引值为例,在步骤105中,若确定索引值列表中存在与第一待查询索引值对应的目标索引值,则可将于目标索引值在数据列表中对应的数据确定为与该第一掩码模板对应的目标数据。若确定索引值列表中不存在与第一待查询索引值对应的目标索引值,则可确定该第一待查询索引值在数据列表中没有对应的目标数据。其中,第一掩码模板为掩码模板列表中的任一掩码模板,第一待查询索引值为第一掩码模板对应生成的待查询索引值。
[0086] 在步骤106中,处理器根据掩码模板列表中的各个掩码模板对应的各个待查询索引值查询索引值列表之后,将与掩码模板列表中的各个掩码模板对应的目标数据的总和确定为待查询字段的数据查询结果,并返回该数据查询结果。
[0087] 若待查询字段与掩码模板列表中各个掩码模板对应生成的各个待查询索引值在索引值列表中都不存在对应的目标索引值,可确定该待查询字段在数据列表中没有对应的目标数据,返回的数据查询结果为空。
[0088] 本发明实施例中,处理器可确定返回的数据查询结果为空或是在其他情况下,在数据列表中增加、删除或更改数据记录,此处不做限制。下面分别以增加、删除、更改数据记录为例进行具体介绍。
[0089] 图2为本发明实施例中向数据列表中增加一条数据记录的方法所对应的流程示意图,如图2所示,该方法包括如下步骤201-步骤205:
[0090] 步骤201:接收数据新增请求,并将所述数据新增请求中包含的待新增数据记录存储到数据列表中标识信息为无效的数据存储区中;
[0091] 步骤202:根据所述待新增数据记录中多个索引字段对应的数据,得到所述待新增数据记录的索引值,并将所述待新增数据记录的索引值存储至索引值列表中;
[0092] 步骤203:根据所述待新增数据记录中多个索引字段对应的数据,生成所述待新增数据记录的掩码模板;若确定掩码模板列表中存在与所述待新增数据记录的掩码模板相同的目标掩码模板,则将所述目标掩码模板的计数器加一;
[0093] 步骤204:若确定掩码模板列表中不存在与所述待新增数据记录的掩码模板相同的目标掩码模板,则根据掩码模板中各个索引字段的字段离散度,计算所述待新增数据记录的掩码模板的离散度,并根据所述待新增数据记录的掩码模板的离散度,将所述待新增数据记录的掩码模板插入到掩码模板列表中;
[0094] 步骤205:确定所述待新增数据记录的掩码模板已存储到掩码模板列表中后,将数据列表中存储待新增数据记录的数据存储区对应的标识信息更改为有效。
[0095] 需要说明的是,上述步骤201-步骤205仅为执行顺序的一种示例,本发明实施例对执行顺序不做具体限定,例如上述步骤202和步骤203也可以同时执行,或者,也可以先执行步骤203,再执行步骤202。
[0096] 图3为本发明实施例中,删除数据列表中已有的一条数据记录的方法所对应的流程示意图,如图3所示,删除数据列表中的数据记录包括如下步骤301-步骤305:
[0097] 步骤301:接收数据删除请求,所述数据删除请求中包含待删除数据记录的索引值;
[0098] 步骤302:根据所述待删除数据记录的索引值查询索引值列表,确定出所述待删除数据记录在数据列表中的存储地址;
[0099] 步骤303:根据所述待删除数据记录在数据列表中的存储地址,获取所述待删除数据记录,并根据所述待删除数据记录确定出所述待删除数据记录对应的掩码模板后,将数据列表中所述待删除数据记录对应的数据存储区的标识信息更改为无效;
[0100] 步骤304:将索引值列表中存储的所述待删除数据记录的索引值以及所述待删除数据记录在数据列表中的存储地址删除;
[0101] 步骤305:若确定掩码模板列表中所述待删除数据记录对应的掩码模板的计数器为大于1,则将掩码模板列表中所述待删除数据记录对应的掩码模板的计数器减1;若确定掩码模板列表中所述待删除数据记录对应的掩码模板的计数器等于1,则将掩码模板列表中所述待删除数据记录对应的掩码模板删除。
[0102] 图4为本发明实施例中,更改数据列表中已有的一条数据的方法所对应的流程示意图,如图4所示,更改数据列表中数据的内容包括如下步骤401-步骤408:
[0103] 步骤401:接收数据更改请求,所述数据更改请求中包含待更改数据记录的索引值以及更改后的目标数据记录;
[0104] 步骤402:根据所述待更改数据记录的索引值查询索引值列表,获取所述待更新数据记录在数据列表中的存储地址;
[0105] 步骤403:根据所述存储地址,获取所述待更改数据记录,并根据所述待更改的数据对应多个索引字段的数据,得到该待更改数据记录的掩码模板;
[0106] 步骤404:将所述待更改数据记录在数据列表中的数据存储区对应的标识信息更改为无效,并将目标数据存储到所述数据存储区中;
[0107] 步骤405:根据所述目标数据记录对应各个索引字段的数据值,得到所述目标数据记录的索引值,并将索引值列表中所述待更改数据记录的索引值更改为所述目标数据记录的索引值;
[0108] 步骤406:根据所述目标数据记录对应各个索引字段的数据,得到所述目标数据记录的掩码模板;若确定所述目标数据记录的掩码模板与所述待更改数据记录的掩码模板相同,则直接通过步骤408将所述数据存储区对应的标识信息更改为有效。
[0109] 步骤407:若确定所述目标数据记录的掩码模板与所述待更改数据记录的掩码模板不同,则根据所述目标数据记录的掩码模板中各个索引字段对应的字段离散度,计算所述目标数据记录的掩码模板的离散度,并在掩码模板列表中删除所述待更改数据记录的掩码模板,插入所述目标数据记录的掩码模板。
[0110] 步骤408:将所述数据存储区对应的标识信息更改为有效。
[0111] 本发明实施例还提供了一种数据查询系统,如图5所示,所述系统包括:
[0112] 接收模块501,用于接收数据查询请求,所述数据查询请求中包含待查询的多个索引字段对应的数据;
[0113] 处理模块502,用于将所述多个索引字段对应的数据按照预设规则拼接成待查询字段;将所述待查询字段与掩码模板列表中的每个掩码模板进行运算,得到所述每个掩码模板对应的待查询索引值;所述掩码模板列表中的每个掩码模板对应数据库存储的具有同一通配类型的一条或多条数据记录;
[0114] 查询模块503,用于根据所述每个掩码模版对应的待查询索引值,查询索引值列表;所述索引值列表中的索引值和所述数据库中存储的数据记录一一对应;
[0115] 确定模块504,用于若确定所述索引值列表中存在与第一待查询索引值对应的目标索引值,则将所述目标索引值在数据库中对应的数据记录确定为第一掩码模板对应的目标数据记录;所述第一掩码模板为所述掩码模板列表中的任一掩码模板,所述第一待查询索引值为与所述第一掩码模板对应的待查询索引值;
[0116] 返回模块505,用于根据所述掩码模板列表中的每个掩码模板对应的目标数据记录,返回所述数据查询请求的数据查询结果。
[0117] 可选的,所述接收模块501,还用于接收数据新增请求,所述数据新增请求中包括待新增数据记录;
[0118] 所述处理模块502,还用于根据所述待新增数据记录的多个索引字段对应的数据,生成所述待新增数据记录对应的第一掩码模板;
[0119] 所述确定模块504,还用于若确定所述掩码模板列表中不存在与所述待新增数据记录的第一掩码模板对应的掩码模板,则将所述待新增数据记录的第一掩码模板存储到掩码模板列表中。
[0120] 可选的,所述处理模块502具体用于:
[0121] 将所述待新增数据记录中设置为通配的每个索引字段对应的数据均更改为十六进制数的00,将所述待新增数据记录中未设置为通配的每个索引字段对应的数据均更改为十六进制数的FF;
[0122] 按照所述预设规则将所述待新增数据记录的多个索引字段对应的十六进制数00或FF进行排序,并添加十六进制标识后,得到所述第一掩码模板。
[0123] 可选的,所述处理模块502具体用于:
[0124] 将所述待查询字段与所述掩码模板列表中的每个掩码模板进行二进制与运算,得到所述每个掩码模板对应的待查询索引值。
[0125] 可选的,所述接收模块501还用于:
[0126] 接收数据删除请求,所述删除请求消息中包括待删除索引值;
[0127] 所述处理模块502还用于根据所述待删除索引值查询索引值列表,获取所述待删除索引值对应的待删除数据记录,并删除所述待删除数据记录。
[0128] 由上述内容可以看出:
[0129] 本发明实施例,接收数据查询请求后,将该数据查询请求中包含的待查询的多个索引字段对应的数据按照预设规则拼接成待查询字段,将该待查询字段与掩码模板列表中的每个掩码模板进行运算,得到每个掩码模板对应的待查询索引值,根据每个掩码模板对应的待查询索引值查询索引值列表。若确定索引值列表中存在与第一待查询索引值对应的目标索引值,则将该目标索引值在数据库中对应的数据确定为该待查询索引值对应的掩码模板对应的目标数据。根据与掩码模板列表中的每个掩码模板对应的目标数据,返回数据查询结果。本发明实施例,由于掩码模板列表中每个掩码模板与数据库中具有同一通配类型的一条或多条数据记录相对应,因而利用待查询字段与某一掩码模板进行运算生成的一个索引值,就可查询到数据库中具有与该掩码模板相同通配类型的数据记录,无需利用待查询字段中支持通配的多个索引字段的数据进行相互组合,而一一生成索引值并查询,从而有效减少了待查询索引值的数量,以及利用待查询索引值查询索引值列表的次数,提高缓存的命中率,有效提高了通配数据的查询效率。
[0130] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或两个以上其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0131] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或两个以上流程和/或方框图一个方框或两个以上方框中指定的功能的装置。
[0132] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或两个以上流程和/或方框图一个方框或两个以上方框中指定的功能。
[0133] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或两个以上流程和/或方框图一个方框或两个以上方框中指定的功能的步骤。
[0134] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0135] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。