CN104252460B - 数据存储方法、查询方法、装置及系统 - Google Patents
数据存储方法、查询方法、装置及系统 Download PDFInfo
- Publication number
- CN104252460B CN104252460B CN201310256970.3A CN201310256970A CN104252460B CN 104252460 B CN104252460 B CN 104252460B CN 201310256970 A CN201310256970 A CN 201310256970A CN 104252460 B CN104252460 B CN 104252460B
- Authority
- CN
- China
- Prior art keywords
- data
- data tuple
- tuple
- index
- section
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
Abstract
本发明公开了一种数据存储方法、查询方法、装置及系统,属于信息安全技术领域。所述数据查询方法包括:接收第一查询请求,第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;将第一查询请求转化为第二查询请求,第二查询请求为针对数据元组的索引信息进行查询的请求;发送第二查询请求至服务器,以便服务器查询索引信息符合第二查询请求的加密后的数据元组,并反馈查询到的加密后的数据元组;接收服务器反馈的加密后的数据元组;达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性以及降低终端解密复杂度和提高数据查询效率的效果。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种数据存储方法、查询方法、装置及系统。
背景技术
随着云计算的推广与应用,越来越多的企业用户选择将数据存储到第三方企业提供的云端服务器中。然而,由于第三方企业的云端管理员对于企业用户来说并非完全可信,所以为了防止存储在云端的数据被云端管理员或者其他用户查看,企业用户通常将待存储数据加密后再存储到云端服务器中。
请参考图1,其示出了目前的一种数据存储方法所涉及的数据示意图。待存储数据通常包含至少一个数据元组,每个数据元组属于两个或者两个以上相关联的数据集中的某一个数据集。图a和图b分别示出了相关联的数据集A和数据集B,数据集A和数据集B中的每一行称之为一个数据元组,每一列称之为一个属性,如图中的“工号”、“姓名”、“工资”和“联系电话”即为属性,并且其中有一种属性“工资”被作为查询属性。也即,每个数据元组包括有若干个属性的属性值。目前的数据存储方法包括:第一,客户端根据待存储数据中的各数据元组的查询属性的属性值对待存储数据进行分段,并为得到的每个数据分段随机选择一个映射值;假设系统允许的最大分段个数为5段,则客户端根据预定分段协议将图a所示的数据集A按照如图c所示的分段方法进行数据分段,比如,查询属性“工资”的属性值属于区间“0~20K”的划分为1个数据分段,对应的映射值为15,对数据集B也可以进行类似的处理;第二,客户端对待存储数据中的每个数据元组进行加密,从而得到各数据元组对应的加密后的数据,并存储至云端服务器;第三,客户端建立加密后的数据与映射值之间的对应关系,并将该对应关系存储至云端服务器,以便云端服务器根据接收到的对应关系查询符合查询请求的数据。比如,请参考图e,其示出了图a中的待存储数据所对应的加密后的数据与映射值之间的对应关系。类似的,可以将图b所示的待存储数据根据预定分段协议并按照图d所示的分段方法进行分段,从而得到图f所示的加密后的数据与映射值的对应关系。
在实现本发明的过程中,发明人发现现有技术至少存在如下问题:
由于加密后的数据会丢失原始数据的很多特性,比如有序性和相似性,所以在数据查询时往往是通过对映射值的查询来实现对数据的查询;而每个映射值对应于一个数据分段中的多个加密后的数据,所以云端服务器查询到的数据可能包含多个加密后的数据,而在多个加密后的数据中可能只有一个数据是客户端请求的数据,所以这就导致云端服务器在返回客户端请求数据的同时也泄露了云端的其它数据,数据安全性较差;同时,由于客户端需要对接收到加密后的数据进行解密,若该加密后的数据中包含不符合查询请求的数据,就无形中加大了客户端的解密复杂度,降低了客户端的查询效率。
发明内容
为了解决现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,本发明实施例提供了一种数据存储方法、查询方法、装置及系统。所述技术方案如下:
第一方面,提供了一种存储器,所述存储器存储有加密后的至少一个数据元组以及每个数据元组的索引信息,每个数据元组包含至少一个属性的属性值,每个数据元组属于第一数据集或者第二数据集,其中:
每个数据元组的索引信息包括第一索引、第二索引和偏移值三者中的第一个或者全部三个;
所述第一索引包括所述数据元组的预定属性的属性值属于恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引、所述数据元组的预定属性的属性值属于恒小于区间Sa<<b时的索引和所述数据元组的预定属性的属性值属于恒小于区间Sb<<a时的索引中的任一种;
所述恒大于区间Sa>>b是所述第一数据集中数据元组的预定属性的属性值恒大于所述第二数据集中所有数据元组的预定属性的属性值的区间;
所述恒大于区间Sb>>a是所述第二数据集中数据元组的预定属性的属性值恒大于所述第一数据集中所有数据元组的预定属性的属性值的区间;
所述等值区间Sa=b是所述第一数据集中数据元组的预定属性的属性值与所述第二数据集中数据元组的预定属性的属性值重叠的区间,所述等值区间包括至少一个预定分段;
所述恒小于区间Sa<<b是所述第一数据集中数据元组的预定属性的属性值恒小于所述第二数据集中所有数据元组的预定属性的属性值的区间;
所述恒小于区间Sb<<a是所述第二数据集中数据元组的预定属性的属性值恒小于所述第一数据集中所有数据元组的预定属性的属性值的区间;
所述第二索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b中的预定分段时的索引;
所述偏移值包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b中的预定分段时与所述预定分段中的预定基准值之间的偏移值。
第二方面,提供了一种数据存储方法,所述数据存储方法用于终端中,所述终端用于向包括有权利要求1所述的存储器的服务器中存储数据,所述方法包括:
确定待存储的每个数据元组的索引信息;
将待存储的每个数据元组进行加密;
将加密后的所述数据元组以及所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
在第二方面的第一种可能的实现方式中,所述确定每个数据元组的索引信息,包括:
确定每个数据元组的第一索引;
若确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于所述恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于所述恒小于区间Sa<<b时的索引或者所述数据元组的预定属性的属性值属于所述恒小于区间Sb<<a时的索引,则将所述第一索引作为所述数据元组的索引信息;
若确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b时的索引,则确定所述数据元组的第二索引和偏移值,并将所述第一索引、所述第二索引和所述偏移值作为所述数据元组的索引信息。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定每个数据元组的第一索引,包括:
检测所述数据元组的预定属性的属性值属于所述数据元组所在的数据集的哪一个值域区间;所述值域区间包括所述恒大于区间Sa>>b、所述恒大于区间Sb>>a、所述等值区间Sa=b、所述恒小于区间Sa<<b和所述恒小于区间Sb<<a中的至少一种;
根据检测结果确定所述数据元组的第一索引。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定所述数据元组的第一索引之前,还包括:
根据所述第一数据集中各数据元组的预定属性的属性值的大小以及所述第二数据集中各数据元组的预定属性的属性值的大小,划分所述值域区间。
结合第二方面的第一种可能的实现方式、第二种可能的实现方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述确定所述数据元组的第二索引和偏移值,包括:
检测所述数据元组属于所述第一数据集还是属于所述第二数据集;
若检测结果为所述数据元组属于所述第一数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值axi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值ayi的差值ay,将计算得到的所述差值ay作为所述偏移值;
若检测结果为所述数据元组属于所述第二数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值byi的差值by,将计算得到的所述差值by作为所述偏移值。
结合第二方面的第一种可能的实现方式、第二种可能的实现方式、第三种可能的实现方式或者第四种可能的实现方式,在第五种可能的实现方式中,所述确定待存储的每个数据元组的索引信息之前,还包括:
将初始数据元组进行加密,并发送加密后的所述初始数据元组至服务器,以便所述服务器查询并删除所述初始数据元组;
将所述初始数据元组更新为所述待存储的数据元组;
执行所述确定待存储的每个数据元组的索引信息的步骤。
结合第二方面的第一种可能的实现方式、第二种可能的实现方式、第三种可能的实现方式、第四种可能的实现方式或者第五种可能的实现方式,在第六种可能的实现方式中,所述方法还包括:
对待删除的数据元组进行加密,并发送加密后的所述待删除的数据元组至服务器,以便所述服务器查询并删除所述待删除的数据元组。
第三方面,提供了一种数据查询方法,所述数据查询方法用于终端中,所述终端用于在包含有权利要求1所述的存储器的服务器中查询数据,所述方法包括:
接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
将所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
发送所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
接收所述服务器反馈的所述加密后的数据元组。
在第三方面的第一种可能的实现方式中,若所述第一查询请求为等值查询,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述将所述第一查询请求转化为第二查询请求,包括:
构建所述第一数据集中第一索引与所述第二数据集中第一索引之间的第一连接,所述第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
对于等值区间中的各个预定分段i,构建所述第一数据集中第二索引与所述第二数据集中第二索引之间的第二连接,所述第二连接包括:a.第二索引=axi且b.第二索引=bxi;
对于等值区间中的每个预定分段i,构建所述数据元组属于第一数据集时的偏移值ay与所述数据元组属于第二数据集时的偏移值by之间的第三连接,所述第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
将所述第一连接、所述第二连接和所述第三连接作为所述第二查询请求。
第四方面,提供了一种数据查询方法,所述数据查询方法用于包含有如权利要求1所述的存储器的服务器中,所述方法包括:
接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
查询索引信息符合所述第二查询请求的加密后的数据元组;
反馈查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
在第四方面的第一种可能的实现方式中,若所述第二查询请求是由等值查询转换成的包括第一连接、第二连接和第三连接的请求,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,
则所述查询索引信息符合所述查询请求的加密后的数据元组,包括:
根据所述第一连接查询符合第一条件的数据元组,所述第一条件为:第一索引为所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
在符合所述第一条件的数据元组中,根据所述第二连接查询符合第二条件的至少一个数据元组组合Ci,所述第二条件为:所述数据元组组合Ci中的数据元组的第二索引为axi或者byi;
在符合所述第二条件的每个数据元组组合Ci中,根据所述第三连接查询符合第三条件的至少一个数据元组子组合Di,所述第三条件为:所述数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
第五方面,提供了一种终端,所述终端于向包括有权利要求1所述的存储器的服务器中存储数据,所述终端包括:
信息确定模块,用于确定待存储的每个数据元组的索引信息;
数据加密模块,用于将待存储的每个数据元组进行加密;
信息发送模块,用于将所述数据加密模块加密后的所述数据元组以及所述信息确定模块确定的所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
在第五方面的第一种可能的实现方式中,所述信息确定模块,包括:
第一确定单元,用于确定每个数据元组的第一索引;
第二确定单元,用于若所述第一确定单元确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于所述恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于所述恒小于区间Sa<<b时的索引或者所述数据元组的预定属性的属性值属于所述恒小于区间Sb<<a时的索引,则将所述第一索引作为所述数据元组的索引信息;
第三确定单元,还用于若所述第一确定单元确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b时的索引,则确定所述数据元组的第二索引和偏移值,并将所述第一索引、所述第二索引和所述偏移值作为所述数据元组的索引信息。
结合第五方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一确定单元,包括:
区间检测子单元,用于检测所述数据元组的预定属性的属性值属于所述数据元组所在的数据集的哪一个值域区间;所述值域区间包括所述恒大于区间Sa>>b、所述恒大于区间Sb>>a、所述等值区间Sa=b、所述恒小于区间Sa<<b和所述恒小于区间Sb<<a中的至少一种;
第一确定子单元,用于根据所述区间检测子单元的检测结果确定所述数据元组的第一索引。
结合第五方面的第二种可能的实现方式,在第三种可能的实现方式中,所述信息确定模块,还包括:
区间划分单元,用于根据所述第一数据集中各数据元组的预定属性的属性值的大小以及所述第二数据集中各数据元组的预定属性的属性值的大小,划分所述值域区间。
结合第五方面的第一种可能的实现方式、第二种可能的实现方式或者第三种可能的实现方式,在第四种可能的实现方式中,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述第三确定单元,包括:
数据检测子单元,用于检测所述数据元组属于所述第一数据集还是属于所述第二数据集;
第二确定子单元,用于若所述数据检测子单元的检测结果为所述数据元组属于所述第一数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值axi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值ayi的差值ay,将计算得到的所述差值ay作为所述偏移值;
第三确定子单元,用于若所述数据检测子单元的检测结果为所述数据元组属于所述第二数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值byi的差值by,将计算得到的所述差值by作为所述偏移值。
结合第五方面的第一种可能的实现方式、第二种可能的实现方式、第三种可能的实现方式或者第四种可能的实现方式,在第五种可能的实现方式中,所述终端还包括:
第一加密模块,用于将初始数据元组进行加密;
第一发送模块,用于并发送所述第一加密模块加密后的所述初始数据元组至服务器,以便所述服务器查询并删除所述初始数据元组;
数据更新模块,用于将所述初始数据元组更新为所述待存储的数据元组;
步骤执行模块,用于执行所述确定待存储的每个数据元组的索引信息的步骤。
结合第五方面的第一种可能的实现方式、第二种可能的实现方式、第三种可能的实现方式、第四种可能的实现方式或者第五种可能的实现方式,在第六种可能的实现方式中,所述终端还包括:
第二加密模块,用于对待删除的数据元组进行加密;
第二发送模块,用于发送所述第二加密模块加密后的所述待删除的数据元组至服务器,以便所述服务器查询并删除所述待删除的数据元组。
第六方面,提供了一种终端,所述终端用于在包含有权利要求1所述的存储器的服务器中查询数据,所述终端包括:
请求接收模块,用于接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
请求转化模块,用于将所述请求接收模块接收到的所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
请求发送模块,用于发送所述请求转化模块转化得到的所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
数据接收模块,用于接收所述服务器反馈的所述加密后的数据元组。
在第六方面的第一种可能的实现方式中,若所述第一查询请求为等值查询,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述请求转化模块,包括:
第一构建单元,用于构建所述第一数据集中第一索引与所述第二数据集中第一索引之间的第一连接,所述第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
第二构建单元,用于对于等值区间中的各个预定分段i,构建所述第一数据集中第二索引与所述第二数据集中第二索引之间的第二连接,所述第二连接包括:a.第二索引=axi且b.第二索引=bxi;
第三构建单元,用于对于等值区间中的每个预定分段i,构建所述数据元组属于第一数据集时的偏移值ay与所述数据元组属于第二数据集时的偏移值by之间的第三连接,所述第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
请求生成单元,用于将所述第一连接、所述第二连接和所述第三连接作为所述第二查询请求。
第七方面,提供了一种数据查询装置,其特征在于,所述装置用于包含有如权利要求1所述的存储器的服务器中,所述数据查询装置,包括:
请求接收模块,用于接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
数据查询模块,用于查询索引信息符合所述查询请求的加密后的数据元组;
数据反馈模块,用于反馈所述数据查询模块查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
在第七方面的第一种可能的实现方式中,若所述第二查询请求是由等值查询转换成的包括第一连接、第二连接和第三连接的请求,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述数据查询模块,包括:
第一查询单元,用于根据所述第一连接查询符合第一条件的数据元组,所述第一条件为:第一索引为所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
第二查询单元,用于在符合所述第一条件的数据元组中,根据所述第二连接查询符合第二条件的至少一个数据元组组合Ci,所述第二条件为:所述数据元组组合Ci中的数据元组的第二索引为axi或者byi;
第三查询单元,用于在符合所述第二条件的每个数据元组组合Ci中,根据所述第三连接查询符合第三条件的至少一个数据元组子组合Di,所述第三条件为:所述数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
第八方面,提供了一种服务器,所述服务器包括第七方面所述的数据查询装置。
第九方面,提供了一种数据查询系统,所述数据查询系统包括第五方面所述的终端、第六方面所述的终端和第八方面所述的服务器。
本发明实施例提供的技术方案的有益效果是:
通过接收针对数据元组的预定属性的属性值进行查询的第一查询请求,将第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,使得服务器查询并反馈索引信息符合第二查询请求的加密后的数据元组,相应的终端接收服务器反馈的加密后的数据元组;其中,索引信息包括第一索引、第二索引和偏移值,索引信息与数据元组一一对应,也即根据索引信息可以唯一查询到一个数据元组,所以本发明实施例解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性以及降低终端解密复杂度和提高数据查询效率的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有的一种数据存储方法所涉及的数据示意图;
图2是本发明实施例二提供的数据存储方法的方法流程图;
图3是本发明实施例三提供的数据存储方法的方法流程图;
图4是本发明实施例三提供的两个数据集的值域关系的示意图;
图5是本发明实施例三提供的数据存储方法所涉及的数据示意图;
图6是本发明实施例四提供的数据查询方法的方法流程图;
图7是本发明实施例五提供的数据查询方法的方法流程图;
图8是本发明实施例六提供的终端的结构方框图;
图9是本发明实施例七提供的终端的结构方框图;
图10是本发明实施例七提供的第一确定单元的结构方框图;
图11是本发明实施例七提供的信息确定模块的结构方框图;
图12是本发明实施例七提供的第三确定单元的结构方框图;
图13是本发明实施例七提供的终端的另一结构方框图;
图14是本发明实施例七提供的终端的再一的结构方框图;
图15是本发明实施例八提供的终端的结构方框图;
图16是本发明实施例九提供的终端的结构方框图;
图17是本发明实施例十提供的数据查询装置的结构方框图;
图18是本发明实施例十一提供的数据查询装置的结构方框图;
图19是本发明实施例十二提供的终端的结构方框图;
图20是本发明实施例十四提供的终端的结构方框图;
图21是本发明实施例十六提供的数据查询装置的结构方框图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了便于描述,首先对现有的数据查询方式进行详细描述。目前,常见的数据查询方式包括数值查询和连接查询。其中,
数值查询是指对一个数据集中数据元组的预定属性的属性值的查询,可以表示为:预定属性的属性值op预定值,其中,op可以包括‘<’、‘>’、‘≥’、‘≤’和‘=’中的任一种。比如,当需要在一个部门的工资表中查询工资为5000的员工有哪些时,可以通过数值查询‘工资=5000’来实现。
连接查询是用于建立两个相关数据集之间连接的、对于预定属性的属性值的查询,其中,两个相关数据集至少具有一个相同的预定属性;设两个相关数据集分别为a和b,则连接查询请求可以表示为:a.预定属性的属性值op b.预定属性的属性值,其中,op可以包括‘<’、‘>’、‘≥’、‘≤’和‘=’中的任一种。比如,需要查询人事部和后勤管理部工资相同的员工有哪些时,就可以通过连接查询‘a.工资=b.工资’来实现;类似的,当需要查询人事部工资高于后勤管理部的员工有哪些时,即可通过连接查询‘a.工资>b.工资’来实现。
实施例一
本实施例提供了一种存储器,该存储器存储有加密后的至少一个数据元组以及每个数据元组的索引信息,每个数据元组包含至少一个属性的属性值,每个数据元组属于第一数据集或者第二数据集,其中:
每个数据元组的索引信息包括第一索引、第二索引和偏移值三者中的第一个或者全部三个;
第一索引包括数据元组的预定属性的属性值属于恒大于区间Sa>>b时的索引、数据元组的预定属性的属性值属于恒大于区间Sb>>a时的索引、数据元组的预定属性的属性值属于等值区间Sa=b时的索引、数据元组的预定属性的属性值属于恒小于区间Sa<<b时的索引和数据元组的预定属性的属性值属于恒小于区间Sb<<a时的索引中的任一种;
恒大于区间Sa>>b是第一数据集中数据元组的预定属性的属性值恒大于第二数据集中所有数据元组的预定属性的属性值的区间;
恒大于区间Sb>>a是第二数据集中数据元组的预定属性的属性值恒大于第一数据集中所有数据元组的预定属性的属性值的区间;
等值区间Sa=b是第一数据集中数据元组的预定属性的属性值与第二数据集中数据元组的预定属性的属性值重叠的区间,等值区间包括至少一个预定分段;
恒小于区间Sa<<b是第一数据集中数据元组的预定属性的属性值恒小于第二数据集中所有数据元组的预定属性的属性值的区间;
恒小于区间Sb<<a是第二数据集中数据元组的预定属性的属性值恒小于第一数据集中所有数据元组的预定属性的属性值的区间;
第二索引包括数据元组的预定属性的属性值属于等值区间Sa=b中的预定分段时的索引;
偏移值包括数据元组的预定属性的属性值属于等值区间Sa=b中的预定分段时与预定分段中的预定基准值之间的偏移值。
需要补充说明的是,本实施例中的第一数据集中的各数据元组以及第二数据集中的各数据元组至少具有一个相同的预定属性;从而终端可以通过两个数据集中的预定属性来建立第一数据集中的数据元组和第二数据集中的数据元组之间的连接。
综上所述,本实施例提供的存储器,通过存储加密后的至少一个数据元组以及每个数据元组的索引信息,其中,每个数据元组的索引信息包括第一索引、第二索引和偏移值中的第一个或者全部三个,从而使得终端在数据查询时,可以根据存储器中与每个数据元组一一对应的索引信息来确定需要查询的数据元组,也即服务器返回的数据都是终端请求查询的数据,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性以及降低终端解密复杂度和提高数据查询效率的效果。
实施例二
请参考图2,其示出了本发明实施例二提供的数据存储方法的方法流程图,该数据存储方法用于向包含有实施例一提供的存储器的服务器中存储数据,该数据存储方法包括:
步骤201,终端确定待存储的每个数据元组的索引信息;
其中,索引信息包括包括第一索引、第二索引和偏移值中的第一个或者全部三个。
步骤202,终端将待存储的每个数据元组进行加密;
步骤203,终端将加密后的数据元组以及数据元组的索引信息发送至服务器;
步骤204,服务器接收并存储加密后的数据元组以及数据元组的索引信息。
综上所述,本实施例提供的数据存储方法,通过确定待存储的每个数据元组的索引信息,将待存储的每个数据元组进行加密,并将加密后的数据元组以及数据元组的索引信息发送至服务器,使得服务器接收并存储加密后的数据元组以及数据元组的索引信息;从而在终端需要进行数据查询时,服务器可以根据终端发送的针对索引信息进行查询的查询请求来准确的查询到符合查询请求的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例三
请参考图3,其示出了本发明实施例三提供的数据存储方法的方法流程图,该数据存储方法用于向包含有实施例一提供的存储器的服务器中存储数据,该数据存储方法包括:
步骤301,终端根据第一数据集中各数据元组的预定属性的属性值的大小以及第二数据集中各数据元组的预定属性的属性值的大小,划分值域区间;
本实施例以服务器为第三方企业提供的云端服务器为例,在终端需要存储数据元组至云端服务器时,终端可以先根据第一数据集中各数据元组的预定属性的属性值的大小以及第二数据集中各数据元组的预定属性的属性值的大小,确定两个数据集的值域区间。其中,值域区间包括恒大于区间Sa>>b、恒大于区间Sb>>a、等值区间Sa=b、恒小于区间Sa<<b和恒小于区间Sb<<a中的至少一种。终端划分值域区间的步骤可以具体包括:
第一,终端可以确定第一数据集的各数据元组中预定属性的属性值的最大值和最小值与第二数据集的各数据元组的预定属性的属性值的最大值和最小值之间的值域关系;
其中,值域关系包括分离关系、交叉关系、包含关系和重叠关系中的任一种,具体请参考图4。并且本实施例以第一数据集中各数据元组的预定属性的属性值的最小值小于等于第二数据集中各数据元组的预定属性的属性值的最小值为例。其具体步骤可以包括:
终端检测第一数据集中各数据元组的预定属性的属性值的最大值是否大于第二数据集中各数据元组的预定属性的属性值的最小值;
若检测结果为不大于,则确定第一数据集的各数据元组的预定属性的属性值与第二数据集的各数据元组的预定属性的属性值之间的值域关系为分离关系;
若检测结果为大于,则检测第一数据集中各数据元组的预定属性的属性值的最大值是否大于第二数据集中各数据元组的预定属性的属性值的最大值;
若检测结果为大于,则确定第一数据集的各数据元组的预定属性的属性值与第二数据集的各数据元组的预定属性的属性值之间的值域关系为包含关系;
若检测结果为小于,则确定第一数据集的各数据元组的预定属性的属性值与第二数据集的各数据元组的预定属性的属性值之间的值域关系为交叉关系;
若检测结果为等于,则检测第一数据集中各数据元组的预定属性的属性值的最小值是否等于第二数据集中各数据元组的预定属性的属性值的最小值;
若检测结果为等于,则确定第一数据集的各数据元组的预定属性的属性值与第二数据集的各数据元组的预定属性的属性值之间的值域关系为重叠关系;
若检测结果为不等于,则确定第一数据集的各数据元组的预定属性的属性值与第二数据集的各数据元组的预定属性的属性值之间的值域关系为交叉关系。
第二,终端可以根据值域关系划分值域区间。
具体的,若确定的值域关系包括分离关系,则终端可以将第一数据集中从预定属性的属性值的最小值到最大值之间的区间作为第一数据集的恒小于区间Sa<<b;将第二数据集中从预定属性的属性值的最小值到最大值之间的区间作为第二数据集的恒大于区间Sb>>a,详细请参考图4中的a图;
若确定的值域关系包括交叉关系,则终端可以将第一数据集中从预定属性的属性值的最小值至第二数据集中预定属性的属性值的最小值之间区间作为第一数据集的恒小于区间Sa<<b;将第一数据集中预定属性的属性值与第二数据集中数据元组的预定属性的属性值重叠的区间作为第一数据集的等值区间Sa=b和第二数据集的等值区间Sa=b;将第二数据集中从第一数据集的预定属性的属性值的最大值至第二数据集的预定属性的属性值的最大值之间的区间作为第二数据集的恒大于区间Sb>>a,详细请参考图4中的b图;
若确定的值域关系为包含关系,则终端可以将第一数据集中从预定属性的属性值的最小值至第二数据集中预定属性的属性值的最小值之间区间作为第一数据集的恒小于区间Sa<<b;将第一数据集中预定属性的属性值与第二数据集中数据元组的预定属性的属性值重叠的区间作为第一数据集的等值区间Sa=b和第二数据集的等值区间Sa=b;将第一数据集中从第二数据集的预定属性的属性值的最大值至第一数据集的预定属性的属性值的最大值之间的区间作为第一数据集的恒大于区间Sa>>b,详细请参考图4中的c图;
若确定的值域关系为重叠关系,则终端可以将重叠的部分作为第一数据集的等值区间Sa=b和第二数据集的等值区间Sa=b,详细请参考图4中的d图。
需要说明的是,本实施例只是以两个数据集中各数据元组的预定属性的属性值的最小值较小的数据集作为第一数据集为例,在实际实现时,也可以将预定属性的属性值的最小值较小的数据集作为第二数据集,其值域区间的划分方法与上述划分方法类似,只是上述划分得到的恒大于区间Sa>>b变为恒大于区间Sb>>a;恒小于区间Sa<<b变为恒小于区间Sb<<a,本实施例在此不再赘述。
步骤302,终端确定每个数据元组的第一索引;
在终端对数据集划分值域区间之后,终端可以确定每个数据元组的第一索引。具体的,终端可以根据每个数据元组的预定属性的属性值确定每个数据元组的第一索引。其具体步骤可以包括:
第一,检测数据元组的预定属性的属性值属于数据元组所在的数据集的哪一个值域区间;
具体的,由于每一个值域区间对应于预定属性的属性值的取值范围,所以终端可以根据数据元组的预定属性的属性值的大小来检测数据元组的预定属性的属性值属于数据元组所在的数据集的哪一个值域区间。其中,值域区间包括恒大于区间Sa>>b、恒大于区间Sb>>a、等值区间Sa=b、恒小于区间Sa<<b和恒小于区间Sb<<a中的至少一种。当数据元组属于第一数据集时,值域区间包括恒大于区间Sa>>b、等值区间Sa=b和恒小于区间Sa<<b;当数据元组属于第二数据集时,值域区间包括恒大于区间Sb>>a、等值区间Sa=b和恒小于区间Sb<<a,本实施例在此不再赘述。
第二,根据检测结果确定数据元组的第一索引。
当终端检测到数据元组的预定属性的属性值属于所在数据集的恒大于区间Sa>>b,则确定数据元组的第一索引包括数据元组的预定属性的属性值属于恒大于区间Sa>>b时的索引;
当终端检测到数据元组的预定属性的属性值属于所在数据集的恒小于区间Sa<<b,则确定数据元组的第一索引包括数据元组的预定属性的属性值属于恒小于区间Sa<<b时的索引;
当终端检测到数据元组的预定属性的属性值属于所在数据集的等值区间Sa=b,则确定数据元组的第一索引包括数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
当终端检测到数据元组的预定属性的属性值属于所在数据集的恒大于区间Sb>>a,则确定数据元组的第一索引包括数据元组的预定属性的属性值属于恒大于区间Sb>>a时的索引;
当终端检测到数据元组的预定属性的属性值属于所在数据集的恒小于区间Sb<<a,则确定数据元组的第一索引包括数据元组的预定属性的属性值属于恒小于区间Sb<<a时的索引;
当终端检测到数据元组的预定属性的属性值属于所在数据集的等值区间Sa=b,则确定数据元组的第一索引包括数据元组的预定属性的属性值属于等值区间Sa=b时的索引。
步骤303,若终端确定的第一索引包括数据元组的预定属性的属性值属于等值区间Sa=b时的索引,则确定数据元组的第二索引和偏移值;
具体的,等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,则终端确定数据元组的第二索引和偏移值的步骤可以包括:
第一,检测数据元组属于第一数据集还是属于第二数据集;
具体的,请参考图5中的a图和b图,其示出了本实施例相关的第一数据集和第二数据集;在终端存储数据元组时,终端可以检测数据元组属于第一数据集还是属于第二数据集。其中,将数据集中数据元组的工号记为预定属性,具体的工号值作为预定属性的属性值。
第二,根据检测结果确定数据元组的第二索引和偏移值。
终端可以根据检测结果确定数据元组的第二索引和偏移值。具体的:
若检测结果为数据元组属于第一数据集,将数据元组的预定属性的属性值所在的预定分段i的映射值axi作为第二索引;计算数据元组的预定属性的属性值与预定分段i中的预定基准值ayi的差值ay,将计算得到的差值ay作为偏移值;
如果终端的检测结果为数据元组属于第一数据集,则终端可以检测数据元组的预定属性的属性值属于等值区间Sa=b中的哪一个预定分段,从而将检测得到的预定分段i的映射值axi作为第二索引;同时终端还可以计算数据元组的预定属性的属性值与预定分段i中的预定基准值ayi的差值ay,从而将计算得到的差值ay作为偏移值;
比如,请参考图5中的c图,其示出了本实施例中第一数据集和第二数据集的值域关系,d图示出了第一数据集和第二数据集中的预定分段,图e为第一数据集中各预定分段与映射值的对应关系,图g为第一数据集中各预定分段中的预定基准值与预定分段的对应关系;则若数据元组的预定属性的属性值为45,终端可以检测到数据元组的预定属性的属性值属于第二个预定分段,第二个预定分段的映射值ax2和预定基准值ay2分别为:35和53;则终端可以将映射值35作为数据元组的第二索引,将预定属性的属性值45与预定基准值53的差值-8作为偏移值。
若检测结果为数据元组属于第二数据集,将数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为第二索引;计算数据元组的预定属性的属性值与预定分段i中的预定基准值byi的差值by,将计算得到的差值by作为偏移值。
如果终端的检测结果为数据元组属于第二数据集,则终端可以检测数据元组的预定属性的属性值属于等值区间Sa=b中的哪一个预定分段,从而将检测得到的预定分段i的映射值bxi作为第二索引;同时终端还可以计算数据元组的预定属性的属性值与预定分段i中的预定基准值byi的差值by,从而将计算得到的差值by作为偏移值;
比如,请参考图5,图f为第二数据集中各预定分段与映射值的对应关系,图h为第二数据集中各预定分段中的预定基准值与预定分段的对应关系;则若数据元组的预定属性的属性值为56,终端可以检测到数据元组的预定属性的属性值属于第二个预定分段,第二个预定分段的映射值ax2和预定基准值ay2分别为:19和43;则终端可以将映射值19作为数据元组的第二索引,将预定属性的属性值56与预定基准值43的差值13作为偏移值。
需要说明的一点是,预定分段是终端为每个数据集中的等值区间Sa=b中的各数据元组的预定属性的属性值划分的分段,其中相邻预定分段首尾相连,各个预定分段之间互不重叠;并且预定分段i+1中的数据元组的预定属性的属性值恒大于预定分段i中的数据元组的预定属性的属性值;此外,本实施例只是以终端为第一数据集的等值区间内的各数据分组的预定属性的属性值和第二数据集的等值区间内的各数据分组的预定属性的属性值设置相同取值范围的预定分段为例,在实际实现时,终端还可以为两个数据集的等值区间设置不同取值范围的预定分段,但是第二索引和偏移值的具体计算方法与上述方法类似,本实施例在此不再赘述;
需要说明的另一点是,若终端确定的第一索引包括数据元组的预定属性的属性值属于恒大于区间Sa>>b时的索引、数据元组的预定属性的属性值属于恒大于区间Sb>>a时的索引、数据元组的预定属性的属性值属于恒小于区间Sa<<b时的索引或者数据元组的预定属性的属性值属于恒小于区间Sb<<a时的索引,则终端将第一索引作为数据元组的索引信息;比如,若终端确定的数据元组的第一索引为数据元组的预定属性的属性值属于恒大于区间Sa>>b时的索引,则终端可以直接将Sa>>b作为数据元组的索引信息,本实施例对此不再赘述。
步骤304,终端将待存储的每个数据元组进行加密;
终端为待存储的每个数据元组设置一个加密密码,从而为待存储的每个数据元组进行加密。
需要说明的是,本实施例以终端先确定待存储数据元组的索引信息,然后再将待存储数据进行加密为例,在实际实现时,终端还可以先将待存储的每个数据元组进行加密,然后再确定每个待存储数据元组的索引信息,也即步骤304可以在之前的任一一个步骤执行,本实施例对此并不做限定。
步骤305,终端将加密后的数据元组以及数据元组的索引信息发送至服务器;
在终端确定得到待存储的数据元组的索引信息以及将每个待存储数据元组加密后,终端可以将加密后的数据元组以及数据元组的索引信息发送至云端服务器。
步骤306,服务器接收并存储加密后的数据元组以及数据元组的索引信息。
相应的,云端服务器可以接收并存储加密后的数据元组以及数据元组的索引信息。具体的,请参考图5中的i,其示出了云端服务器接收并存储的加密后的第一数据集中的各数据元组以及每个数据元组的索引信息的对应关系;图5中j为云端服务器接收并存储的加密后的第二数据集中的各数据元组以及每个数据元组的索引信息。
另外,当终端需要更新云端服务器中存储的加密后的某一数据元组时,终端可以执行更新操作,具体步骤可以包括:
第一,将初始数据元组进行加密,并发送加密后的初始数据元组至服务器,以便服务器查询并删除加密后的初始数据元组;
终端将需要更新的初始数据元组进行加密,并发送加密后的初始数据元组至云端服务器,相应的,云端服务器接收加密后的初始数据元组,在存储的各加密后的数据元组中查询接收到的加密后的初始数据元组,并在查询到以后,删除查询到的加密后的初始数据元组。
第二,将初始数据元组更新为待存储的数据元组;
终端将更新后的数据元组作为待存储的数据元组,从而将初始数据元组更新为待存储的数据元组。
第三,执行确定待存储的每个数据元组的索引信息的步骤
在终端将初始数据元组更新为待存储的数据元组之后,终端可以执行确定待存储的数据元组的索引信息的步骤,也即执行步骤301,其具体的技术细节请参考步骤301,本实施例在此不再赘述。
最后,当终端需要删除云端服务器中存储的某一个加密后的数据元组时,终端可以执行删除的操作,具体步骤可以包括:对待删除的数据元组进行加密,发送加密后的待删除的数据元组至云端服务器,以便云端服务器查询并删除待删除的数据元组。该步骤与更新操作中的第一步类似,具体技术细节请参考上述第一步,本实施例在此不再赘述。
综上所述,本实施例提供的数据存储方法,通过确定待存储的每个数据元组的索引信息,将待存储的每个数据元组进行加密,并将加密后的数据元组以及数据元组的索引信息发送至服务器,使得服务器接收并存储加密后的数据元组以及数据元组的索引信息;从而在终端需要进行数据查询时,服务器可以根据终端发送的针对索引信息进行查询的查询请求来准确的查询到符合查询请求的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,在本实施例中,通过发送加密后的初始数据元组至服务器,并在服务器查询并删除存储的加密后的初始数据元组之后,使用待存储的数据元组更新初始数据元组,并重新将待存储数据元组存储至服务器,达到了终端可以实时更新服务器中存储的加密后的数据元组的效果。
实施例四
请参考图6,其示出了本发明实施例四提供的数据查询方法的方法流程图,该数据查询方法用于在包含有实施例一提供的存储器的服务器中查询数据,该数据查询方法包括:
步骤401,终端接收第一查询请求;
终端可以接收用户输入的第一查询请求,其中,第一查询请求为针对数据元组的预定属性的属性值进行查询的请求。并且在实际实现时,第一查询请求可以是在第一数据集和第二数据集中查询预定属性的属性值相等的数据元组的等值连接查询,也可以是查询第一数据集中数据元组的预定属性的属性值大于/小于第二数据集中数据元组的预定属性的属性值,本实施例对此并不做限定。
步骤402,终端将第一查询请求转化为第二查询请求;
终端在接收到第一查询请求之后,终端可以将第一查询请求转化为第二查询请求。其中,第二查询请求为针对数据元组的索引信息进行查询的请求。
步骤403,终端发送第二查询请求至服务器;
步骤404,服务器接收第二查询请求;
步骤405,服务器查询索引信息符合第二查询请求的加密后的数据元组;
步骤406,服务器反馈查询到的加密后的数据元组至终端;
步骤407,终端接收加密后的数据元组。
综上所述,本实施例提供的数据查询方法,通过将接收到的针对数据元组的预定属性的属性值进行查询的第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,从而服务器可以根据存储的各数据元组的索引信息来查询索引信息符合第二查询请求的数据元组,并将查询到的数据数据反馈至终端,使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例五
请参考图7,其示出了本发明实施例五提供的数据查询方法的方法流程图,该数据查询方法用于在包含有实施例一提供的存储器的服务器中查询数据,该数据查询方法包括:
步骤501,终端接收第一查询请求,第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
终端可以接收用户输入的第一查询请求。其中,第一查询请求为针对数据元组的预定属性的属性值进行查询的请求。比如,第一数据集为包含员工工号和姓名的数据表、第二数据集为包含员工工号和每月工资的数据表,则当用户想要调取员工姓名与工资之间的对应关系时,用户可以输入a.id=b.id,相应的,终端可以接收到第一查询请求a.id=b.id。
步骤502,终端将第一查询请求转化为第二查询请求,第二查询请求为针对数据元组的索引信息进行查询的请求;
终端可以将第一查询请求转化为第二查询请求,其中,第二查询请求为针对数据元组的索引信息进行查询的请求。
具体的,若等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,则终端将第一查询请求转化为第二查询请求的步骤可以包括:
第一,构建第一数据集中第一索引与第二数据集中第一索引之间的第一连接,第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
终端可以构建第一数据集中第一索引与第二数据集中第一索引之间的第一连接关系。其中,由于本实施例中需要查询a.id=b.id,也即需要查询第一数据集中预定属性的属性值等于第二数据集中预定属性的属性值的至少一个数据元组组合,而每个数据元组组合中的两个数据元组都属于等值区间,所以终端将选择第一数据集中第一索引表示等值区间Sa=b的索引以及第二数据集中第一索引表示等值区间Sa=b的索引,具体可以表示为a.第一索引=Sa=b且b.第一索引=Sa=b;所以终端构建的第一连接关系为:a.第一索引=Sa=b且b.第一索引=Sa=b。
第二,对于等值区间中的各个预定分段i,构建第一数据集中第二索引与第二数据集中第二索引之间的第二连接,第二连接包括:a.第二索引=axi且b.第二索引=bxi;
在终端挑选出在等值区间内的多个数据元组组合之后,对于等值区间中的各个预定分段i,终端可以构建第一数据集中第二索引与第二数据集中第二索引之间的第二连接关系。具体的,在同一个预定分段i中,第一数据集的各数据元组的预定属性的属性值的取值范围等于第二数据集中各数据元组的预定属性的属性值的取值范围,所以在终端进行等值查询时,终端可以根据各预定分段的取值范围以及各预定分段的映射值建立第一数据集的第二索引与第二数据集的第二索引之间的第二连接,其中,第一数据集的第二索引所表示的预定分段与第二数据集的第二索引所表示的预定分段是同一个分段,所以第二连接关系可以包括:a.第二索引=axi且b.第二索引=bxi。比如,请结合图5中的i图和j图;终端建立的第二连接包括:a.第二索引=21且b.第二索引=15或者a.第二索引=35且b.第二索引=19或者a.第二索引=18且b.第二索引=16。
需要说明的是,各个预定分段的取值范围以及各预定分段的映射值可以是在之前的某一时刻从存储数据元组的终端中获取得到的,当然,若查询时使用的终端与存储数据元组的终端是同一个终端,则终端可以直接使用存储数据元组时保存的预定分段的取值范围以及各预定分段的映射值,本实施例对此并不做限定。
第三,对于等值区间中的每个预定分段i,构建数据元组属于第一数据集时的偏移值ay与数据元组属于第二数据集时的偏移值by之间的第三连接,第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
对于第二步中选择的各预定分段,终端可以构建数据元组属于第一数据集时的偏移值ay与数据元组属于第二数据集时的偏移值by之间的第三连接。具体的,由于每个预定分段中设置有一个预定基准值,每个数据元组的预定属性的属性值与预定基准值的差值即为偏移值,所以每个数据元组的预定属性的属性值可以表示为:属性值=预定基准值+偏移值;所以在同一个预定分段中,当第一数据集中数据元组的预定属性的属性值等于第二数据集中数据元组的预定属性的属性值时,ayi+a.偏移值ay=byi+b.偏移值by,所以a.偏移值ay=b.偏移值by+(byi-ayi)。比如,当预定属性的属性值的取值范围为30-45时,构建的第三连接关系为:a.偏移值ay=b.偏移值by+(35-42)=b.偏移值by-7;当预定属性的属性值的取值范围为45-58时,构建的第三连接关系为:a.偏移值ay=b.偏移值by+(43-53)=b.偏移值by-10;当预定属性的属性值的取值范围为58-70时,构建的第三连接关系为:a.偏移值ay=b.偏移值by+(61-82)=b.偏移值by-21。
需要补充说明的是,各个预定分段的预定基准值可以是在之前的某一时刻从存储数据元组的终端中获取得到的,当然,若查询时使用的终端与存储数据元组的终端是同一个终端,则终端可以直接使用存储数据元组时保存的预定分段的预定基准值,本实施例对此并不做限定。
第四,将第一连接、第二连接和第三连接作为第二查询请求。
终端将构建的第一连接、第二连接和第三连接作为第二查询请求。比如,以终端接收到的第一查询请求为a.id=b.id为例,终端转化得到的第二查询请求包括:a.第一索引=Sa=b且b.第一索引=Sa=b且[(a.第二索引==21且b.第二索引=15且a.偏移值ay=b.偏移值by-7)或者(a.第二索引=35且b.第二索引=19且a.偏移值ay=b.偏移值by-10)或者(a.第二索引=18且b.第二索引=16)且a.偏移值ay=b.偏移值by-21]。
步骤503,终端发送第二查询请求至服务器;
终端将转化得到的第二查询请求发送至云端服务器。
步骤504,服务器接收第二查询请求;
相应的,云端服务器接收终端发送的第二查询请求。
步骤505,服务器查询索引信息符合第二查询请求的加密后的数据元组;
在云端服务器接收到第二查询请求之后,由于第二查询请求是针对索引信息进行查询的请求,并且云端服务器中存储有加密后的数据元组以及每个数据元组对应的索引信息,所以云端服务器可以查询索引信息符合第二查询请求的加密后的数据元组。具体的,云端服务器的查询步骤可以包括:
第一,根据第一连接查询符合第一条件的数据元组,第一条件为:第一索引为数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
具体的,由于第二查询请求中的第一连接关系为:a.第一索引=Sa=b且b.第一索引=Sa=b;所以云端服务器可以在存储的各数据元组的索引信息中查询索引信息的第一索引为数据元组的预定属性的属性值属于等值区间Sa=b时的索引。
第二,在符合第一条件的数据元组中,根据第二连接查询符合第二条件的至少一个数据元组组合Ci,第二条件为:数据元组组合Ci中的数据元组的第二索引为axi或者byi;
具体的,在云端服务器查询得到第一索引为数据元组的预定属性的属性值属于等值区间Sa=b时的索引的数据元组之后,由于第二查询请求中的第二连接关系为:a.第二索引=axi且b.第二索引=bxi,所以云端服务器可以在查询得到的各数据元组中继续查询符合第二条件的至少一个数据元组组合Ci,第二条件为:数据元组组合Ci中的数据元组的第二索引为axi或者byi。
第三,在符合第二条件的每个数据元组组合Ci中,根据第三连接查询符合第三条件的至少一个数据元组子组合Di,第三条件为:数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
具体的,云端服务器在查询到的每个数据元组组合Ci之后,由于第二查询请求中的第三连接为a.偏移值ay=b.偏移值by+(byi-ayi),所以云端服务器可以相应在数据元组组合Ci中查询符合第三条件的数据元组,第三条件为:数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
在经过上述查询之后,云端服务器可以查询得到符合第二查询请求的索引信息,此时云端服务器可以根据索引信息查询索引信息所对应的加密后的数据元组。
步骤506,服务器反馈查询到的加密后的数据元组至终端;
云端服务器反馈查询到的加密后的数据元组至终端。
步骤507,终端接收加密后的数据元组。
相应的,终端可以接收加密后的数据元组,此后,终端可以根据存储各数据元组时,为各数据元组设置的加密秘钥来对接收到的加密后的数据元组进行解密,从而得到解密后的用户可以查看的数据元组。
需要补充说明的第一点是,在步骤501中,若终端接收到的第一查询请求为非等值查询请求,比如第一数据集中数据元组的预定属性的属性值大于第二数据集中数据预定属性的属性值的查询请求,步骤502中终端将第一查询请求转化为第二查询请求的步骤可以包括:
第一,构建第一数据集中第一索引与第二数据集中第一索引之间的第一连接;
具体的,为了便于理解,以下分别对第一数据集中的各个值域区间进行详细描述:
当第一数据集中数据元组的预定属性的属性值在恒大于区间Sa>>b时,数据元组的预定属性的属性值恒大于第二数据集中的所有数据元组的预定属性的属性值,所以此时,终端构建的第一连接可以包括:a.第一索引=Sa>>b且b.第一索引=任意值,其中任意值为第二数据集中所有可能的值域区间;
当第一数据集中数据元组的预定属性的属性值在等值区间Sa=b时,数据元组的预定属性的属性值大于第二数据集中属于恒小于区间Sb<<a中的数据元组的预定属性的属性值;并且与第二数据集中属于等值区间Sa=b中的数据元组的预定属性的属性值也有可能相同,所以此时终端构建的第一连接可以包括:a.第一索引=Sa=b且b.第一索引=Sb<<a或者a.第一索引=Sa=b且b.第一索引=Sa=b;
而当第一数据集中数据元组的预定属性的属性值在恒小于区间Sa<<b时,数据元组的预定属性的属性值恒小于第二数据集中所有数据元组的预定属性的属性值,此时不存在符合查询请求的数据元组,终端可以不构建第一数据集中数据元组的第一索引Sa<<b和第二数据集中数据元组的第一索引之间的第一连接。
第二,根据构建的第一连接,确定第二查询请求。
具体的:
当构建的第一连接为a.第一索引=Sa>>b且b.第一索引=任意值或者a.第一索引=Sa=b且b.第一索引=Sb<<a时,索引信息符合第一连接的所有数据元组都符合查询请求;
而当构建的第一连接为a.第一索引=Sa=b且b.第一索引=Sa=b时,等值区间中预定分段i中的各数据元组的预定属性的属性值恒大于预定分段j中的各数据元组的预定属性的属性值,j<i,所以此时终端可以构建第一数据集中的第二索引与第二数据集中的第二索引之间的第二连接,第二连接可以包括:a.第二索引=axi且b.第二索引=bxj,其中j<i;而对于相同的预定分段i中的数据元组,数据元组的预定属性的属性值与第二数据集的预定分段i中的数据元组的预定属性的属性值之间的大小关系并不确定,此时终端需要根据预定分段i中的预定基准值来确定各数据元组的预定属性的属性值的具体取值之后才可以判断,所以终端需要继续构建相同的预定分段i中的第一数据集的偏移值与第二数据集的偏移值之间的第三连接,具体的,ayi+a.偏移值ay>byi+b.偏移值by,即a.偏移值ay>b.偏移值by+(byi-ayi);
经过上述步骤之后,终端可以得到对应的第二查询请求,具体包括:a.第一索引=Sa>>b且b.第一索引=任意值或者a.第一索引=Sa=b且b.第一索引=Sb<<a或者{a.第一索引=Sa=b且b.第一索引=Sa=b}且(a.第二索引=axi且b.第二索引=bxj,其中j<i)或者[a.第一索引=Sa=b且b.第一索引=Sa=b且a.第二索引=axi且b.第二索引=bxi且a.偏移值ay>b.偏移值by+(byi-ayi)]。在终端得到第二查询请求之后,终端可以发送第二查询请求至云端服务器,以便云端服务器查询索引信息符合第二查询请求的数据元组,这与等值查询类似,在此本实施例不再赘述。类似的,当查询第一数据集中数据元组的预定属性的属性值小于第二数据集中数据元组的预定属性的属性值时,本领域技术人员可以很容易从上述方案得到对应的第二查询请求,故本实施例在此不再赘述。
需要补充说明的第二点是,在步骤501中,若终端接收到的第一查询请求为数值查询,比如,查询第一数据集中数据元组的预定属性的属性值op预定值的查询请求,其中,op为=,步骤502中终端将第一查询请求转换为第二查询请求的步骤可以包括:
第一,终端构建第一数据集中第一索引与预定索引的第一连接;
具体的,终端检测预定值所在的值域区间;若检测结果为预定值属于等值区间Sa=b,则终端构建的第一连接可以包括:a.第一索引=Sa=b;比如,终端接收到的第一查询请求为,a.id=45,则终端可以检测到预定值45属于等值区间Sa=b所对应的30-70的范围内,所以此时终端建立的第一连接为a.第一索引=Sa=b;若检测结果为预定值属于恒大于Sa>>b,则终端构建的第一连接为a.第一索引=Sa>>b;若检测结果为预定值属于恒小于区间Sa<<b,则终端构建的第一连接为a.第一索引=Sa<<b;
第二,根据构建的第一连接确定第二查询请求;
若终端构建的第一连接为a.第一索引=Sa=b,则说明终端当前需要查询的数据元组是等值区间中的数据元组,此时终端可以根据等值区间Sa=b中各个预定分段所对应的预定属性的属性值的取值范围,确定所要查询的数据元组的预定属性的属性值所在的预定分段,从而确定第一数据集中数据元组的第二索引与axi之间的第二连接;比如,终端检测到预定值45属于等值区间的第二个预定分段35-58的取值范围内,则终端构建的第二连接可以包括:a.第二索引=ax2=35;此外,终端根据该预定分段中设置的预定基准值ayi,确定第一数据集中数据元组的偏移值与预定基准值ayi之间的第三连接;具体的,由于预定属性的属性值与预定基准值的差值为偏移值,所以终端构建的偏移值与预定基准值ayi之间的第三连接为:a.偏移值ay=预定值-预定基准值ay2=45-53=-8;也即终端确定的第二查询请求为a.第一索引=Sa=b且a.第二索引=35且a.偏移值=-8。
若终端构建的第一连接为a.第一索引=Sa>>b或者a.第一索引=Sa<<b,则终端直接将第一连接作为第二查询请求;
经过上述步骤之后,终端可以将第二查询请求发送至服务器,相应的,服务器在接收到第二查询请求之后,查询符合第二查询请求的加密后的数据元组。具体的,当接收到的第二查询请求是由属于等值区间中的第一查询请求转换得到的请求时,服务器可以准确的查询到对应的数据元组,而当接收到的第二查询请求是由属于恒大于区间Sa>>b或者恒小于区间Sa<<b中的第一查询请求转换得到的请求时,服务器可以返回恒大于区间Sa>>b或者恒小于区间Sa<<b中的所有加密后的数据元组至终端,终端对其解密后再选择需求的数据元组,本实施例在此不再赘述。
需要补充说明的第三点是,若步骤502中接收到的第一查询请求是对预定属性属性值的关系查询,如预定属性的属性值op预定值,其中,op为>或<,并且本实施例以op为>为例,则终端将第一查询请求转换为第二查询请求的步骤可以包括:
终端检测预定值所在的值域区间;
若检测结果为预定值属于恒小于区间Sa<<b,则终端确定的第二查询请求为a.第一索引=Sa>>b或者a.第一索引=Sa=b或者a.第一索引=Sa<<b;
若检测结果为预定值属于等值区间Sa=b,则由于恒大于区间Sa>>b中的所有数据元组的预定属性的属性值都大于等值区间Sa=b中的数据元组预定属性的属性值,所以恒大于区间Sa>>b中的所有数据元组都符合查询请求,终端可以构建a.第一索引=Sa>>b;而在等值区间Sa=b中,终端检测到预定值属于等值区间Sa=b中的预定分段i,而预定分段j中的所有数据元组也都符合查询请求,所以终端可以构建a.第二索引=axj,其中j>i;在预定分段i中,由于预定属性的属性值-预定基准值ayi=a.偏移值,所以预定属性的属性值=a.偏移值+预定基准值ayi,若预定属性的属性值>预定值,则a.偏移值+预定基准值ayi>预定值,所以终端可以构建a.偏移值>预定值-预定基准值ayi;综上所述,终端此时确定的第二查询请求为a.第一索引=Sa>>b或者{a.第一索引=Sa=b且[(a.第二索引=axj,其中j>i,)或者(a.第二索引=axi且a.偏移值>预定值-预定基准值ay])}i;
若检测结果为预定值属于恒大于区间Sa>>b,则终端确定的第二查询请求为a.第一索引=Sa>>b;
经过上述步骤,终端可以将第二查询请求发送至服务器,相应的,服务器在接收到第二查询请求之后,查询符合第二查询请求的加密后的数据元组。另外,本实施例只是以op为>为例,当op为<时,其具体的执行步骤类似,本实施例在此不再赘述。
综上所述,本实施例提供的数据查询方法,通过将接收到的针对数据元组的预定属性的属性值进行查询的第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,从而服务器可以根据存储的各数据元组的索引信息来查询索引信息符合第二查询请求的数据元组,并将查询到的数据数据反馈至终端,使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
需补充说明的是,在实际实现时,实施例四和实施例五中的终端和实施例二和实施例三中的终端可以是同一个终端,也可以不是同一个终端,当是同一个终端时,说明用户使用同一个终端对数据元组进行存储和进行数据查询,当是不同的终端时,实施例四和实施例五中的终端必须是经过授权后的、获知存储数据元组时加密秘钥的终端,本实施例对此并不做限定。
实施例六
请参考图8,其示出了本发明实施例六提供的终端的结构方框图,该终端用于向包含有实施例一提供的存储器的服务器中存储数据,该终端可以包括:信息确定模块610、数据加密模块620和信息发送模块630;
信息确定模块610,用于确定待存储的每个数据元组的索引信息;
数据加密模块620,用于将待存储的每个数据元组进行加密;
信息发送模块630,用于将所述数据加密模块620加密后的所述数据元组以及所述信息确定模块610确定的所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
综上所述,本实施例提供的终端,通过确定待存储的每个数据元组的索引信息,将待存储的每个数据元组进行加密,并将加密后的数据元组以及数据元组的索引信息发送至服务器,使得服务器接收并存储加密后的数据元组以及数据元组的索引信息;从而在终端需要进行数据查询时,服务器可以根据终端发送的针对索引信息进行查询的查询请求来准确的查询到符合查询请求的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例七
请参考图9,其示出了本发明实施例七提供的终端的结构方框图,该终端用于向包含有实施例一提供的存储器的服务器中存储数据,该终端可以包括:信息确定模块610、数据加密模块620和信息发送模块630;
信息确定模块610,用于确定待存储的每个数据元组的索引信息;
数据加密模块620,用于将待存储的每个数据元组进行加密;
信息发送模块630,用于将所述数据加密模块620加密后的所述数据元组以及所述信息确定模块610确定的所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
进一步地,所述信息确定模块610,还可以包括:第一确定单元611、第二确定单元612和第三确定单元613;
第一确定单元611,用于确定每个数据元组的第一索引;
第二确定单元612,用于若所述第一确定单元611确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于所述恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于所述恒小于区间Sa<<b时的索引或者所述数据元组的预定属性的属性值属于所述恒小于区间Sb<<a时的索引,则将所述第一索引作为所述数据元组的索引信息;
第三确定单元613,还用于若所述第一确定单元611确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b时的索引,则确定所述数据元组的第二索引和偏移值,并将所述第一索引、所述第二索引和所述偏移值作为所述数据元组的索引信息。
进一步地,请参考图8,所述第一确定单元611,可以包括:区间检测子单元611a和第一确定子单元611b;
区间检测子单元611a,用于检测所述数据元组的预定属性的属性值属于所述数据元组所在的数据集的哪一个值域区间;所述值域区间包括所述恒大于区间Sa>>b、所述恒大于区间Sb>>a、所述等值区间Sa=b、所述恒小于区间Sa<<b和所述恒小于区间Sb<<a中的至少一种;
第一确定子单元611b,用于根据所述区间检测子单元611a的检测结果确定所述数据元组的第一索引。
进一步地,请参考图11,所述信息确定模块610,可以包括:区间划分单元614;
区间划分单元614,用于根据所述第一数据集中各数据元组的预定属性的属性值的大小以及所述第二数据集中各数据元组的预定属性的属性值的大小,划分所述值域区间。
进一步地,请参考图12,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述第三确定单元613,包括:数据检测子单元613a、第二确定子单元613b和第三确定子单元613c;
数据检测子单元613a,用于检测所述数据元组属于所述第一数据集还是属于所述第二数据集;
第二确定子单元613b,用于若所述数据检测子单元613a的检测结果为所述数据元组属于所述第一数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值axi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值ayi的差值ay,将计算得到的所述差值ay作为所述偏移值;
第三确定子单元613c,用于若所述数据检测子单元613a的检测结果为所述数据元组属于所述第二数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值byi的差值by,将计算得到的所述差值by作为所述偏移值。
进一步地,请参考图13,所述终端还包括:第一加密模块640、第一发送模块650、数据更新模块660和步骤执行模块670;
第一加密模块640,用于将初始数据元组进行加密;
第一发送模块650,用于并发送所述第一加密模块640加密后的所述初始数据元组至服务器,以便所述服务器查询并删除所述初始数据元组;
数据更新模块660,用于将所述初始数据元组更新为所述待存储的数据元组;
步骤执行模块670,用于执行所述确定待存储的每个数据元组的索引信息的步骤。
进一步地,请参考图14,所述终端还可以包括:第二加密模块680和第二发送模块690;
第二加密模块680,用于对待删除的数据元组进行加密;
第二发送模块690,用于发送所述第二加密模块680加密后的所述待删除的数据元组至服务器,以便所述服务器查询并删除所述待删除的数据元组。
综上所述,本实施例提供的终端,通过确定待存储的每个数据元组的索引信息,将待存储的每个数据元组进行加密,并将加密后的数据元组以及数据元组的索引信息发送至服务器,使得服务器接收并存储加密后的数据元组以及数据元组的索引信息;从而在终端需要进行数据查询时,服务器可以根据终端发送的针对索引信息进行查询的查询请求来准确的查询到符合查询请求的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,在本实施例中,通过发送加密后的初始数据元组至服务器,并在服务器查询并删除存储的加密后的初始数据元组之后,使用待存储的数据元组更新初始数据元组,并重新将待存储数据元组存储至服务器,达到了终端可以实时更新服务器中存储的加密后的数据元组的效果。
实施例八
请参考图15,其示出了本发明实施例八提供的终端的结构方框图,该终端用于在包含有实施例一提供的存储器的服务器中查询数据,该终端可以包括:请求接收模块710、请求转化模块720、请求发送模块730和数据接收模块740;
请求接收模块710,用于接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
请求转化模块720,用于将所述请求接收模块710接收到的所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
请求发送模块730,用于发送所述请求转化模块720转化得到的所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
数据接收模块740,用于接收所述服务器反馈的所述加密后的数据元组。
综上所述,本实施例提供的终端,通过将接收到的针对数据元组的预定属性的属性值进行查询的第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,从而服务器可以根据存储的各数据元组的索引信息来查询索引信息符合第二查询请求的数据元组,并将查询到的数据数据反馈至终端,使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例九
请参考图16,其示出了本发明实施例九提供的终端的结构方框图,该终端用于在包含有实施例一提供的存储器的服务器中查询数据,该终端可以包括:请求接收模块710、请求转化模块720、请求发送模块730和数据接收模块740;
请求接收模块710,用于接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
请求转化模块720,用于将所述请求接收模块710接收到的所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
请求发送模块730,用于发送所述请求转化模块720转化得到的所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
数据接收模块740,用于接收所述服务器反馈的所述加密后的数据元组。
进一步地,若所述第一查询请求为等值查询,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述请求转化模块720,包括:第一构建单元721、第二构建单元722、第三构建单元723;和请求生成单元724;
第一构建单元721,用于构建所述第一数据集中第一索引与所述第二数据集中第一索引之间的第一连接,所述第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
第二构建单元722,用于对于等值区间中的各个预定分段i,构建所述第一数据集中第二索引与所述第二数据集中第二索引之间的第二连接,所述第二连接包括:a.第二索引=axi且b.第二索引=bxi;
第三构建单元723,用于对于等值区间中的每个预定分段i,构建所述数据元组属于第一数据集时的偏移值ay与所述数据元组属于第二数据集时的偏移值by之间的第三连接,所述第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
请求生成单元724,用于将所述第一连接、所述第二连接和所述第三连接作为所述第二查询请求。
综上所述,本实施例提供的终端,通过将接收到的针对数据元组的预定属性的属性值进行查询的第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,从而服务器可以根据存储的各数据元组的索引信息来查询索引信息符合第二查询请求的数据元组,并将查询到的数据数据反馈至终端,使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
实施例十
请参考图17,去示出了本发明实施例十提供的数据查询装置的结构方框图,该数据查询装置可以实现为服务器中的全部或者其中的部分,该数据查询装置用于包含有实施例一提供的存储器的服务器中,该数据查询装置可以包括:请求接收模块810、数据查询模块820和数据反馈模块830;
请求接收模块810,用于接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
数据查询模块820,用于查询索引信息符合所述查询请求的加密后的数据元组;
数据反馈模块830,用于反馈所述数据查询模块820查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
综上所述,本实施例提供的数据查询装置,通过接收终端发送的针对数据元组的索引信息进行查询的第二查询请求,查询索引信息符合第二查询请求的加密后的数据元组,并反馈查询到的加密后的数据元组至终端,其中索引信息与数据元组一一对应,从而使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例十一
请参考图18,其示出了本发明实施例十一提供的数据查询装置的结构方框图,该数据查询装置可以实现为服务器中的全部或者其中的部分,该数据查询装置用于包含有实施例一提供的存储器的服务器中,该数据查询装置可以包括:请求接收模块810、数据查询模块820和数据反馈模块830;
请求接收模块810,用于接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
数据查询模块820,用于查询索引信息符合所述查询请求的加密后的数据元组;
数据反馈模块830,用于反馈所述数据查询模块820查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
进一步地,若所述第二查询请求是由等值查询转换成的包括第一连接、第二连接和第三连接的请求,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述数据查询模块820,包括:第一查询单元821、第二查询单元822和第三查询单元823;
第一查询单元821,用于根据所述第一连接查询符合第一条件的数据元组,所述第一条件为:第一索引为所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
第二查询单元822,用于在符合所述第一条件的数据元组中,根据所述第二连接查询符合第二条件的至少一个数据元组组合Ci,所述第二条件为:所述数据元组组合Ci中的数据元组的第二索引为axi或者byi;
第三查询单元823,用于在符合所述第二条件的每个数据元组组合Ci中,根据所述第三连接查询符合第三条件的至少一个数据元组子组合Di,所述第三条件为:所述数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
综上所述,本实施例提供的数据查询装置,通过接收终端发送的针对数据元组的索引信息进行查询的第二查询请求,查询索引信息符合第二查询请求的加密后的数据元组,并反馈查询到的加密后的数据元组至终端,其中索引信息与数据元组一一对应,从而使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时在本实施例中,当第二查询请求是由等值查询转化得到的第一连接、第二连接和第三连接的查询请求时,通过查询第一索引、第二索引和偏移值来符合第二查询请求的数据元组,使得服务器可以准确的查询到符合查询请求的每个数据元组,提高了数据查询效率。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
实施例十二
请参考图19,其示出了本发明实施例十二提供的终端的结构方框图,该终端用于向包含有实施例一提供的存储器的服务器中存储数据,该终端可以包括:处理器910和发射机920;
处理器910,用于确定待存储的每个数据元组的索引信息;
所述处理器910,还用于将待存储的每个数据元组进行加密;
发射机920,用于将所述处理器910加密后的所述数据元组以及确定的所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
综上所述,本实施例提供的终端,通过确定待存储的每个数据元组的索引信息,将待存储的每个数据元组进行加密,并将加密后的数据元组以及数据元组的索引信息发送至服务器,使得服务器接收并存储加密后的数据元组以及数据元组的索引信息;从而在终端需要进行数据查询时,服务器可以根据终端发送的针对索引信息进行查询的查询请求来准确的查询到符合查询请求的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例十三
作为实施例十二的优选实施例,在本实施例中,该终端可以包括:处理器910和发射机920;
处理器910,用于确定待存储的每个数据元组的索引信息;
所述处理器910,还用于将待存储的每个数据元组进行加密;
发射机920,用于将所述处理器910加密后的所述数据元组以及确定的所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
在本实施例的第一种可能的实现方式中,
所述处理器910,用于确定每个数据元组的第一索引;
若确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于所述恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于所述恒小于区间Sa<<b时的索引或者所述数据元组的预定属性的属性值属于所述恒小于区间Sb<<a时的索引,则将所述第一索引作为所述数据元组的索引信息;
若确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b时的索引,则确定所述数据元组的第二索引和偏移值,并将所述第一索引、所述第二索引和所述偏移值作为所述数据元组的索引信息。
在本实施例的第二种可能的实现方式中,
所述处理器910,还用于检测所述数据元组的预定属性的属性值属于所述数据元组所在的数据集的哪一个值域区间;所述值域区间包括所述恒大于区间Sa>>b、所述恒大于区间Sb>>a、所述等值区间Sa=b、所述恒小于区间Sa<<b和所述恒小于区间Sb<<a中的至少一种;
根据检测结果确定所述数据元组的第一索引。
在本实施例的第三种可能的实现方式中,
所述处理器910,还用于根据所述第一数据集中各数据元组的预定属性的属性值的大小以及所述第二数据集中各数据元组的预定属性的属性值的大小,划分所述值域区间。
在第四种可能的实现方式中,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,
所述处理器910,还用于检测所述数据元组属于所述第一数据集还是属于所述第二数据集;
若检测结果为所述数据元组属于所述第一数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值axi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值ayi的差值ay,将计算得到的所述差值ay作为所述偏移值;
若检测结果为所述数据元组属于所述第二数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值byi的差值by,将计算得到的所述差值by作为所述偏移值。
在本实施例的第五种可能的实现方式中,
所述处理器910,还用于将初始数据元组进行加密;
所述发射机920,还用于发送所述处理器910加密后的所述初始数据元组至服务器,以便所述服务器查询并删除所述初始数据元组;
所述处理器910,还用于将所述初始数据元组更新为所述待存储的数据元组;
所述处理器910,还用于执行所述确定待存储的每个数据元组的索引信息的步骤。
在本实施例的第六种可能的实现方式中,
所述处理器910,还用于对待删除的数据元组进行加密;
所述发射机920,还用于发送所述处理器910加密后的所述待删除的数据元组至服务器,以便所述服务器查询并删除所述待删除的数据元组。
综上所述,本实施例提供的终端,通过确定待存储的每个数据元组的索引信息,将待存储的每个数据元组进行加密,并将加密后的数据元组以及数据元组的索引信息发送至服务器,使得服务器接收并存储加密后的数据元组以及数据元组的索引信息;从而在终端需要进行数据查询时,服务器可以根据终端发送的针对索引信息进行查询的查询请求来准确的查询到符合查询请求的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,在本实施例中,通过发送加密后的初始数据元组至服务器,并在服务器查询并删除存储的加密后的初始数据元组之后,使用待存储的数据元组更新初始数据元组,并重新将待存储数据元组存储至服务器,达到了终端可以实时更新服务器中存储的加密后的数据元组的效果。
实施例十四
请参考图20,其示出了本发明实施例十四提供的终端的结构方框图,该结构方框图用于在包含有实施例一提供的存储器的服务器中查询数据,该终端可以包括:接收机1010、处理器1020和发射机1030;
接收机1010,用于接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
处理器1020,用于将所述接收机1010接收到的所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
发射机1030,用于发送所述处理器1020处理得到的所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
所述接收机1010,还用于接收所述服务器反馈的所述加密后的数据元组。
综上所述,本实施例提供的终端,通过将接收到的针对数据元组的预定属性的属性值进行查询的第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,从而服务器可以根据存储的各数据元组的索引信息来查询索引信息符合第二查询请求的数据元组,并将查询到的数据数据反馈至终端,使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例十五
作为实施例十四的优选实施例,在本实施例中,该终端可以包括:接收机1010、处理器1020和发射机1030;
接收机1010,用于接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
处理器1020,用于将所述接收机1010接收到的所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
发射机1030,用于发送所述处理器1020处理得到的所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
所述接收机1010,还用于接收所述服务器反馈的所述加密后的数据元组。
在本实施例的一种可能的实现方式中,若所述第一查询请求为等值查询,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,
所述处理器1010,还用于构建所述第一数据集中第一索引与所述第二数据集中第一索引之间的第一连接,所述第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
对于等值区间中的各个预定分段i,构建所述第一数据集中第二索引与所述第二数据集中第二索引之间的第二连接,所述第二连接包括:a.第二索引=axi且b.第二索引=bxi;
对于等值区间中的每个预定分段i,构建所述数据元组属于第一数据集时的偏移值ay与所述数据元组属于第二数据集时的偏移值by之间的第三连接,所述第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
将所述第一连接、所述第二连接和所述第三连接作为所述第二查询请求。
综上所述,本实施例提供的终端,通过将接收到的针对数据元组的预定属性的属性值进行查询的第一查询请求转化为针对数据元组的索引信息进行查询的第二查询请求,发送第二查询请求至服务器,从而服务器可以根据存储的各数据元组的索引信息来查询索引信息符合第二查询请求的数据元组,并将查询到的数据数据反馈至终端,使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
实施例十六
请参考图21,其示出了本发明实施例十六提供的数据查询装置的结构方框图,该数据查询装置可以实现为服务器中的全部或者部分,该数据查询装置可以包括:接收机2010、处理器2020和发射机2030;
接收机2010,用于接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
处理器2020,用于查询索引信息符合所述第二查询请求的加密后的数据元组;
发射机2030,用于反馈查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
综上所述,本实施例提供的数据查询装置,通过接收终端发送的针对数据元组的索引信息进行查询的第二查询请求,查询索引信息符合第二查询请求的加密后的数据元组,并反馈查询到的加密后的数据元组至终端,其中索引信息与数据元组一一对应,从而使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。
实施例十七
作为实施例十六的优选实施例,在本实施例中,该数据查询装置可以包括:接收机2010、处理器2020和发射机2030;
接收机2010,用于接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
处理器2020,用于查询索引信息符合所述第二查询请求的加密后的数据元组;
发射机2030,用于反馈查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
在本实施例的一种可能的实现方式中,
若所述第二查询请求是由等值查询转换成的包括第一连接、第二连接和第三连接的请求,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,
所述处理器2020,还用于根据所述第一连接查询符合第一条件的数据元组,所述第一条件为:第一索引为所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
在符合所述第一条件的数据元组中,根据所述第二连接查询符合第二条件的至少一个数据元组组合Ci,所述第二条件为:所述数据元组组合Ci中的数据元组的第二索引为axi或者byi;
在符合所述第二条件的每个数据元组组合Ci中,根据所述第三连接查询符合第三条件的至少一个数据元组子组合Di,所述第三条件为:所述数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
综上所述,本实施例提供的数据查询装置,通过接收终端发送的针对数据元组的索引信息进行查询的第二查询请求,查询索引信息符合第二查询请求的加密后的数据元组,并反馈查询到的加密后的数据元组至终端,其中索引信息与数据元组一一对应,从而使得终端接收到的数据元组都是请求查询的数据元组,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时在本实施例中,当第二查询请求是由等值查询转化得到的第一连接、第二连接和第三连接的查询请求时,通过查询第一索引、第二索引和偏移值来符合第二查询请求的数据元组,使得服务器可以准确的查询到符合查询请求的每个数据元组,提高了数据查询效率。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
实施例十八
本实施例提供了一种数据查询系统,该数据查询系统可以包括终端3010、终端3020和数据查询装置3030;其中,关于终端3010的详细技术细节请参考实施例六或者实施例七;关于终端3020的详细技术细节请参考实施例八或实施例九;关于数据查询装置3030的详细技术细节请参考实施例十或者实施例十一。
综上所述,本实施例提供的数据查询系统,通过使用终端将待存储的数据元组加密,并创建每个数据元组的索引信息,从而发送加密后的数据元组以及每个数据元组的索引信息至服务器,相应的,服务器接收并存储终端发送的加密后的数据元组以及每个数据元组的索引信息;当终端需要查询服务器中的数据时,服务器接收终端发送的针对数据元组的索引信息的第二查询请求,从而查询索引信息符合第二查询请求的数据元组,并反馈查询到的数据元组至终端,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
实施例十九
本实施例提供了一种数据查询系统,该数据查询系统可以包括终端4010、终端4020和数据查询装置4030;其中,关于终端4010的详细技术细节请参考实施例十二或者实施例十三;关于终端3020的详细技术细节请参考实施例十四或实施例十五;关于数据查询装置3030的详细技术细节请参考实施例十六或者实施例十七。
综上所述,本实施例提供的数据查询系统,通过使用终端将待存储的数据元组加密,并创建每个数据元组的索引信息,从而发送加密后的数据元组以及每个数据元组的索引信息至服务器,相应的,服务器接收并存储终端发送的加密后的数据元组以及每个数据元组的索引信息;当终端需要查询服务器中的数据时,服务器接收终端发送的针对数据元组的索引信息的第二查询请求,从而查询索引信息符合第二查询请求的数据元组,并反馈查询到的数据元组至终端,解决了现有技术中数据安全性差、客户端解密复杂度大以及数据查询效率低的问题,达到了终端接收到的数据都是符合查询请求的数据,从而保证了服务器中数据的安全性、降低终端解密复杂度以及提高数据查询效率的效果。同时,由于第一数据集的等值区间中的预定分段和第二数据集的等值区间中的预定分段具有相同的取值范围,避免了数据查询时的复杂度,减少了网络传输时的时延,提高了数据查询效率。
需要说明的是:上述实施例提供的终端、数据查询装置和数据查询系统在进行数据查询时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的终端、数据查询装置和数据查询系统与数据查询方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (25)
1.一种存储器,其特征在于,所述存储器存储有加密后的至少一个数据元组以及每个数据元组的索引信息,每个数据元组包含至少一个属性的属性值,每个数据元组属于第一数据集或者第二数据集,其中:
每个数据元组的索引信息包括第一索引、第二索引和偏移值三者中的第一个或者全部三个;
所述第一索引包括所述数据元组的预定属性的属性值属于恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引、所述数据元组的预定属性的属性值属于恒小于区间Sa<<b时的索引和所述数据元组的预定属性的属性值属于恒小于区间Sb<<a时的索引中的任一种;
所述恒大于区间Sa>>b是所述第一数据集中数据元组的预定属性的属性值恒大于所述第二数据集中所有数据元组的预定属性的属性值的区间;
所述恒大于区间Sb>>a是所述第二数据集中数据元组的预定属性的属性值恒大于所述第一数据集中所有数据元组的预定属性的属性值的区间;
所述等值区间Sa=b是所述第一数据集中数据元组的预定属性的属性值与所述第二数据集中数据元组的预定属性的属性值重叠的区间,所述等值区间包括至少一个预定分段;
所述恒小于区间Sa<<b是所述第一数据集中数据元组的预定属性的属性值恒小于所述第二数据集中所有数据元组的预定属性的属性值的区间;
所述恒小于区间Sb<<a是所述第二数据集中数据元组的预定属性的属性值恒小于所述第一数据集中所有数据元组的预定属性的属性值的区间;
所述第二索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b中的预定分段时的索引;
所述偏移值包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b中的预定分段时与所述预定分段中的预定基准值之间的偏移值。
2.一种数据存储方法,其特征在于,用于终端中,所述终端用于在服务器中查询数据,所述服务器包含有权利要求1所述的存储器,所述方法包括:
确定待存储的每个数据元组的索引信息;
将待存储的每个数据元组进行加密;
将加密后的所述数据元组以及所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
3.根据权利要求2所述的数据存储方法,其特征在于,所述确定每个数据元组的索引信息,包括:
确定每个数据元组的第一索引;
若确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于所述恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于所述恒小于区间Sa<<b时的索引或者所述数据元组的预定属性的属性值属于所述恒小于区间Sb<<a时的索引,则将所述第一索引作为所述数据元组的索引信息;
若确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b时的索引,则确定所述数据元组的第二索引和偏移值,并将所述第一索引、所述第二索引和所述偏移值作为所述数据元组的索引信息。
4.根据权利要求3所述的数据存储方法,其特征在于,所述确定每个数据元组的第一索引,包括:
检测所述数据元组的预定属性的属性值属于所述数据元组所在的数据集的哪一个值域区间;所述值域区间包括所述恒大于区间Sa>>b、所述恒大于区间Sb>>a、所述等值区间Sa=b、所述恒小于区间Sa<<b和所述恒小于区间Sb<<a中的至少一种;
根据检测结果确定所述数据元组的第一索引。
5.根据权利要求4所述的数据存储方法,其特征在于,所述确定所述数据元组的第一索引之前,还包括:
根据所述第一数据集中各数据元组的预定属性的属性值的大小以及所述第二数据集中各数据元组的预定属性的属性值的大小,划分值域区间。
6.根据权利要求3至5任一所述的数据存储方法,其特征在于,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述确定所述数据元组的第二索引和偏移值,包括:
检测所述数据元组属于所述第一数据集还是属于所述第二数据集;
若检测结果为所述数据元组属于所述第一数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值axi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值ayi的差值ay,将计算得到的所述差值ay作为所述偏移值;
若检测结果为所述数据元组属于所述第二数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值byi的差值by,将计算得到的所述差值by作为所述偏移值。
7.根据权利要求2至5任一所述的数据存储方法,其特征在于,所述确定待存储的每个数据元组的索引信息之前,还包括:
将初始数据元组进行加密,并发送加密后的所述初始数据元组至服务器,以便所述服务器查询并删除所述初始数据元组;
将所述初始数据元组更新为所述待存储的数据元组;
执行所述确定待存储的每个数据元组的索引信息的步骤。
8.根据权利要求2至5任一所述的数据存储方法,其特征在于,所述方法还包括:
对待删除的数据元组进行加密,并发送加密后的所述待删除的数据元组至服务器,以便所述服务器查询并删除所述待删除的数据元组。
9.一种数据查询方法,其特征在于,用于终端中,所述终端用于在服务器中查询数据,所述服务器包含有权利要求1所述的存储器,所述方法包括:
接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
将所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
发送所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
接收所述服务器反馈的所述加密后的数据元组。
10.根据权利要求9所述的数据查询方法,其特征在于,若所述第一查询请求为等值查询,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述将所述第一查询请求转化为第二查询请求,包括:
构建所述第一数据集中第一索引与所述第二数据集中第一索引之间的第一连接,所述第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
对于等值区间中的各个预定分段i,构建所述第一数据集中第二索引与所述第二数据集中第二索引之间的第二连接,所述第二连接包括:a.第二索引=axi且b.第二索引=bxi;
对于等值区间中的每个预定分段i,构建所述数据元组属于第一数据集时的偏移值ay与所述数据元组属于第二数据集时的偏移值by之间的第三连接,所述第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
将所述第一连接、所述第二连接和所述第三连接作为所述第二查询请求。
11.一种数据查询方法,其特征在于,用于服务器中,所述服务器包含有如权利要求1所述的存储器,所述方法包括:
接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
查询索引信息符合所述第二查询请求的加密后的数据元组;
反馈查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
12.根据权利要求11所述的数据查询方法,其特征在于,若所述第二查询请求是由等值查询转换成的包括第一连接、第二连接和第三连接的请求,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,
则所述查询索引信息符合所述查询请求的加密后的数据元组,包括:
根据所述第一连接查询符合第一条件的数据元组,所述第一条件为:第一索引为所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
在符合所述第一条件的数据元组中,根据所述第二连接查询符合第二条件的至少一个数据元组组合Ci,所述第二条件为:所述数据元组组合Ci中的数据元组的第二索引为axi或者byi;
在符合所述第二条件的每个数据元组组合Ci中,根据所述第三连接查询符合第三条件的至少一个数据元组子组合Di,所述第三条件为:所述数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
13.一种终端,其特征在于,所述终端于向服务器中存储数据,所述服务器包含有权利要求1所述的存储器,所述终端包括:
信息确定模块,用于确定待存储的每个数据元组的索引信息;
数据加密模块,用于将待存储的每个数据元组进行加密;
信息发送模块,用于将所述数据加密模块加密后的所述数据元组以及所述信息确定模块确定的所述数据元组的索引信息发送至服务器,以便所述服务器接收并存储加密后的所述数据元组以及所述数据元组的索引信息。
14.根据权利要求13所述的终端,其特征在于,所述信息确定模块,包括:
第一确定单元,用于确定每个数据元组的第一索引;
第二确定单元,用于若所述第一确定单元确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述恒大于区间Sa>>b时的索引、所述数据元组的预定属性的属性值属于所述恒大于区间Sb>>a时的索引、所述数据元组的预定属性的属性值属于所述恒小于区间Sa<<b时的索引或者所述数据元组的预定属性的属性值属于所述恒小于区间Sb<<a时的索引,则将所述第一索引作为所述数据元组的索引信息;
第三确定单元,还用于若所述第一确定单元确定的所述第一索引包括所述数据元组的预定属性的属性值属于所述等值区间Sa=b时的索引,则确定所述数据元组的第二索引和偏移值,并将所述第一索引、所述第二索引和所述偏移值作为所述数据元组的索引信息。
15.根据权利要求14所述的终端,其特征在于,所述第一确定单元,包括:
区间检测子单元,用于检测所述数据元组的预定属性的属性值属于所述数据元组所在的数据集的哪一个值域区间;所述值域区间包括所述恒大于区间Sa>>b、所述恒大于区间Sb>>a、所述等值区间Sa=b、所述恒小于区间Sa<<b和所述恒小于区间Sb<<a中的至少一种;
第一确定子单元,用于根据所述区间检测子单元的检测结果确定所述数据元组的第一索引。
16.根据权利要求15所述的终端,其特征在于,所述信息确定模块,还包括:
区间划分单元,用于根据所述第一数据集中各数据元组的预定属性的属性值的大小以及所述第二数据集中各数据元组的预定属性的属性值的大小,划分所述值域区间。
17.根据权利要求14至16任一所述的终端,其特征在于,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述第三确定单元,包括:
数据检测子单元,用于检测所述数据元组属于所述第一数据集还是属于所述第二数据集;
第二确定子单元,用于若所述数据检测子单元的检测结果为所述数据元组属于所述第一数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值axi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值ayi的差值ay,将计算得到的所述差值ay作为所述偏移值;
第三确定子单元,用于若所述数据检测子单元的检测结果为所述数据元组属于所述第二数据集,将所述数据元组的预定属性的属性值所在的预定分段i的映射值bxi作为所述第二索引;计算所述数据元组的预定属性的属性值与所述预定分段i中的预定基准值byi的差值by,将计算得到的所述差值by作为所述偏移值。
18.根据权利要求13至16任一所述的终端,其特征在于,所述终端还包括:
第一加密模块,用于将初始数据元组进行加密;
第一发送模块,用于并发送所述第一加密模块加密后的所述初始数据元组至服务器,以便所述服务器查询并删除所述初始数据元组;
数据更新模块,用于将所述初始数据元组更新为所述待存储的数据元组;
步骤执行模块,用于执行所述确定待存储的每个数据元组的索引信息的步骤。
19.根据权利要求13至16任一所述的终端,其特征在于,所述终端还包括:
第二加密模块,用于对待删除的数据元组进行加密;
第二发送模块,用于发送所述第二加密模块加密后的所述待删除的数据元组至服务器,以便所述服务器查询并删除所述待删除的数据元组。
20.一种终端,其特征在于,所述终端用于在服务器中查询数据,所述服务器包含有权利要求1所述的存储器,所述终端包括:
请求接收模块,用于接收第一查询请求,所述第一查询请求为针对数据元组的预定属性的属性值进行查询的请求;
请求转化模块,用于将所述请求接收模块接收到的所述第一查询请求转化为第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
请求发送模块,用于发送所述请求转化模块转化得到的所述第二查询请求至服务器,以便所述服务器查询索引信息符合所述第二查询请求的加密后的数据元组,并反馈查询到的所述加密后的数据元组;
数据接收模块,用于接收所述服务器反馈的所述加密后的数据元组。
21.根据权利要求20所述的终端,其特征在于,若所述第一查询请求为等值查询,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述请求转化模块,包括:
第一构建单元,用于构建所述第一数据集中第一索引与所述第二数据集中第一索引之间的第一连接,所述第一连接包括:a.第一索引=Sa=b且b.第一索引=Sa=b;
第二构建单元,用于对于等值区间中的各个预定分段i,构建所述第一数据集中第二索引与所述第二数据集中第二索引之间的第二连接,所述第二连接包括:a.第二索引=axi且b.第二索引=bxi;
第三构建单元,用于对于等值区间中的每个预定分段i,构建所述数据元组属于第一数据集时的偏移值ay与所述数据元组属于第二数据集时的偏移值by之间的第三连接,所述第三连接包括:a.偏移值ay=b.偏移值by+(byi-ayi);
请求生成单元,用于将所述第一连接、所述第二连接和所述第三连接作为所述第二查询请求。
22.一种数据查询装置,其特征在于,所述装置用于服务器中,所述服务器包含有如权利要求1所述的存储器,所述数据查询装置,包括:
请求接收模块,用于接收终端发送的第二查询请求,所述第二查询请求为针对所述数据元组的索引信息进行查询的请求;
数据查询模块,用于查询索引信息符合所述查询请求的加密后的数据元组;
数据反馈模块,用于反馈所述数据查询模块查询到的所述加密后的数据元组至所述终端,以便所述终端接收所述加密后的数据元组。
23.根据权利要求22所述的数据查询装置,其特征在于,若所述第二查询请求是由等值查询转换成的包括第一连接、第二连接和第三连接的请求,所述等值区间Sa=b包括至少一个预定分段i,i≥1,每个预定分段分别对应有数据元组属于第一数据集时的映射值axi和预定基准值ayi、数据元组属于第二数据集时的映射值bxi和预定基准值byi,所述数据查询模块,包括:
第一查询单元,用于根据所述第一连接查询符合第一条件的数据元组,所述第一条件为:第一索引为所述数据元组的预定属性的属性值属于等值区间Sa=b时的索引;
第二查询单元,用于在符合所述第一条件的数据元组中,根据所述第二连接查询符合第二条件的至少一个数据元组组合Ci,所述第二条件为:所述数据元组组合Ci中的数据元组的第二索引为axi或者byi;
第三查询单元,用于在符合所述第二条件的每个数据元组组合Ci中,根据所述第三连接查询符合第三条件的至少一个数据元组子组合Di,所述第三条件为:所述数据元组子组合Di包括两个数据元组,其中一个数据元组的偏移值ay=(另一个数据元组的预定偏移值为by+(byi-ayi))。
24.一种服务器,其特征在于,其包括如权利要求22或23所述的数据查询装置。
25.一种数据查询系统,其特征在于,其包括如权利要求13至19任一所述的终端、如权利要求20或21所述的终端以及如权利要求24所述的服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310256970.3A CN104252460B (zh) | 2013-06-25 | 2013-06-25 | 数据存储方法、查询方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310256970.3A CN104252460B (zh) | 2013-06-25 | 2013-06-25 | 数据存储方法、查询方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104252460A CN104252460A (zh) | 2014-12-31 |
CN104252460B true CN104252460B (zh) | 2017-11-24 |
Family
ID=52187368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310256970.3A Active CN104252460B (zh) | 2013-06-25 | 2013-06-25 | 数据存储方法、查询方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104252460B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577506B (zh) * | 2017-08-07 | 2021-03-19 | 台州市吉吉知识产权运营有限公司 | 一种数据预加载的方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890678A (zh) * | 2011-07-20 | 2013-01-23 | 华东师范大学 | 一种基于格雷编码的分布式数据布局方法及查询方法 |
CN103250161A (zh) * | 2010-10-27 | 2013-08-14 | 苹果公司 | 用于处理私有元数据的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684710B2 (en) * | 2009-05-28 | 2017-06-20 | Microsoft Technology Licensing, Llc | Extending random number summation as an order-preserving encryption scheme |
KR101216995B1 (ko) * | 2010-12-03 | 2012-12-31 | 충남대학교산학협력단 | 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법 |
KR20120068524A (ko) * | 2010-12-17 | 2012-06-27 | 한국전자통신연구원 | 데이터 관리 장치 및 데이터 관리 방법 |
-
2013
- 2013-06-25 CN CN201310256970.3A patent/CN104252460B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103250161A (zh) * | 2010-10-27 | 2013-08-14 | 苹果公司 | 用于处理私有元数据的方法 |
CN102890678A (zh) * | 2011-07-20 | 2013-01-23 | 华东师范大学 | 一种基于格雷编码的分布式数据布局方法及查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104252460A (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522735B (zh) | 一种基于智能合约的数据权限验证方法及装置 | |
CN106127075B (zh) | 一种云存储环境下基于隐私保护的可搜索加密方法 | |
US20210385087A1 (en) | Zero-knowledge identity verification in a distributed computing system | |
CN101694672B (zh) | 一种分布式安全检索系统 | |
US11263344B2 (en) | Data management method and registration method for an anonymous data sharing system, as well as data manager and anonymous data sharing system | |
US7620630B2 (en) | Directory system | |
US20200287718A1 (en) | Zero-knowledge identity verification in a distributed computing system | |
US20120136960A1 (en) | Cloud Storage Data Access Method, Apparatus and System | |
CN107798038A (zh) | 数据响应方法及数据响应设备 | |
CN109359480A (zh) | 一种面向数字图书馆的用户隐私保护方法及系统 | |
CN106131244A (zh) | 一种报文传送方法及装置 | |
CN106790060A (zh) | 一种基于角色访问控制的权限管理方法及装置 | |
US20070208946A1 (en) | High performance secure caching in the mid-tier | |
CN103812774B (zh) | 基于tcam的策略配置方法、报文处理方法及相应装置 | |
CN104252460B (zh) | 数据存储方法、查询方法、装置及系统 | |
WO2020156482A1 (zh) | 交易替换方法、交易排队方法、设备和存储介质 | |
CN107545039A (zh) | 关键词的指数获取方法和装置、计算机设备和存储介质 | |
CN106354882A (zh) | 一种查询服务平台及其查询方法 | |
KR20140013892A (ko) | 복수의 정보 시스템에서의 출력 비교 방법 | |
CN113806795B (zh) | 一种两方隐私集合并集计算方法和装置 | |
CN110019456A (zh) | 数据导入方法、装置和系统 | |
CN114416871A (zh) | 基于区块链的数据处理方法、装置、设备、系统及介质 | |
KR102571783B1 (ko) | 대용량 검색 처리를 수행하는 검색 처리 시스템 및 그 제어방법 | |
CN110213218A (zh) | 用于数据传输的灰度控制方法、设备和介质 | |
CN114398400B (zh) | 一种基于主动学习的Serverless资源池系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |