1.本发明实施例涉及大数据处理技术领域,尤其涉及一种数据查询方法、装置、设备及存储介质。
背景技术:2.数据处理可以分为两大类,分别为联机事务处理(online transaction processing,oltp)和联机分析处理(online analytical processing,olap)。联机事务处理是将接收的用户数据立刻传送到计算中心进行处理,并在很短的时间内给出处理结果。联机事务处理系统一般采用行式存储,常见的联机事务处理系统包括电子商务系统、银行交易系统、证券系统等。
3.联机分析处理是对用户当前数据或历史数据进行分析统计,便于制定更好的决策。联机分析处理系统一般采用列式存储,常见的联机分析处理系统包括银行信用卡风险分析与预测等。
4.当联机分析处理系统接收到随机查询请求时,需要读取磁盘中相关列的所有数据,然后从相关列的所有数据中,确定查询结果。然而,上述查询方法会消耗较多的磁盘io,且查询效率较低。
技术实现要素:5.本技术实施例提供了一种数据查询方法、装置、设备及存储介质,用于提高数据查询的准确性。
6.一方面,本技术实施例提供了一种数据查询方法,该方法包括:
7.获取查询条件,所述查询条件包括第一待查询属性和相应的第一属性值,以及至少一个第二待查询属性;
8.基于所述第一属性值,从所述第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块,并获取所述第一目标原始数据块的第一编号以及所述第一属性值在所述第一目标原始数据块中的第一位置信息;
9.针对每个第二待查询属性,基于所述第一编号,从所述第二待查询属性对应的多个第二编码数据块中,确定第二目标编码数据块,以及基于所述第一位置信息,确定所述第二目标编码数据块中相应的第二位置信息;
10.基于所述至少一个第二待查询属性各自对应的第二目标编码数据块以及相应的第二位置信息,确定所述至少一个第二待查询属性各自对应的第二属性值。
11.可选地,所述基于所述第一属性值,从所述第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块之前,还包括:
12.基于第一编码字典,分别对所述第一待查询属性对应的多个第一编码数据块进行反编码,获得所述多个第一原始数据块。
13.可选地,所述第一编码字典包括多个第一编码字典块;
14.所述基于第一编码字典,分别对所述第一待查询属性对应的多个第一编码数据块进行反编码,获得所述多个第一原始数据块,包括:
15.针对所述多个第一编码数据块,分别执行以下步骤:
16.基于一个第一编码数据块对应的第一字典过滤数组,从所述多个第一编码字典块中,确定所述一个第一编码数据块对应的至少一个第一目标编码字典块;
17.采用所述至少一个第一目标编码字典块,对所述一个第一编码数据块进行反编码,获得所述一个第一编码数据块对应的第一原始数据块。
18.可选地,所述获取查询条件之前,还包括:
19.采用所述第一编码字典,对第一原始数据进行编码,获得第一编码数据;
20.按照预设逻辑块大小,将所述第一编码数据切分为所述多个第一编码数据块。
21.可选地,还包括:
22.按照预设字典块大小,将所述第一编码字典切分为所述多个第一编码字典块;
23.针对所述多个第一编码数据块,分别执行以下步骤:
24.基于一个第一编码数据块与所述多个第一编码字典块之间的编码关系,确定所述一个第一编码数据块对应的第一字典过滤数组,所述第一字典过滤数组的数组长度为所述多个第一编码字典块的个数,所述第一字典过滤数组中每个数组单元与一个第一编码字典块对应,其中,获得所述一个第一编码数据块时所采用的各个第一编码字典块对应的数组单元设置为1,其他数据单元设置为0。
25.可选地,每个第二待查询属性对应一个第二编码字典;
26.所述基于所述至少一个第二待查询属性各自对应的第二目标编码数据块以及相应的第二位置信息,确定所述至少一个第二待查询属性各自对应的第二属性值,包括:
27.针对所述至少一个第二待查询属性,分别执行以下步骤:
28.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,从所述第二目标编码数据块中获取所述一个第二待查询属性对应的目标编码数据;
29.采用所述一个第二待查询属性对应的第二编码字典,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值。
30.可选地,所述第二编码字典包括多个第二编码字典块;
31.所述采用所述一个第二待查询属性对应的第二编码字典,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值,包括:
32.基于所述第二目标编码数据块对应的第二字典过滤数组,从所述多个第二编码字典块中,确定所述第二目标编码数据块对应的至少一个第二目标编码字典块;
33.采用所述至少一个第二目标编码字典块,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值。
34.可选地,所述获取查询条件之前,还包括:
35.采用至少一个第二编码字典,分别对相应的第二原始数据进行编码,获得至少一个第二编码数据;
36.按照所述预设逻辑块大小,分别对所述至少一个第二编码数据进行切分,获得所述至少一个第二编码数据各自对应的多个第二编码数据块。
37.可选地,还包括:
38.针对所述至少一个第二编码数据,分别执行以下步骤:
39.按照所述预设字典块大小,将一个第二编码数据对应的第二编码字典切分为所述多个第二编码字典块;
40.针对所述一个第二编码数据对应的多个第二编码数据块,分别执行以下步骤:
41.基于一个第二编码数据块与所述多个第二编码字典块之间的编码关系,确定所述一个第二编码数据块对应的第二字典过滤数组,所述第二字典过滤数组的数组长度为所述多个第二编码字典块的个数,所述第二字典过滤数据中每个数组单元与一个第二编码字典块对应,其中,获得所述一个第二编码数据块时所采用的各个第二编码字典块对应的数组单元设置为1,其他数据单元设置为0。
42.一方面,本技术实施例提供了一种数据查询装置,该装置包括:
43.获取模块,用于获取查询条件,所述查询条件包括第一待查询属性和相应的第一属性值,以及至少一个第二待查询属性;
44.位置确定模块,用于基于所述第一属性值,从所述第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块,并获取所述第一目标原始数据块的第一编号以及所述第一属性值在所述第一目标原始数据块中的第一位置信息;
45.所述位置确定模块,还用于针对每个第二待查询属性,基于所述第一编号,从所述第二待查询属性对应的多个第二编码数据块中,确定第二目标编码数据块,以及基于所述第一位置信息,确定所述第二目标编码数据块中相应的第二位置信息;
46.结果获取模块,用于基于所述至少一个第二待查询属性各自对应的第二目标编码数据块以及相应的第二位置信息,确定所述至少一个第二待查询属性各自对应的第二属性值。
47.可选地,还包括反编码模块,所述反编码模块具体用于:
48.所述基于所述第一属性值,从所述第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块之前,基于第一编码字典,分别对所述第一待查询属性对应的多个第一编码数据块进行反编码,获得所述多个第一原始数据块。
49.可选地,所述第一编码字典包括多个第一编码字典块;
50.所述反编码模块具体用于:
51.针对所述多个第一编码数据块,分别执行以下步骤:
52.基于一个第一编码数据块对应的第一字典过滤数组,从所述多个第一编码字典块中,确定所述一个第一编码数据块对应的至少一个第一目标编码字典块;
53.采用所述至少一个第一目标编码字典块,对所述一个第一编码数据块进行反编码,获得所述一个第一编码数据块对应的第一原始数据块。
54.可选地,还包括存储模块,所述存储模块具体用于:
55.所述获取查询条件之前,采用所述第一编码字典,对第一原始数据进行编码,获得第一编码数据;
56.按照预设逻辑块大小,将所述第一编码数据切分为所述多个第一编码数据块。
57.可选地,所述存储模块还用于:
58.按照预设字典块大小,将所述第一编码字典切分为所述多个第一编码字典块;
59.针对所述多个第一编码数据块,分别执行以下步骤:
60.基于一个第一编码数据块与所述多个第一编码字典块之间的编码关系,确定所述一个第一编码数据块对应的第一字典过滤数组,所述第一字典过滤数组的数组长度为所述多个第一编码字典块的个数,所述第一字典过滤数组中每个数组单元与一个第一编码字典块对应,其中,获得所述一个第一编码数据块时所采用的各个第一编码字典块对应的数组单元设置为1,其他数据单元设置为0。
61.可选地,每个第二待查询属性对应一个第二编码字典;
62.所述结果获取模块具体用于:
63.针对所述至少一个第二待查询属性,分别执行以下步骤:
64.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,从所述第二目标编码数据块中获取所述一个第二待查询属性对应的目标编码数据;
65.采用所述一个第二待查询属性对应的第二编码字典,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值。
66.可选地,所述第二编码字典包括多个第二编码字典块;
67.所述结果获取模块具体用于:
68.基于所述第二目标编码数据块对应的第二字典过滤数组,从所述多个第二编码字典块中,确定所述第二目标编码数据块对应的至少一个第二目标编码字典块;
69.采用所述至少一个第二目标编码字典块,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值。
70.可选地,所述存储模块具体用于:
71.所述获取查询条件之前,采用至少一个第二编码字典,分别对相应的第二原始数据进行编码,获得至少一个第二编码数据;
72.按照所述预设逻辑块大小,分别对所述至少一个第二编码数据进行切分,获得所述至少一个第二编码数据各自对应的多个第二编码数据块。
73.可选地,所述存储模块具体用于:
74.针对所述至少一个第二编码数据,分别执行以下步骤:
75.按照所述预设字典块大小,将一个第二编码数据对应的第二编码字典切分为所述多个第二编码字典块;
76.针对所述一个第二编码数据对应的多个第二编码数据块,分别执行以下步骤:
77.基于一个第二编码数据块与所述多个第二编码字典块之间的编码关系,确定所述一个第二编码数据块对应的第二字典过滤数组,所述第二字典过滤数组的数组长度为所述多个第二编码字典块的个数,所述第二字典过滤数据中每个数组单元与一个第二编码字典块对应,其中,获得所述一个第二编码数据块时所采用的各个第二编码字典块对应的数组单元设置为1,其他数据单元设置为0。
78.一方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据查询方法的步骤。
79.一方面,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述数据查询方法的步骤。
80.在本技术实施例中,由于每次只加载第二待查询属性对应的第二目标编码数据块,而不是加载第二待查询属性对应的全部第二编码数据块,可以有效地节省磁盘io以及减少内存消耗,提高数据查询的速度。针对每个第二待查询属性,直接基于第二目标编码数据块以及相应的第二位置信息,确定每个第二待查询属性对应的第二属性值,而不是通过对第二目标编码数据块进行遍历获取第二待查询属性对应的第二属性值,可以进一步提高数据查询的速度。
附图说明
81.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
82.图1为本技术实施例提供的一种系统架构示意图;
83.图2为本技术实施例提供的一种第一编码字典的结构示意图;
84.图3为本技术实施例提供的一种获取第一编码数据块方法的流程示意图;
85.图4为本技术实施例提供的一种多个第一编码字典块的结构示意图;
86.图5为本技术实施例提供的一种第一编码数据块和第一字典过滤数组示意图;
87.图6为本技术实施例提供的一种第一编码数据块和第一字典过滤数组示意图;
88.图7为本技术实施例提供的一种第一原始数据存储结构示意图;
89.图8为本技术实施例提供的一种第二原始数据存储结构示意图;
90.图9为本技术实施例提供的一种数据查询方法的流程示意图;
91.图10为本技术实施例提供的一种多个第一原始数据块的结构示意图;
92.图11为本技术实施例提供的一种第一编码字典和多个第一编码数据块示意图;
93.图12为本技术实施例提供的一种反编码方法的流程示意图;
94.图13为本技术实施例提供的一种反编码方法的流程示意图;
95.图14为本技术实施例提供的一种反编码方法的流程示意图;
96.图15为本技术实施例提供的一种反编码方法的流程示意图;
97.图16为本技术实施例提供的一种第二编码字典和多个第二编码数据块示意图;
98.图17为本技术实施例提供的一种反编码方法的流程示意图;
99.图18为本技术实施例提供的一种反编码方法的流程示意图;
100.图19为本技术实施例提供的一种反编码方法的流程示意图;
101.图20为本技术实施例提供的一种反编码方法的流程示意图;
102.图21为本技术实施例提供的一种数据查询装置的结构示意图;
103.图22为本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
104.为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
105.参考图1,其为本技术实施例适用的一种系统架构图,该系统架构至少包括终端设备101和数据查询系统102。
106.终端设备101安装有数据查询的目标应用,该应用可以是预先安装的客户端、网页版应用或嵌入在其他应用中的小程序等。终端设备101可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。
107.数据查询系统102为目标应用的后台服务器,为目标应用提供服务。数据查询系统102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网路(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
108.终端设备101与数据查询系统102可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。
109.终端设备101既可以响应于用户的数据存储操作,也可以响应于用户的数据查询操作。
110.当终端设备101响应于用户的数据存储操作时,将原始数据发送至数据查询系统102进行数据存储,其中,原始数据包括第一属性以及第一属性对应的第一原始数据,至少一个第二属性以及至少一个第二属性各自对应的一个第二原始数据。
111.数据查询系统102根据第一原始数据,确定第一原始数据对应的第一编码字典,采用第一编码字典,对第一原始数据进行编码,获得第一编码数据。再按照预设逻辑块大小,将第一编码数据切分为多个第一编码数据块。按照第一编码数据自上而下的排列顺序,为每个第一编码数据块分配一个编号,分别为1、2、3
…
。
112.数据查询系统102按照预设字典块大小,将第一编码字典切分为多个第一编码字典块。针对多个第一编码数据块,分别执行以下步骤:
113.基于一个第一编码数据块与多个第一编码字典块之间的编码关系,确定一个第一编码数据块对应的第一字典过滤数组,其中,第一字典过滤数组的数组长度为多个第一编码字典块的个数,第一字典过滤数组中每个数组单元与一个第一编码字典块对应,获得一个第一编码数据块时所采用的各个第一编码字典块对应的数组单元设置为1,其他数组单元设置为0。
114.数据查询系统102根据每个第二原始数据,确定每个第二原始数据各自对应的第二编码字典。采用至少一个第二编码字典,分别对相应的第二原始数据进行编码,获得至少一个第二编码数据。再按照预设逻辑块大小,分别对至少一个第二编码数据进行切分,获得至少一个第二编码数据各自对应的多个第二编码数据块。针对一个第二编码数据对应的多个第二编码数据块,按照该第二编码数据自上而下的排列顺序,为每个第二编码数据块分配一个编号,分别为1、2、3
…
。
115.数据查询系统102按照预设字典块大小,将一个第二编码数据对应的第二编码字典切分为多个第二编码字典块。针对至少一个第二编码数据,分别执行以下步骤:
116.针对一个第二编码数据对应的多个第二编码数据块,分别执行以下步骤:
117.基于一个第二编码数据块与多个第二编码字典块之间的编码关系,确定一个第二编码数据块对应的第二字典过滤数组,其中,第二字典过滤数组的数组长度为多个第二编
码字典块的个数,第二字典过滤数据中每个数组单元与一个第二编码字典块对应,获得一个第二编码数据块时所采用的各个第二编码字典块对应的数组单元设置为1,其他数据单元设置为0。
118.由于计算机中逻辑页大小为4kb,其中1024行等于1kb,预设逻辑块大小可以为逻辑页大小,预设逻辑块大小也可以为逻辑页大小的整数倍,逻辑页大小也可以为预设逻辑块大小的整数倍,预设逻辑块大小还可以为其他任意值。预设字典块大小可以为逻辑页大小,预设字典块大小也可以为逻辑页大小的整数倍,逻辑页大小也可以为预设字典块大小的整数倍,预设字典块大小还可以为其他任意值。
119.举例来说,原始数据如表1所示。第一属性为姓名,第二属性为性别。第一属性(姓名)对应的第一原始数据为表2,第二属性(年龄)对应的第二原始数据为表3。
120.表1.
121.姓名年龄小李20小张21小王35小李40小郑21小李65小赵20小钱35
122.表2.
123.小李小张小王小李小郑小李小赵小钱
124.表3.
125.20213540216523
126.设定预设逻辑块大小为4行,对表2中的第一原始数据进行去重,得到第一原始数据对应的第一编码字典如图2所示。第一编码字典由多个键值对组成,每个键值对的格式为{键:值},具体包括{0:小张,1:小李,2:小王,3:小郑,4:小赵,5:小钱}。
127.如图3所示,采用图2所示的第一编码字典,对表2中的第一原始数据进行编码,获得第一编码数据。以表2中第一行记录的原始数据“小李”为例,通过原始数据“小李”查找第一编码字典,确定原始数据“小李”对应的编码数据为1。表2中其他的原始数据与原始数据“小李”的编码方式相同,此处不再赘述。
128.按照预设逻辑块大小,将第一编码数据切分为2个第一编码数据块,分别为第一编码数据块1和第一编码数据块2。第一编码数据块1对应的编码为1,第一编码数据块2对应的编码为2。
129.设定预设字典块大小为2行,将图2中的第一编码字典切分为3个第一编码字典块,分别为第一编码字典块1、第一编码字典块2和第一编码字典块3,如图4所示。
130.如图5所示,针对第一编码数据块1来说,确定第一编码数据块1对应的第一字典过滤数组1,其中,第一字典过滤数组1的数组长度为3,第一字典过滤数组1中包括3个数组单元,第一个数组单元与第一编码字典块1相对应,第二个数组单元与第一编码字典块2相对应,第三个数组单元与第一编码字典块3相对应。
131.由于第一编码数据块1中第一行记录的编码数据为1,编码数据1存储于图4中的第一编码字典块1中,因此,第一编码数据块1与第一编码字典块1之间存在编码关系,故第一字典过滤数组1中第一个数组单元设置为1。同样地,第一编码数据块1中第二行记录的编码数据为0,编码数据0存储于图4中的第一编码字典块1中,因此,第一编码数据块1与第一编码字典块1之间存在编码关系,故第一字典过滤数组1中第一个数组单元设置为1。第一编码数据块1中第三行记录的编码数据为2,编码数据2存储于图4中的第一编码字典块2中,因此,第一编码数据块1与第一编码字典块2之间存在编码关系,故第一字典过滤数组1中第二个数组单元设置为1。第一编码数据块1中第四行记录的编码数据为1,编码数据1存储于图4中的第一编码字典块1中,因此,第一编码数据块1与第一编码字典块1之间存在编码关系,故第一字典过滤数组1中第一个数组单元设置为1。
132.由于第一编码数据块1中不存在第一编码字典块3中的数据,因此,第一编码数据块1与第一编码字典块3之间不存在编码关系,故第一字典过滤数组1中第三个数组单元设置为0。
133.如图6所示,针对第一编码数据块2来说,确定第一编码数据块2对应的第一字典过滤数组2,其中,第一字典过滤数组2的数组长度为3,第一字典过滤数组2中包括3个数组单元,第一个数组单元与第一编码字典块1相对应,第二个数组单元与第一编码字典块2相对应,第三个数组单元与第一编码字典块3相对应。
134.由于第一编码数据块2中第一行记录的编码数据为3,编码数据3存储于图4中的第一编码字典块2中,因此,第一编码数据块2与第一编码字典块2之间存在编码关系,故第一字典过滤数组2中第二个数组单元设置为1。同样地,第一编码数据块2中第二行记录的编码数据为1,编码数据1存储于图4中的第一编码字典块1中,因此,第一编码数据块2与第一编码字典块1之间存在编码关系,故第一字典过滤数组2中第一个数组单元设置为1。第一编码数据块2中第三行记录的编码数据为4,编码数据4存储于图4中的第一编码字典块3中,因
此,第一编码数据块2与第一编码字典块3之间存在编码关系,故第一字典过滤数组2中第三个数组单元设置为1。第一编码数据块2中第四行记录的编码数据为5,编码数据5存储于图4中的第一编码字典块3中,因此,第一编码数据块2与第一编码字典块3之间存在编码关系,故第一字典过滤数组2中第三个数组单元设置为1。
135.最后,如图7所示,针对表2中的第一原始数据,数据查询系统102存储的是第一编码字典块1、第一编码字典块2以及第一编码字典块3,第一编码数据块1以及对应第一字典过滤数组1,第一编码数据块2以及对应第一字典过滤数组2。
136.如图8所示,针对表3中的第二原始数据执行同上操作,数据查询系统102存储的是第二编码字典块1、第二编码字典块2以及第二编码字典块3,第二编码数据块1以及对应第二字典过滤数组1,第二编码数据块2以及对应第二字典过滤数组2。
137.在本技术实施例中,数据查询系统102并不直接存储第一原始数据和至少一个第二原始数据。首先,对第一原始数据进行编码,获得第一编码数据,再将第一编码数据切分为多个第一编码数据块,由于第一编码数据块对应的存储空间比较小,可以有效地提高内存读写速度。其次,将第一编码字典切分为多个第一编码字典块,基于每个第一编码数据块与多个第一编码字典块之间的编码关系,确定每个第一编码数据块对应的第一字典过滤数组,便于后续进行数据查询时,提高查询速度。
138.对至少一个第二原始数据进行同上处理,最终的有益效果和对第一原始数据处理的有益效果相同。
139.当终端设备101响应于用户的数据查询操作时,发送查询条件至数据查询系统102。数据查询系统102接收查询条件,其中,查询条件包括第一待查询属性和相应的第一属性值,以及至少一个第二待查询属性。数据查询系统102基于第一属性值,从第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块,并获取第一目标原始数据块的第一编号以及第一属性值在第一目标原始数据块中的第一位置信息。
140.数据查询系统102针对每个第二待查询属性,基于第一编号,从第二待查询属性对应的多个第二编码数据块中,确定第二目标编码数据块,以及基于所第一位置信息,确定第二目标编码数据块中相应的第二位置信息。
141.最后,数据查询系统102基于至少一个第二待查询属性各自对应的第二目标编码数据块以及相应的第二位置信息,确定至少一个第二待查询属性各自对应的第二属性值。
142.基于图1所述的系统架构图,本技术实施例提供了一种数据查询方法的流程,如图9所示,该方法的流程由计算机设备执行,该计算机设备可以是图1所示的数据查询系统102,包括以下步骤:
143.步骤s901,获取查询条件。
144.其中,查询条件包括第一待查询属性和相应的第一属性值,以及至少一个第二待查询属性。第一属性值为第一待查询属性对应的值。
145.举例来说,针对表1,第一待查询属性为姓名,至少一个第二待查询属性为年龄,第一待查询属性对应的第一属性值为小李。
146.步骤s902,基于第一属性值,从第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块,并获取第一目标原始数据块的第一编号以及第一属性值在第一目标原始数据块中的第一位置信息。
147.具体地,基于多个第一编码字典块,对一个第一编码数据块进行反编码,获得一个第一原始数据块,一个第一编码数据块对应一个编号,对一个第一编码数据块进行反编码获得的一个第一原始数据块,同样对应该编号。
148.对第一待查询属性对应的多个第一原始数据块进行遍历,若第一原始数据块中存在第一属性值,则该第一原始数据块为第一目标原始数据块。
149.基于第一属性值,从第一待查询属性对应的多个第一原始数据块中,可以确定出一个第一目标原始数据块,也可以确定出多个第一目标原始数据块。
150.第一属性值在一个第一目标原始数据块中的第一位置信息,可以是一个,也可以是多个。第一位置信息是第一属性值在一个第一目标原始数据块中的行号。
151.举例来说,第一待查询属性为姓名,第一属性值为小李。如图10所示,第一待查询属性对应2个第一原始数据块,2个第一原始数据块分别为第一原始数据块1和第一原始数据块2。第一原始数据块1中包括4个原始数据,分别为小李、小张、小王和小李。第一原始数据块2中包括4个原始数据,分别为小郑、小李、小赵和小钱。
152.第一原始数据块1和第一原始数据块2中均存在第一属性值“小李”,则第一原始数据块1和第一原始数据块2均为第一目标原始数据块。
153.当第一目标原始数据块为第一原始数据块1时,确定第一目标原始数据块的第一编号为1,第一属性值“小李”在第一目标原始数据块中的第一位置信息为1和4。
154.当第一目标原始数据块为第一原始数据块2时,确定第一目标原始数据块的第一编号为2,第一属性值“小李”在第一目标原始数据块中的第一位置信息为2。
155.步骤s903,针对每个第二待查询属性,基于第一编号,从第二待查询属性对应的多个第二编码数据块中,确定第二目标编码数据块,以及基于第一位置信息,确定第二目标编码数据块中相应的第二位置信息。
156.具体地,从第二待查询属性对应的多个第二编码数据块中,可以确定一个第二目标编码数据块,也可以确定多个第二目标编码数据块。
157.第一目标编码数据块中的第一位置信息,即为第二目标编码数据块中的第二位置信息。
158.举例来说,第二待查询属性为年龄,第二待查询属性对应的存储数据如图8所示。
159.如图10所示,当第一目标原始数据块为第一原始数据块1时,确定第一目标原始数据块的第一编号为1,第一属性值“小李”在第一目标原始数据块中的第一位置信息为1和4。由于图8中的第二编码数据块1对应的编号为1,第二编码数据块2对应的编号为2,因此,确定的第二目标编码数据块为第二编码数据块1,第二位置信息为1和4。
160.如图10所示,当第一目标原始数据块为第一原始数据块2时,确定第一目标原始数据块的第一编号为2,第一属性值“小李”在第一目标原始数据块中的第一位置信息为2。由于图8中的第二编码数据块1对应的编号为1,第二编码数据块2对应的编号为2,因此,确定的第二目标编码数据块为第二编码数据块2,第二位置信息为2。
161.步骤s904,基于至少一个第二待查询属性各自对应的第二目标编码数据块以及相应的第二位置信息,确定至少一个第二待查询属性各自对应的第二属性值。
162.确定至少一个第二待查询属性各自对应的第二属性值,有以下两种实施方式:
163.一种可能的实施方式,针对至少一个待查询属性,分别执行以下步骤:
164.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,采用第二编码字典,确定一个第二待查询属性对应的第二属性值。第二编码字典即包括全部的第二编码字典块。
165.另一种可能的实施方式,针对至少一个待查询属性,分别执行以下步骤:
166.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,采用第二目标编码数据块对应的至少一个第二目标编码字典块,确定一个第二待查询属性对应的第二属性值。
167.举例来说,第二待查询属性为年龄,第二待查询属性对应的存储数据如图8所示。
168.第二目标编码数据块为第二编码数据块1,相应的第二位置信息为1和4时,从第二编码数据块中获取目标编码数据为0和3,同时,将第二编码字典(第二编码字典块1、第二编码字典块2和第二编码字典块3)全部加载至内存,通过查找第二编码字典,确定目标编码数据0对应的值为20,因此,获得对应的第二属性值为20。采用相同的方法,通过查找第二编码字典,确定目标编码数据3对应的值为40,因此,获得对应的第二属性值为40。
169.在本技术实施例中,由于每次只加载第二待查询属性对应的第二目标编码数据块,而不是加载第二待查询属性对应的全部第二编码数据块,可以有效地节省磁盘io以及减少内存消耗,提高数据查询的速度。针对每个第二待查询属性,直接基于第二目标编码数据块以及相应的第二位置信息,确定每个第二待查询属性对应的第二属性值,而不是通过对第二目标编码数据块进行遍历获取第二待查询属性对应的第二属性值,可以进一步提高数据查询的速度。
170.可选地,在上述步骤s902中,本技术实施例提供了两种获取多个第一原始数据块的实施方式:
171.一种可能的实施方式,第一待查询属性对应多个第一编码数据块以及第一编码字典。基于第一编码字典,分别对第一待查询属性对应的多个第一编码数据块进行反编码,获得多个第一原始数据块。
172.举例来说,如图11所示,第一待查询属性为姓名,第一待查询属性对应2个第一编码数据块和1个第一编码字典,2个第一编码数据块分别为第一编码数据块1和第一编码数据块2。第一编码字典具体包括{0:小张,1:小李,2:小王,3:小郑,4:小赵,5:小钱}。第一编码数据块1包括4个编码数据,分别为1、0、2和1,第一编码数据块2包括4个编码数据,分别为3、1、2和0。
173.如图12所示,基于第一编码字典,对第一编码数据块1进行反编码,获得第一原始数据块1。以第一编码数据块1中第一行记录的编码数据“1”为例,通过查找第一编码字典,确定编码数据“1”对应的原始数据为“小李”。第一编码数据块1中其他编码数据与编码数据“1”的反编码方式相同,此处不再赘述。
174.如图13所示,基于第一编码字典,对第一编码数据块2进行反编码,获得第一原始数据块2。以第一编码数据块2中第一行记录的编码数据“3”为例,通过查找第一编码字典,确定编码数据“3”对应的原始数据为“小郑”。第一编码数据块1中其他编码数据与编码数据“3”的反编码方式相同,此处不再赘述。
175.在本技术实施例中,针对每个第一编码数据块进行反编码,获得第一原始数据块,可以有效避免将全部的第一编码数据块全部加载进内存进行反编码,避免了较大内存存储
开销,同时节省磁盘io,提高了反编码的效率。
176.另一种可能的实施方式,第一待查询属性对应多个第一编码数据块以及第一编码字典,其中第一编码字典包括多个第一编码字典块。
177.针对多个第一编码数据块,分别执行以下步骤:
178.基于一个第一编码数据块对应的第一字典过滤数组,从多个第一编码字典块中,确定一个第一编码数据块对应的至少一个第一目标编码字典块。再采用至少一个第一目标编码字典块,对一个第一编码数据块进行反编码,获得一个第一编码数据块对应的第一原始数据块。
179.举例来说,如图7所示,第一待查询属性为姓名,第一待查询属性对应2个第一编码数据块和3个第一编码字典块,2个第一编码数据块分别为第一编码数据块1和第一编码数据块2,3个第一编码字典块分别为第一编码字典块1、第一编码字典块2和第一编码字典块3,其中,第一编码字典块1具体包括{0:小张,1:小李},第一编码字典块2具体包括{2:小王,3:小郑},第一编码字典块3具体包括{4:小赵,5:小钱}。
180.第一编码数据块1对应第一字典过滤数组1,第一编码数据块2对应第一字典过滤数组2。第一字典过滤数组1中包括3个数组单元,第一个数组单元为1,表示第一编码字典块1为第一目标编码字典块。第二个数组单元为1,表示第一编码字典块2为第一目标编码字典块。第三个数组单元为0,表示第一编码字典块3不为第一目标编码字典块。因此,第一编码数据块1对应的2个第一目标编码字典块,分别为第一编码字典块1和第一编码字典块2。
181.第一字典过滤数组2中包括3个数组单元,第一个数组单元为1,表示第一编码字典块1为第一目标编码字典块。第二个数组单元为1,表示第一编码字典块2为第一目标编码字典块。第三个数组单元为1,表示第一编码字典块3为第一目标编码字典块。因此,第一编码数据块2对应的3个第一目标编码字典块,分别为第一编码字典块1、第一编码字典块2和第一编码字典块3。
182.如图14所示,基于第一编码数据块1对应的2个第一目标编码字典块,对第一编码数据块1进行反编码,获得第一原始数据块1。以第一编码数据块1中第一行记录的编码数据“1”为例,通过查找2个第一目标编码字典块(即第一编码字典块1和第一编码字典块2),确定编码数据“1”对应的原始数据为“小李”。第一编码数据块1中其他编码数据与编码数据“1”的反编码方式相同,此处不再赘述。
183.如图15所示,基于第一编码数据块2对应的3个第一目标编码字典块,对第一编码数据块2进行反编码,获得第一原始数据块2。以第一编码数据块2中第一行记录的编码数据“3”为例,通过查找3个第一目标编码字典块(即第一编码字典块1、第一编码字典块2和第一编码字典块3),确定编码数据“3”对应的原始数据为“小郑”。第一编码数据块2中其他编码数据与编码数据“3”的反编码方式相同,此处不再赘述。
184.在本技术实施例中,确定每个第一编码数据块对应的至少一个第一目标编码字典块,基于至少一个第一目标编码字典块,对第一编码数据块进行反编码,获得第一原始数据块。由于并不是将全部的第一编码字典块加载至内存,而是每次将一个第一编码数据块以及对应的至少一个第一目标编码字典块加载进内存,进行反编码,获得第一原始数据块,可以进一步地减少较大内存存储开销,同时节省磁盘io,提高了反编码的效率。
185.可选地,在上述步骤s904中,本技术实施例提供了两种确定至少一个第二待查询
属性各自对应的第二属性值的方法:
186.一种可能的实施方式,针对至少一个第二待查询属性,分别执行以下步骤:
187.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,从第二目标编码数据块中获取一个第二待查询属性对应的目标编码数据。再采用一个第二待查询属性对应的第二编码字典,对目标编码数据进行反编码,获得一个第二待查询属性的第二属性值。
188.举例来说,如图16所示,第二待查询属性为年龄,第二待查询属性对应2个第二目标编码数据块和1个第二编码字典,2个第二目标编码数据块分别为第二编码数据块1和第二编码数据块2。第二编码字典由多个键值对组成,每个键值对的格式为{键:值},具体包括{0:20,1:21,2:35,3:40,4:65}。
189.当第二目标编码数据块为图16中的第二编码数据块1,第二位置信息为1和4时,从图16中的第二编码数据块1中获取2个目标编码数据,分别为目标编码数据1和目标编码数据2,目标编码数据1为0、目标编码数据2为3。如图17所示,通过查找第二编码字典,确定目标编码数据1对应的原始数据为20,因此,获得第二属性值1为20。通过查找第二编码字典,确定目标编码数据2对应的原始数据为40,因此,获得第二属性值2为40。
190.当第二目标编码数据块为图16中的第二编码数据块2,第二位置信息为2时,从图16中的第二编码数据块2中获取到的目标编码数据为4。如图18所示,通过查找第二编码字典,确定目标编码数据对应的原始数据为65,因此,获得第二属性值为65。
191.在本技术实施例中,由于并不是将第二待查询属性对应的全部第二编码数据块加载至内存,而是每次将第二待查询属性对应的第二目标编码数据块加载至内存,可以有效地减少内存存储开销,节省磁盘io,提高了数据查询效率。再从第二目标编码数据块中获取目标编码数据,仅仅对目标编码数据进行反编码,获得第二属性值,因此,可以进一步地提高数据查询效率。
192.另一种可能的实施方式,第二编码字典包括多个第二编码字典块,针对至少一个第二待查询属性,分别执行以下步骤:
193.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,从第二目标编码数据块中获取一个第二待查询属性对应的目标编码数据。再基于第二目标编码数据块对应的第二字典过滤数组,从多个第二编码字典块中,确定第二目标编码数据块对应的至少一个第二目标编码字典块。最后,采用至少一个第二目标编码字典块,对目标编码数据进行反编码,获得一个第二待查询属性的第二属性值。
194.举例来说,如图8所示,第二待查询属性为年龄,第二待查询属性对应2个第二目标编码数据块和3个第二编码字典块,2个第二目标编码数据块分别为第二编码数据块1和第二编码数据块2,3个第二编码字典块分别为第二编码字典块1、第二编码字典块2和第二编码字典块3,其中,第二编码字典块1具体包括{0:20,1:21}、第二编码字典块2具体包括{2:35,3:40}和第二编码字典块3具体包括{4:65}。
195.第二编码数据块1对应第二字典过滤数组1,第二编码数据块2对应第二字典过滤数组2。第二字典过滤数组1中包括3个数组单元,第一个数组单元为1,表示第二编码字典块1为第二目标编码字典块。第二个数组单元为1,表示第二编码字典块2为第二目标编码字典块。第三个数组单元为0,表示第二编码字典块3不为第二目标编码字典块。因此,第二编码
数据块1对应的2个第二目标编码字典块,分别为第二编码字典块1和第二编码字典块2。
196.当第二目标编码数据块为图8中的第二编码数据块1,第二位置信息为1和4时,从图8中的第二编码数据块1中获取2个目标编码数据,分别为目标编码数据1和目标编码数据2,目标编码数据1为0和目标编码数据2为3。如图19所示,通过查找第二编码字典块1和第二编码字典块2,确定目标编码数据1对应的原始数据为20,因此,获得第二属性值1为20。通过查找第二编码字典块1和第二编码字典块2,确定目标编码数据2对应的原始数据为40,因此,获得第二属性值2为40。
197.图8中的第二字典过滤数组2中包括3个数组单元,第一个数组单元为1,表示第二编码字典块1为第二目标编码字典块。第二个数组单元为1,表示第二编码字典块2为第二目标编码字典块。第三个数组单元为1,表示第二编码字典块3为第二目标编码字典块。因此,第二编码数据块1对应的2个第二目标编码字典块,分别为第二编码字典块1、第二编码字典块2和第二编码字典块3。
198.当第二目标编码数据块为图8中的第二编码数据块2时,第二位置信息为2,从图8中的第二编码数据块2中获取的目标编码数据为4。如图20所示,通过查找第二编码字典块1、第二编码字典块2以及第二编码字典块3,确定目标编码数据4对应的原始数据为65,因此,获得第二属性值为65。
199.在本技术实施例中,由于并不是将第二待查询属性对应的全部第二编码数据块加载至内存,而是每次将第二待查询属性对应的第二目标编码数据块加载至内存,可以有效地减少内存存储开销,节省磁盘io,提高了数据查询效率。其次,并不是将全部的第二编码字典块加载至内存,而是每次将第二目标编码数据块对应的至少一个第二目标编码字典块加载进内存,再采用至少一个第二目标编码字典块,对目标编码数据进行反编码,获得第二属性值,可以更进一步地减少内存存储开销,节省磁盘io,提高了数据查询的效率。
200.基于相同的技术构思,本技术实施例提供了一种数据查询装置,如图21所示,该数据查询装置2100包括:
201.获取模块2101,用于获取查询条件,所述查询条件包括第一待查询属性和相应的第一属性值,以及至少一个第二待查询属性;
202.位置确定模块2102,用于基于所述第一属性值,从所述第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块,并获取所述第一目标原始数据块的第一编号以及所述第一属性值在所述第一目标原始数据块中的第一位置信息;
203.所述位置确定模块2102,还用于针对每个第二待查询属性,基于所述第一编号,从所述第二待查询属性对应的多个第二编码数据块中,确定第二目标编码数据块,以及基于所述第一位置信息,确定所述第二目标编码数据块中相应的第二位置信息;
204.结果获取模块2103,用于基于所述至少一个第二待查询属性各自对应的第二目标编码数据块以及相应的第二位置信息,确定所述至少一个第二待查询属性各自对应的第二属性值。
205.可选地,还包括反编码模块2104,所述反编码模块2104具体用于:
206.所述基于所述第一属性值,从所述第一待查询属性对应的多个第一原始数据块中,确定第一目标原始数据块之前,基于第一编码字典,分别对所述第一待查询属性对应的多个第一编码数据块进行反编码,获得所述多个第一原始数据块。
207.可选地,所述第一编码字典包括多个第一编码字典块;
208.所述反编码模块2104具体用于:
209.针对所述多个第一编码数据块,分别执行以下步骤:
210.基于一个第一编码数据块对应的第一字典过滤数组,从所述多个第一编码字典块中,确定所述一个第一编码数据块对应的至少一个第一目标编码字典块;
211.采用所述至少一个第一目标编码字典块,对所述一个第一编码数据块进行反编码,获得所述一个第一编码数据块对应的第一原始数据块。
212.可选地,还包括存储模块2105,所述存储模块2105具体用于:
213.所述获取查询条件之前,采用所述第一编码字典,对第一原始数据进行编码,获得第一编码数据;
214.按照预设逻辑块大小,将所述第一编码数据切分为所述多个第一编码数据块。
215.可选地,所述存储模块2105还用于:
216.按照预设字典块大小,将所述第一编码字典切分为所述多个第一编码字典块;
217.针对所述多个第一编码数据块,分别执行以下步骤:
218.基于一个第一编码数据块与所述多个第一编码字典块之间的编码关系,确定所述一个第一编码数据块对应的第一字典过滤数组,所述第一字典过滤数组的数组长度为所述多个第一编码字典块的个数,所述第一字典过滤数组中每个数组单元与一个第一编码字典块对应,其中,获得所述一个第一编码数据块时所采用的各个第一编码字典块对应的数组单元设置为1,其他数据单元设置为0。
219.可选地,每个第二待查询属性对应一个第二编码字典;
220.所述结果获取模块2103具体用于:
221.针对所述至少一个第二待查询属性,分别执行以下步骤:
222.基于一个第二待查询属性对应的第二目标编码数据块以及相应的第二位置信息,从所述第二目标编码数据块中获取所述一个第二待查询属性对应的目标编码数据;
223.采用所述一个第二待查询属性对应的第二编码字典,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值。
224.可选地,所述第二编码字典包括多个第二编码字典块;
225.所述结果获取模块2103具体用于:
226.基于所述第二目标编码数据块对应的第二字典过滤数组,从所述多个第二编码字典块中,确定所述第二目标编码数据块对应的至少一个第二目标编码字典块;
227.采用所述至少一个第二目标编码字典块,对所述目标编码数据进行反编码,获得所述一个第二待查询属性的第二属性值。
228.可选地,所述存储模块2105具体用于:
229.所述获取查询条件之前,采用至少一个第二编码字典,分别对相应的第二原始数据进行编码,获得至少一个第二编码数据;
230.按照所述预设逻辑块大小,分别对所述至少一个第二编码数据进行切分,获得所述至少一个第二编码数据各自对应的多个第二编码数据块。
231.可选地,所述存储模块2105具体用于:
232.针对所述至少一个第二编码数据,分别执行以下步骤:
233.按照所述预设字典块大小,将一个第二编码数据对应的第二编码字典切分为所述多个第二编码字典块;
234.针对所述一个第二编码数据对应的多个第二编码数据块,分别执行以下步骤:
235.基于一个第二编码数据块与所述多个第二编码字典块之间的编码关系,确定所述一个第二编码数据块对应的第二字典过滤数组,所述第二字典过滤数组的数组长度为所述多个第二编码字典块的个数,所述第二字典过滤数据中每个数组单元与一个第二编码字典块对应,其中,获得所述一个第二编码数据块时所采用的各个第二编码字典块对应的数组单元设置为1,其他数据单元设置为0。
236.基于相同的技术构思,本技术实施例提供了一种计算机设备,计算机设备可以是终端或服务器,如图22所示,包括至少一个处理器2201,以及与至少一个处理器连接的存储器2202,本技术实施例中不限定处理器2201与存储器2202之间的具体连接介质,图22中处理器2201和存储器2202之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
237.在本技术实施例中,存储器2202存储有可被至少一个处理器2201执行的指令,至少一个处理器2201通过执行存储器2202存储的指令,可以执行上述数据查询方法中所包括的步骤。
238.其中,处理器2201是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器2202内的指令以及调用存储在存储器2202内的数据,从而进行数据查询。可选的,处理器2201可包括一个或多个处理单元,处理器2201可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器2201中。在一些实施例中,处理器2201和存储器2202可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
239.处理器2201可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
240.存储器2202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器2202可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器2202是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器2202还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
241.基于同一发明构思,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述数据查询方法的步骤。
242.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
243.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
244.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
245.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
246.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。