CN108629196B - 数据存储和查询的方法、装置、电子设备和可读存储介质 - Google Patents
数据存储和查询的方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN108629196B CN108629196B CN201710168815.4A CN201710168815A CN108629196B CN 108629196 B CN108629196 B CN 108629196B CN 201710168815 A CN201710168815 A CN 201710168815A CN 108629196 B CN108629196 B CN 108629196B
- Authority
- CN
- China
- Prior art keywords
- key
- key name
- query
- random number
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- 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/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储和查询的方法、装置、电子设备和可读存储介质,能够大幅度降低云存储服务提供商和用户端的计算开销,同时可以更好地保护用户的数据隐私和查询隐私,提高数据查询效率。本发明的数据存储方法包括:将键‑值对数据的键名和键值分别拆分成键名分段和键值分段,并生成一个唯一的随机数与所述键‑值对数据相对应;将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的服务器进行存储。
Description
技术领域
本发明涉及计算机和计算机软件技术领域,特别地涉及一种数据存储和查询的方法、装置、电子设备和可读存储介质。
背景技术
在云存储环境下,用户需要上传数据到云存储服务商处并保存在云服务器内,此时,由于数据脱离了用户的管制,故无法确保数据的安全性。
从用户的角度来说,他们对隐私保护的诉求主要包含以下两点:一是数据隐私,即用户需要确保自己上传的数据受到了安全保护;二是查询隐私,即用户需要确保自己提交的查询内容无法被识别。
为了保护用户的隐私,云服务提供商一般会首先对用户的原始数据集进行加密处理,得到密文W,然后在用户希望查询自己的某项数据时,对查询的关键字也进行加密处理,得到检索关键字w,并提交给云服务提供商。云服务提供商利用检测算法,判断密文W中的哪些数据和w匹配,并返回加密的查询结果,再由用户进行解密得到明文的查询结果。在用户多,数据规模大时,云服务提供商和用户将面临以下问题:
1、加解密算法在性能和效率上的困难;
2、密钥管理的困难。
目前云存储环境下用户数据和查询隐私保护问题的解决方案,大多都基于密码学体制来实现的,所以也都存在前面提到的两点问题。为了避免因为采用密码学技术造成的上述两点困难,研究者们也提出了一些基于分离存储的解决方案,通过剪断用户数据之间或者用户数据和用户身份之间的联系,达到信息不可识别的目的,从而保护用户隐私。比如:在一个医疗病例系统中,将用户身份(如姓名或者身份证号)和病史数据分别存储在不同的位置。在查询时,首先根据身份得到一个标识,再利用此标识,在病史数据中找到对应的疾病信息等病史数据。在此过程中,单独拥有任何信息的一方都无法对用户隐私造成威胁。
以目前常用的键值对key-value存储系统模型为例,现有的云存储环境下数据的存储和查询方案的实现过程示意图如图1所示。现有技术方案是基于K-Server的公钥保证了任何独立的云存储服务商都无法获取完整的用户信息,以保证用户的数据隐私。现有方案分为两个阶段实施:
1、registration stage,即注册阶段。在此阶段中,假设用户A要将数据进行存储,那么,用户A首先将自己完整的键值对数据分为键名key和键值value两个部分,其中键名记为Ki,键值记为Vi;接着用存储key信息的服务提供商K-Server的公钥对key信息加密得到Epk(Ki);然后,连同键值Vi一起上传给存储value信息的服务提供商V-Server。V-Server接收到用户A发来的数据Epk(Ki)和Vi后,首先为此条数据记录生成一个唯一的标识符Ri,并保存所有与该value相关的信息,即:<用户A,Vi,Ri>;然后,把Epk(Ki)和Ri一起发送给K-Server。K-Server接收到V-Server发来的数据后进行解密,并把Ki和Ri关联存储。如此,即可实现将用户A的数据分别保存在两个不同地方;
2、query stage,即查询阶段。在此阶段中,当用户需要查询信息时,需要知道具体的键名。假设用户B想要查询与某个特定的键名Ks相关的信息。首先,用户B同样使用K-Server的公钥对key信息加密得到Epk(Ks);然后,将Epk(Ks)发送至用于存储键值信息的服务提供商V-Server处。V-Server接收到用户B的查询请求后,为此次查询生成一个唯一的标识符Rs,用于识别从K-Server处收到的查询结果属于哪条查询,之后把用户B发来的关键字Epk(Ks)和唯一标识符Rs一起发送给K-Server。K-Server用自己的私钥对Epk(Ks)进行解密后得到Ks,之后查找到与Ks一致的key信息Ki和与Ki关联的唯一标识符Ri,然后把Ri和Rs一起返回给V-Server。V-Server根据唯一标识符Ri找到结果Vi和用户A,返回给用户B以完成此次查询。
在实现本发明的过程中,发明人发现现有技术存在如下技术问题:
1、没有充分考虑用户对查询隐私的安全诉求,不能够保证用户的查询内容不被获取;
2、现有的技术方案只能够支持关键字匹配的查询,无法进行范围查询,当需要进行多个关键字的查询时,需要查询多次。
发明内容
有鉴于此,本发明提供一种数据存储和查询的方法、装置、电子设备和可读存储介质,能够大幅度降低云存储服务提供商和用户端的计算开销,同时可以更好地保护用户的数据隐私和查询隐私,提高数据查询效率。
为实现上述目的,根据本发明的一个方面,提供了一种数据存储的方法。
一种数据存储的方法,包括:将键-值对数据的键名和键值分别拆分成键名分段和键值分段,并生成一个唯一的随机数与所述键-值对数据相对应;将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的服务器进行存储。
可选地,所述键名和所述键值根据以下规则进行拆分:将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定;将所述键值根据内容顺序拆分为多个键值分段。
可选地,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
可选地,将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的服务器进行存储包括:将所述随机数和所述键名分段关联,并根据所述键名分段的顺序号依次存储在指定的多个服务器中;将所述随机数和所述键值分段关联,并根据所述键值分段的顺序号依次存储在指定的多个服务器中。
根据本发明的另一方面,提供了一种数据查询的方法。
一种利用本发明所提供的数据存储的方法实现数据查询的方法,包括:将查询键名拆分为多个键名分段,所述键名分段具有顺序号;将所述键名分段分别发送给存储所述键名分段的服务器,所述服务器具有预定的顺序,且所述键名分段的顺序号与所述预定的顺序一致;按照所述预定的顺序依次遍历所述服务器,并根据所述服务器对应的键名分段,确定满足所述查询键名的随机数集合;根据所述随机数集合,从存储键值分段的服务器中查询所述随机数集合对应的键值分段,并将所述键值分段进行重组以得到所述查询键值。
可选地,所述键名的拆分规则包括:将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定。
可选地,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
可选地,确定满足所述查询键名的随机数集合包括:获取随机数集合;根据所述服务器接收的所述键名分段,从所述随机数集合中查询满足所述键名分段的随机数;将所述满足所述键名分段的随机数更新为所述随机数集合;将更新后的所述随机数集合发送给所述预定的顺序中指定的下一个服务器;待所有服务器完成查询后,得到的所述随机数集合即为满足所述查询键名的随机数集合;其中,根据所述预定的顺序,第一个服务器获取的随机数集合为所述第一个服务器中保存的所有随机数。
可选地,所述键值分段具有顺序号,根据所述键值分段的顺序号将所述键值分段重组得到所述查询键值。
可选地,所述查询键名包括数值或数值范围,并且,所述数值范围由查询上界和查询下界来限定。
可选地,若所述查询键名为数值范围,则将所述查询上界和所述查询下界分别按照所述键名的拆分规则进行拆分;并且,所述随机数集合包括上边界集合、下边界集合和确界集合,其中,所述上边界集合为所述查询上界对应的随机数的集合,所述下边界集合为所述查询下界对应的随机数的集合,所述确界集合为所述查询上界和所述查询下界之间的数值对应的随机数的集合。
可选地,若所述查询键名为数值范围,则当所述随机数集合按照所述预定的顺序由一个服务器发送给下一个服务器时,所述下一个服务器通过以下步骤更新所述随机数集合:根据所述下一服务器对应的查询上界的分段,从所述上边界集合中查找所述分段上可取的最小值与所述查询上界的分段之间的数值对应的随机数,并将查找到的所述随机数中,所述查询上界的分段对应的随机数更新为所述上边界集合,其他随机数添加到所述确界集合中;以及根据所述下一服务器对应的查询下界的分段,从所述下边界集合中查找所述查询下界的分段与所述分段上可取的最大值之间的数值对应的随机数,并将查找到的所述随机数中,所述查询下界的分段对应的随机数更新为所述下边界集合,其他随机数添加到所述确界集合中。
根据本发明的又一方面,提供了一种数据存储的装置。
一种数据存储的装置,包括:数据处理模块,用于将键-值对数据的键名和键值分别拆分成键名分段和键值分段,并生成一个唯一的随机数与所述键-值对数据相对应;数据存储模块,用于将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的服务器进行存储。
可选地,所述键名和所述键值根据以下规则进行拆分:将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定;将所述键值根据内容顺序拆分为多个键值分段。
可选地,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
可选地,所述数据存储模块还用于:将所述随机数和所述键名分段关联,并根据所述键名分段的顺序号依次存储在指定的多个服务器中;将所述随机数和所述键值分段关联,并根据所述键值分段的顺序号依次存储在指定的多个服务器中。
根据本发明的又一方面,提供了一种数据查询的装置。
一种利用本发明所提供的数据存储的装置实现数据查询的装置,包括:键名拆分模块,用于将查询键名拆分为多个键名分段,所述键名分段具有顺序号;数据发送模块,用于将所述键名分段分别发送给存储所述键名分段的服务器,所述服务器具有预定的顺序,且所述键名分段的顺序号与所述预定的顺序一致;随机数确定模块,用于按照所述预定的顺序依次遍历所述服务器,并根据所述服务器对应的键名分段,确定满足所述查询键名的随机数集合;键值查询模块,用于根据所述随机数集合,从存储键值分段的服务器中查询所述随机数集合对应的键值分段,并将所述键值分段进行重组以得到所述查询键值。
可选地,所述键名的拆分规则包括:将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定。
可选地,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
可选地,所述随机数确定模块还用于:获取随机数集合;根据所述服务器接收的所述键名分段,从所述随机数集合中查询满足所述键名分段的随机数;将所述满足所述键名分段的随机数更新为所述随机数集合;将更新后的所述随机数集合发送给所述预定的顺序中指定的下一个服务器;待所有服务器完成查询后,得到的所述随机数集合即为满足所述查询键名的随机数集合;其中,根据所述预定的顺序,第一个服务器获取的随机数集合为所述第一个服务器中保存的所有随机数。
可选地,所述键值分段具有顺序号,根据所述键值分段的顺序号将所述键值分段重组得到所述查询键值。
可选地,所述查询键名包括数值或数值范围,并且,所述数值范围由查询上界和查询下界来限定。
可选地,若所述查询键名为数值范围,则将所述查询上界和所述查询下界分别按照所述键名的拆分规则进行拆分;并且,所述随机数集合包括上边界集合、下边界集合和确界集合,其中,所述上边界集合为所述查询上界对应的随机数的集合,所述下边界集合为所述查询下界对应的随机数的集合,所述确界集合为所述查询上界和所述查询下界之间的数值对应的随机数的集合。
可选地,若所述查询键名为数值范围,则当所述随机数集合按照所述预定的顺序由一个服务器发送给下一个服务器时,所述下一个服务器通过以下步骤更新所述随机数集合:根据所述下一服务器对应的查询上界的分段,从所述上边界集合中查找所述分段上可取的最小值与所述查询上界的分段之间的数值对应的随机数,并将查找到的所述随机数中,所述查询上界的分段对应的随机数更新为所述上边界集合,其他随机数添加到所述确界集合中;以及根据所述下一服务器对应的查询下界的分段,从所述下边界集合中查找所述查询下界的分段与所述分段上可取的最大值之间的数值对应的随机数,并将查找到的所述随机数中,所述查询下界的分段对应的随机数更新为所述下边界集合,其他随机数添加到所述确界集合中。
根据本发明的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的数据存储和/或数据查询的方法。
根据本发明的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的数据存储和/或数据查询的方法。
根据本发明的技术方案,通过对数据进行分离存储,并在数据存储和查询过程中按照一致的规则进行拆分,以实现分段存储和查询,从而不仅保护了用户的数据隐私和查询隐私,从安全的角度提升用户体验,促进云存储相关应用的健康发展,而且提高了数据存储和查询效率。另外,本发明在分段查询的过程中,通过各服务器之间的协作,对备选结果进行逐层过滤,以支持云存储下基于隐私保护的范围查询,从而不仅大幅度降低云存储服务提供商的计算开销,而且也减轻了用户端的计算开销,为通过智能手机这种计算能力有限的“轻”客户端进行数据存储和查询提供了很好的技术支持。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是现有的云存储环境下数据的存储和查询方案的实现过程示意图;
图2本发明实施例的实现原理架构图;
图3是根据本发明实施例的数据存储的方法的主要步骤示意图;
图4是根据本发明实施例的键名存储过程示意图;
图5是根据本发明实施例的数据查询的方法的主要步骤示意图;
图6是根据本发明实施例的数据查询时更新下边界集合的原理示意图;
图7是根据本发明实施例的数据存储的装置的主要模块示意图;
图8是根据本发明实施例的数据查询的装置的主要模块示意图;
图9是根据本发明实施例的数据存储和/或数据查询的方法的电子设备的硬件结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例为了更好地保护用户的数据隐私和查询隐私,在基于key-value数据的键名key和键值value分离的基础上,将key和value按位拆分为多个分段,然后将这些分段发布到不同的云存储服务商处,从而保证任何独立的云存储服务商都无法获取用户完整的查询内容。由于在进行数据存储和查询时,无论key为何种格式的内容,均可通过编码转换为数字,因此,为了方便介绍,本发明实施例中,以key为可以比较大小的整数为例来介绍数据存储和查询的过程。
图2是本发明实施例的实现原理架构图。图中的服务器代表云存储服务器。
如图2所示,本发明实施例的数据存储过程是:首先,为数据发布者的键值对key-value数据对应生成一个全局唯一的随机数,并将数据发布者的键值对key-value数据拆分成键信息key和值信息value两部分,将key和value分别进行拆分为多段;然后将拆分后的key的分段分别保存在用于存储key的云存储服务器(KServers)KS1、KS2、…、KSm上,将拆分后的value的分段分别保存在用于存储value的云存储服务器(VServers)VS1、VS2、…、VSn上。
本发明实施例的数据查询过程是:将数据查询者输入的查询关键字key按照数据存储时的拆分规则拆分成多段;再根据各分段从存储key的云存储服务器KS1、KS2、…、KSm上查找与查询关键字key对应的随机数;根据该随机数,从存储value的云存储服务器VS1、VS2、…、VSn上获取相应的value分段;最后,根据数据存储时value的拆分规则将value分段重组以得到查询结果,并将查询结果返回给数据查询者。
下面将结合附图介绍本发明实施例的实现过程。
图3是根据本发明实施例的数据存储的方法的主要步骤示意图。如图3所示,本发明的数据存储的方法主要包括如下的步骤S31和步骤S32。
步骤S31:将键-值对数据的键名和键值分别拆分成键名分段和键值分段,并生成一个唯一的随机数与该键-值对数据相对应;
步骤S32:将随机数分别与键名分段和键值分段关联并发送到指定的服务器进行存储。
其中,键名和键值根据以下规则进行拆分:将键名根据数位顺序拆分为多个键名分段,其中,键名被表示为整数,键名分段的长度固定;将键值根据内容顺序拆分为多个键值分段。
在对键名进行拆分时,若键名的长度不能被键名分段的长度整除,则对键名在高位以符号位和/或0进行填充,以使键名的长度被键名分段的长度整除。
另外,步骤S32中,在将随机数分别与键名分段和键值分段关联并发送到指定的服务器进行存储时,主要包括两部分内容:将所述随机数和所述键名分段关联,并根据所述键名分段的顺序号依次存储在指定的多个服务器中;将所述随机数和所述键值分段关联,并根据所述键值分段的顺序号依次存储在指定的多个服务器中。这两部分内容所描述的操作是同时进行的。
本发明的实施例中,以数字的二进制表示为例。由于本发明的技术方案中,对随机数集合的确定和更新过程是按照从高位到低位的先后顺序执行,所以无论2进制,或者10进制,都能满足技术方案执行的正确性。只是根据选取的拆分规则的不同,拆分的精度有差异。数据拆分的越精细,每个拆分得到的数据段所能表示的数据原始信息就越少,推测难度就越大,方案也就越安全,但是相应的,计算开销就会增加。因此,选用的拆分规则可根据情况具体分析来定。
在数据发布者上传数据到云存储服务器之前,需要先对key和value进行拆分。针对key的二进制表示,从高位到低位,每固定位数划分为一段,得到共n个键名分段:key1、key2、key3、…、keyn。以key是可以比较大小的整数为例,由于整数都由若干字节组成,取每个键名分段长度为8位或者8的因子如4位、2位进行划分,则key一定可以被键名分段整除,从而划分为多个键名分段。对于key无法被键名分段整除的情况,比如取每个键名分段长度为3位、5位等的情况,可以在key的高位以符号位或者0进行填充的方式进行补齐,以使key可以刚好划分为多个键名分段。
根据本发明实施例的技术方案,由于键值value不需要参与大小比较,而且类型不定,只需要保证拆分后能正确重组即可,所以对value的拆分过程中是否按照固定的位数,拆分成多少段等都不做限制,只需要能够打乱内容即可。
由于在进行数据存储和查询时,被拆分的key和value都需要重组以得到相应数据,因此,在进行key和value的拆分时,会为每个键名分段和键值分段赋予顺序号。
另外,为了将保存在不同云存储服务器的key和value对应起来,需要生成一个唯一的随机数R与进行key-value拆分的键值对数据对应。其中,随机数的生成没有固定的规则,只需要保证全局唯一性即可,比如可以使用UUID进行生成。
根据本发明实施例的技术方案,随机数R的生成和key-value数据的拆分,两个操作的执行顺序不固定,可同时执行,也可先生成随机数R再进行数据拆分,还可以先进行数据拆分再生成随机数R。
最后,把随机数R和拆分后的key和value的分段关联,并一起发送到对应的云存储服务器处进行存储。例如:高位的key分段和随机数R存放在专门存储高位key分段的云存储服务器处,次高位的key分段和随机数R存放在专门存储次高位key分段的云存储服务器处,依此类推。相应地,value的第一分段存放在专门存储第一键值分段的云存储服务器,value的第二分段存放在专门存储第二键值分段的云存储服务器,等等。
图4是根据本发明实施例的键名拆分和存储过程示意图。在数据发布者上传数据到云存储服务器之前,需对键名key进行拆分。如图4,当键名key不能刚好完整地划分为固定长度的分段时,通过在高位补0的方式进行补齐,之后,以8位为一个键名分段的长度,将key划分成如图所示的共8个键名分段:key1、key2、…、key8。然后,将随机数R分别和每个键名分段关联并上传到指定的云存储服务器KS1、KS2、…、KS8进行存储。
本发明实施例中,对键值value的拆分和存储过程与键名key类似,只是每个value的分段长度可以不固定,需要注意的是,一个key-value键值对数据对应一个相同的随机数R。
根据前述的内容,即可实现将key-value键值对数据保存到云存储服务器。通过将key和value进行拆分后再保存到服务器,可以更好地保护用户的数据隐私。同时,还能大幅度降低云存储服务器的计算开销,而且也减轻了用户端的计算开销。
根据前面实施例中介绍的数据存储的方法,本发明还提出了一种数据查询的方法。图5是根据本发明实施例的数据查询的方法的主要步骤示意图。如图5所示,本发明的数据查询的方法主要包括如下的步骤S51至步骤S54。
步骤S51:将查询键名拆分为多个键名分段,键名分段具有顺序号;
步骤S52:将键名分段分别发送给存述键名分段的服务器,服务器具有预定的顺序,且键名分段的顺序号与该预定的顺序一致;
步骤S53:按照预定的顺序依次遍历服务器,并根据服务器对应的键名分段,确定满足查询键名的随机数集合;
步骤S54:根据随机数集合,从存储键值分段的服务器中查询随机数集合对应的键值分段,并将键值分段进行重组以得到查询键值。
其中,键名的拆分规则包括:将键名根据数位顺序拆分为多个键名分段,其中,键名被表示为整数,键名分段的长度固定。
在对键名进行拆分时,若键名的长度不能被键名分段的长度整除,则对键名在高位以符号位和/或0进行填充,以使键名的长度被键名分段的长度整除。
根据本发明实施例的技术方案,步骤S53在确定满足所述查询键名的随机数集合时,可以按照以下步骤执行:
步骤S531:获取随机数集合;
步骤S532:根据服务器接收的键名分段,从随机数集合中查询满足键名分段的随机数;
步骤S533:将满足键名分段的随机数更新为随机数集合;
步骤S534:将更新后的随机数集合发送给预定的顺序中指定的下一个服务器;
步骤S535:待所有服务器完成查询后,得到的随机数集合即为满足查询键名的随机数集合;
其中,根据预定的顺序,第一个服务器获取的随机数集合为该第一个服务器中保存的所有随机数。
另外,键值分段具有顺序号,根据键值分段的顺序号将键值分段重组得到查询键值。
在本发明的实施例中,查询键名包括数值或数值范围,并且,数值范围由查询上界和查询下界来限定。
若查询键名为数值范围,则将查询上界和查询下界分别按照键名的拆分规则进行拆分;并且,随机数集合包括上边界集合、下边界集合和确界集合,其中,上边界集合为查询上界对应的随机数的集合,下边界集合为查询下界对应的随机数的集合,确界集合为查询上界和查询下界之间的数值对应的随机数的集合。
若查询键名为数值范围,则当随机数集合按照预定的顺序由一个服务器发送给下一个服务器时,下一个服务器通过以下方式更新随机数集合:
根据下一服务器对应的查询上界的分段,从上边界集合中查找分段上可取的最小值与查询上界的分段之间的数值对应的随机数,并将查找到的随机数中,查询上界的分段对应的随机数更新为上边界集合,其他随机数添加到确界集合中;以及
根据下一服务器对应的查询下界的分段,从下边界集合中查找查询下界的分段与分段上可取的最大值之间的数值对应的随机数,并将查找到的随机数中,查询下界的分段对应的随机数更新为下边界集合,其他随机数添加到确界集合中。
下面分别介绍当查询键名为数值和数值范围时,本发明的数据查询方法的实施过程。
当查询键名key为一个具体的数值时,在用户查询数据的过程中,首先把查询键名key按照数据存储时的拆分规则进行拆分为多个键名分段,每个键名分段具有顺序号,以用于对应查询键名拆分的顺序,例如:key1、key2、…、keyn。然后把该多个键名分段分别发送给指定的存储键名分段数据的服务器KS。云存储服务器具有预定的顺序,并与键名分段的顺序号对应。例如:将高位的键名分段key1发送给高位云存储服务器KS1。
按照键名分段由高位到低位的顺序,将键名分段依次发送给对应的云存储服务器。高位云存储服务器KS1首先从该服务器中保存的所有随机数中,查询满足对应的键名分段key1的随机数集合,然后将得到的随机数集合发送给次高位云存储服务器KS2。次高位云存储服务器KS2根据自己接收到的键名分段key2,从接收到的KS1发来的随机数集合中查询满足键名分段key2的随机数,并将这些随机数更新为新的随机数集合,然后将随机数集合发送给下一个云存储服务器KS3。依此类推,直到所有的云存储服务器都完成查询后,将最后得到的随机数集合返回。以便根据这个随机数集合,去存储查询键值value分段的云存储服务器中查询对应的键值分段,并按照键值分段的顺序号进行重组,即可得到最终的查询键值。其中,键值分段的顺序号为键值在存储到云存储服务器时,根据拆分规则生成的。
下面介绍当查询键名key为一个数值范围时,数据查询的实施过程。当查询键名key为一个数值范围时,该数值范围由查询上界和查询下界来限定。
在key-value存储方式下,范围查询指的是数据查询者输入的查询键名key为数值范围,需要查找所有满足该数值范围的key-value键值对。比如数据查询者需要查询数值范围[3,8],那么所有key满足大于3小于8的键值对都是满足查询条件的结果。其中3就对应查询下界,8就对应查询上界。查询范围以及查询上下界由用户根据实际需求提出。在用户提交数据查询请求时,查询键名key即查询上、下界也是按照前面所述的数据存储时的键名拆分规则进行拆分。
若查询键名key为数值范围,则在查询键值value时,首先把范围查询[key_bound,key_upper]的查询上界key_upper和查询下界key_bound都按照与数据存储时一致的规则进行拆分,分别得到查询上界分段key_upper_1、key_upper_2、…、key_upper_n和查询下界分段key_bound_1、key_bound_2、…、key_bound_n。
然后将查询上界key_upper和查询下界key_bound拆分得到的分段从高位到低位依次发送给对应的云存储服务器。
下面结合附图介绍云存储服务器查找和更新随机数集合的实施过程。
如图6所示,是根据本发明实施例的数据查询时更新下边界集合的原理示意图。
高位云存储服务器KS1,根据高位的查询分段key_upper_1和key_bound_1,得到所有满足高位分段查询结果的随机数。所有的随机数分为三类:key_bound_1对应的随机数集合称为下边界集合,key_upper_1对应的随机数集合称为上边界集合,两者之间的集合称为确界集合。如图6所示,上边界集合{R5、R6、…、Rt}、下边界集合{R1、R2、…、Rn}和确界集合{R3、R4、…、Rm}构成了高位云存储服务器KS1根据对应的查询键名分段得到的随机数集合。
将高位云存储服务器KS1查询得到的随机数集合传递给次高位云存储服务器KS2。次高位云存储服务器KS2将根据自己接收到的查询上界分段key_upper_2和查询下界分段key_bound_2,更新接收的随机数集合。次高位云存储服务器KS2主要执行的内容包括以下两部分:
次高位云存储服务器KS2根据自己接收到的查询上界分段key_upper_2,从上边界集合中查找MIN_VALUE~key_upper_2之间的数值对应的随机数,并将查找到的随机数中,查询上界分段key_upper_2对应的随机数更新为上边界集合,其他随机数添加到确界集合中;以及
次高位云存储服务器KS2根据自己接收到的查询下界分段key_bound_2,从下边界集合中查找key_bound_2~MAX_VALUE之间的数值对应的随机数,并将查找到的随机数中,查询下界分段key_bound_2对应的随机数更新为下边界集合,其他随机数添加到确界集合中。
其中,MAX_VALUE与MIN_VALUE分别是各位分段上可取的最大值与最小值。上面的两部分内容中更新上边界集合和更新下边界集合,可以同时执行,也可以分先后执行,且顺序可以根据需要自行设定。
在附图6中,次高位云存储服务器KS2从接收到的下边界集合{R1、R2、…、Rn}中,将不满足key_bound_2~MAX_VALUE之间的数值对应的随机数R1过滤掉,剩下随机数{R2、…、Rs、Rn}中,将key_bound_2对应的随机数{R2、…、Rs}更新为下边界集合,将随机数Rn转移到确界集合中,确界集合更新为{R3、R4、…、Rm、Rn}。
下面举一个具体的实施例来介绍查询键名为数值范围时的数据查询过程。
为了方便描述,此处以10进制的按位拆分为例进行说明。假设查询键名key为231~578,那么首先就在高位云存储服务器KS1上找到高位键名分段key1为2~5对应的随机数集合,其中,key_bound_1为2,其对应的随机数为下边界集合、key_upper_1为5,其对应的随机数为上边界集合,2~5之间的数字对应的随机数为确界集合。然后,将随机数集合传递给次高位云存储服务器KS2,次高位云存储服务器KS2根据对应的键名分段对随机数集合进行更新,主要过程如下:针对下边界集合,查找次高位分段满足3~9的随机数,或者过滤掉次高位分段不满足3~9(也就是20x,21x,22x,他们的次高位为0,1,2)的随机数,其中,9为各位分段上可以取的最大值。然后,把次高位为3对应的随机数更新为下边界集合,次高位为4~9对应的随机数移入确界集合中。同理对上边界集合,查找次高位分段满足0~7的随机数,过滤掉次高位分段不满足0~7(也就是58x,59x)的随机数,其中,0为各位分段上可以取的最小值。然后,把次高位为7对应的随机数更新为上边界集合,次高位为0~6对应的随机数移入确界集合中。最后将得到的随机数集合(上边界集合、下边界集合和确界集合)再发送给下一个云存储服务器。
依次类推,直到最低位云存储服务器完成随机数集合的更新后,返回最后得到的随机数集合。并利用这个随机数集合,去存储查询键名value分段的云存储服务器查询,并将查找到的查询键值分段按照对应的顺序号进行重组,即可得到最终的查询键值。
下面再举一个实施例来介绍本发明的查询键名为数值范围时的数据查询过程。
假设某医疗体系存储的病例原始数据集为如表1所示的键值对数据。
表1
key | value | 随机数 |
220 | 张三,30,骨折 | r1 |
239 | 李四,27,颈椎病 | r2 |
460 | 王五,38,癌症 | r3 |
598 | 赵六,19,牛皮癣 | r4 |
首先按照数据存储方法部分介绍的键名和键值的拆分规则及具体实施过程,对key-value数据集进行拆分。为了方便描述,此处以10进制的按位拆分为例进行说明。对key按照10进制位拆分,各保存键名分段的云存储服务器KS上得到的结果如表2所示。
表2
KS1高位值 | 随机数 | KS2次高位值 | 随机数 | KS3最低位值 | 随机数 |
2 | r1,r2 | 2 | r1 | 0 | r1,r3 |
4 | r3 | 3 | r2 | 8 | r4 |
5 | r4 | 6 | r3 | 9 | r2 |
- | - | 9 | r4 | - | - |
由于本发明的技术方案中对value的拆分不做限制,各保存键值分段的云存储服务器VS上得到的一种可能如表3所示。
表3
VS1 | 随机数 | VS2 | 随机数 |
张三 | r1 | 30,骨折 | r1 |
李四 | r2 | 27,颈椎病 | r2 |
王五 | r3 | 38,癌症 | r3 |
赵六 | r4 | 19,牛皮癣 | r4 |
当数据查询者输入的查询键名为数值范围231~578时,首先按照与前面实施例中一致的拆分规则,对查询上、下界进行拆分,得到三个查询分段key1=[2,5]、key2=[3,7]、key3=[1,8],分别发送给KS1,KS2,KS3。最高位云存储服务器KS1首先根据key1=[2,5]找到满足条件的随机数集合,并分为三类:下边界集合{r1,r2},确界集合{r3},上边界集合{r4}。之后,KS1把自己查询到的随机数集合发送给次高位云存储服务器KS2。
KS2根据自己接收到的查询键名分段key2=[3,7]对KS1发来的随机数集合进行更新。对于下边界集合{r1,r2},首先查找次高位分段满足3~9的随机数,过滤掉次高位分段不满足3~9的随机数r1,因为r1的次高位为2,小于3。由于r2对应的次高位等于3,因此保留r2不动,将{r2}更新为下边界集合。同理,KS2在上边界集合{r4}中过滤掉r4,因为其对应的次高位值为9,大于7,不满足查询条件。最后KS2上得到的随机数集合包括:下边界集合{r2}和确界集合{r3}。之后,KS2把更新后的随机数集合发送给最低位云存储服务器KS3。
KS3根据自己接收到的查询键名分段key3=[1,8]对KS2发来的随机数集合进行更新。对于下边界集合{r2},首先查找次高位分段满足1~9的随机数,由于r2在最低位对应的值为9,满足条件,并且大于1,所以将r2移入确界集合中。至此,最低位云存储服务器KS3经过查询,得到的随机数集合为确界集合{r2,r3},并将确界集合返回。
之后,根据得到的满足查询键名key的随机数集合{r2,r3},向保存查询键值分段的云存储服务器VS1,VS2提交查询。VS1,VS2根据自己存储的数据,找到r2、r3对应的内容并返回,即从VS1处收到{<r2,“李四”>,<r3,“王五”>},从VS2处收到{<r2,“27,颈椎病”>,<r3,“38,癌症”>}。最后,根据键值在存储到云存储服务器之前,进行拆分的过程中被赋予的顺序号,重组内容,即可得到最终的查询结果{<李四,27,颈椎病>,<王五,38,癌症>}。
从上述过程可以看出,整个数据查询过程中,任何独立的服务器KSi和VSj都没有获取到用户完整的数据以及查询内容和查询结果,从而保证了用户的数据隐私和查询隐私,从数据安全的角度提升用户体验,促进了云存储相关应用的健康发展。
图7是根据本发明实施例的数据存储的装置的主要模块示意图。如图7所示,本发明的数据存储的装置70主要包括数据处理模块71和数据存储模块72。
数据处理模块71用于将键-值对数据的键名和键值分别拆分成键名分段和键值分段,并生成一个唯一的随机数与所述键-值对数据相对应;数据存储模块72用于将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的服务器进行存储。
其中,所述键名和所述键值根据以下规则进行拆分:将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定;将所述键值根据内容顺序拆分为多个键值分段。
在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
数据存储模块72还可以用于:将所述随机数和所述键名分段关联,并根据所述键名分段的顺序号依次存储在指定的多个服务器中;将所述随机数和所述键值分段关联,并根据所述键值分段的顺序号依次存储在指定的多个服务器中。
图8是根据本发明实施例的数据查询的装置的主要模块示意图。如图8所示,本发明的数据查询的装置80主要包括键名拆分模块81、数据发送模块82、随机数确定模块83和键值查询模块84。
键名拆分模块81用于将查询键名拆分为多个键名分段,所述键名分段具有顺序号;数据发送模块82用于将所述键名分段分别发送给存储所述键名分段的服务器,所述服务器具有预定的顺序,且所述键名分段的顺序号与所述预定的顺序一致;随机数确定模块83用于按照所述预定的顺序依次遍历所述服务器,并根据所述服务器对应的键名分段,确定满足所述查询键名的随机数集合;键值查询模块84用于根据所述随机数集合,从存储键值分段的服务器中查询所述随机数集合对应的键值分段,并将所述键值分段进行重组以得到所述查询键值。
其中,所述键名的拆分规则包括:将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定。
在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
在本发明的实施例中,随机数确定模块83还可以用于:获取随机数集合;根据所述服务器接收的所述键名分段,从所述随机数集合中查询满足所述键名分段的随机数;将所述满足所述键名分段的随机数更新为所述随机数集合;将更新后的所述随机数集合发送给所述预定的顺序中指定的下一个服务器;待所有服务器完成查询后,得到的所述随机数集合即为满足所述查询键名的随机数集合;其中,根据所述预定的顺序,第一个服务器获取的随机数集合为所述第一个服务器中保存的所有随机数。
其中,所述键值分段具有顺序号,根据所述键值分段的顺序号将所述键值分段重组得到所述查询键值。
根据本发明的实施例,所述查询键名包括数值或数值范围,并且,所述数值范围由查询上界和查询下界来限定。
若所述查询键名为数值范围,则将所述查询上界和所述查询下界分别按照所述键名的拆分规则进行拆分;并且,所述随机数集合包括上边界集合、下边界集合和确界集合,其中,所述上边界集合为所述查询上界对应的随机数的集合,所述下边界集合为所述查询下界对应的随机数的集合,所述确界集合为所述查询上界和所述查询下界之间的数值对应的随机数的集合。
若所述查询键名为数值范围,则当所述随机数集合按照所述预定的顺序由一个服务器发送给下一个服务器时,所述下一个服务器通过以下步骤更新所述随机数集合:根据所述下一服务器对应的查询上界的分段,从所述上边界集合中查找所述分段上可取的最小值与所述查询上界的分段之间的数值对应的随机数,并将查找到的所述随机数中,所述查询上界的分段对应的随机数更新为所述上边界集合,其他随机数添加到所述确界集合中;以及根据所述下一服务器对应的查询下界的分段,从所述下边界集合中查找所述查询下界的分段与所述分段上可取的最大值之间的数值对应的随机数,并将查找到的所述随机数中,所述查询下界的分段对应的随机数更新为所述下边界集合,其他随机数添加到所述确界集合中。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的数据存储和/或数据查询的方法。
本发明的非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的数据存储和/或数据查询的方法。
如图9所示,是根据本发明实施例的数据存储和/或数据查询的方法的电子设备的硬件结构示意图。如图9,该电子设备包括:一个或多个处理器92以及存储器91,图9中以一个处理器92为例。其中,存储器91即为本发明所提供的非暂态计算机可读存储介质。
数据存储和/或数据查询的方法的电子设备还可以包括:输入装置93和输出装置94。
处理器92、存储器91、输入装置93和输出装置94可以通过总线或者其他方式连接,图9中以通过总线连接为例。
存储器91作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的数据存储和/或数据查询的方法对应的程序指令/模块(例如,附图7所示的数据处理模块71、数据存储模块72,和/或附图8所示的键名拆分模块81、数据发送模块82、随机数确定模块83和键值查询模块84)。处理器92通过运行存储在存储器91中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据存储和/或数据查询的方法。
存储器91可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据存储和/或数据查询的装置的使用所创建的数据等。此外,存储器91可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器91可选包括相对于处理器92远程设置的存储器,这些远程存储器可以通过网络连接至数据存储和/或数据查询的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置93可接收输入的数字或字符信息,以及产生与信息验证的装置的用户设置以及功能控制有关的键信号输入。输出装置94可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器91中,当被所述一个或者多个处理器92执行时,执行上述任意方法实施例中的数据存储和/或数据查询的方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
根据本发明实施例的技术方案,通过对数据进行分离存储,并在数据存储和查询过程中按照一致的规则进行拆分,以实现分段存储和查询,从而不仅保护了用户的数据隐私和查询隐私,从安全的角度提升用户体验,促进云存储相关应用的健康发展,而且提高了数据存储和查询效率。另外,本发明在分段查询的过程中,通过各服务器之间的协作,对备选结果进行逐层过滤,以支持云存储下基于隐私保护的范围查询,从而不仅大幅度降低云存储服务提供商的计算开销,而且也减轻了用户端的计算开销,为通过智能手机这种计算能力有限的“轻”客户端进行数据存储和查询提供了很好的技术支持。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (26)
1.一种数据存储的方法,其特征在于,包括:
将键-值对数据的键名和键值分别按位拆分成键名分段和键值分段,并生成一个唯一的随机数与所述键-值对数据相对应;
将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的多个服务器进行存储,其中,所述键名分段和所述键值分段被存储在不同的服务器。
2.根据权利要求1所述的方法,其特征在于,所述键名和所述键值根据以下规则进行拆分:
将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定;
将所述键值根据内容顺序拆分为多个键值分段。
3.根据权利要求2所述的方法,其特征在于,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
4.根据权利要求1所述的方法,其特征在于,将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的服务器进行存储包括:
将所述随机数和所述键名分段关联,并根据所述键名分段的顺序号依次存储在指定的多个服务器中;
将所述随机数和所述键值分段关联,并根据所述键值分段的顺序号依次存储在指定的多个服务器中。
5.一种利用权利要求1至4任一项所述的数据存储的方法实现数据查询的方法,其特征在于,包括:
将查询键名按位拆分为多个键名分段,所述键名分段具有顺序号;
将所述键名分段分别发送给存储所述键名分段的服务器,所述服务器具有预定的顺序,且所述键名分段的顺序号与所述预定的顺序一致;
按照所述预定的顺序依次遍历所述服务器,并根据所述服务器对应的键名分段,确定满足所述查询键名的随机数集合;
根据所述随机数集合,从存储键值分段的服务器中查询所述随机数集合对应的键值分段,并将所述键值分段进行重组以得到查询键值。
6.根据权利要求5所述的方法,其特征在于,所述键名的拆分规则包括:
将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定。
7.根据权利要求5所述的方法,其特征在于,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
8.根据权利要求5所述的方法,其特征在于,确定满足所述查询键名的随机数集合包括:
获取随机数集合;
根据所述服务器接收的所述键名分段,从所述随机数集合中查询满足所述键名分段的随机数;
将所述满足所述键名分段的随机数更新为所述随机数集合;
将更新后的所述随机数集合发送给所述预定的顺序中指定的下一个服务器;
待所有服务器完成查询后,得到的所述随机数集合即为满足所述查询键名的随机数集合;
其中,根据所述预定的顺序,第一个服务器获取的随机数集合为所述第一个服务器中保存的所有随机数。
9.根据权利要求5所述的方法,其特征在于,所述键值分段具有顺序号,根据所述键值分段的顺序号将所述键值分段重组得到所述查询键值。
10.根据权利要求5所述的方法,其特征在于,
所述查询键名包括数值或数值范围,并且,所述数值范围由查询上界和查询下界来限定。
11.根据权利要求10所述的方法,其特征在于,
若所述查询键名为数值范围,则将所述查询上界和所述查询下界分别按照所述键名的拆分规则进行拆分;并且,
所述随机数集合包括上边界集合、下边界集合和确界集合,其中,所述上边界集合为所述查询上界对应的随机数的集合,所述下边界集合为所述查询下界对应的随机数的集合,所述确界集合为所述查询上界和所述查询下界之间的数值对应的随机数的集合。
12.根据权利要求11所述的方法,其特征在于,
若所述查询键名为数值范围,则当所述随机数集合按照所述预定的顺序由一个服务器发送给下一个服务器时,所述下一个服务器通过以下步骤更新所述随机数集合:
根据所述下一服务器对应的查询上界的分段,从所述上边界集合中查找所述分段上可取的最小值与所述查询上界的分段之间的数值对应的随机数,并将查找到的所述随机数中,所述查询上界的分段对应的随机数更新为所述上边界集合,其他随机数添加到所述确界集合中;以及
根据所述下一服务器对应的查询下界的分段,从所述下边界集合中查找所述查询下界的分段与所述分段上可取的最大值之间的数值对应的随机数,并将查找到的所述随机数中,所述查询下界的分段对应的随机数更新为所述下边界集合,其他随机数添加到所述确界集合中。
13.一种数据存储的装置,其特征在于,包括:
数据处理模块,用于将键-值对数据的键名和键值分别按位拆分成键名分段和键值分段,并生成一个唯一的随机数与所述键-值对数据相对应;
数据存储模块,用于将所述随机数分别与所述键名分段和所述键值分段关联并发送到指定的多个服务器进行存储,其中,所述键名分段和所述键值分段被存储在不同的服务器。
14.根据权利要求13所述的装置,其特征在于,所述键名和所述键值根据以下规则进行拆分:
将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定;
将所述键值根据内容顺序拆分为多个键值分段。
15.根据权利要求14所述的装置,其特征在于,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
16.根据权利要求13所述的装置,其特征在于,所述数据存储模块还用于:
将所述随机数和所述键名分段关联,并根据所述键名分段的顺序号依次存储在指定的多个服务器中;
将所述随机数和所述键值分段关联,并根据所述键值分段的顺序号依次存储在指定的多个服务器中。
17.一种利用权利要求13至16任一项所述的数据存储的装置实现数据查询的装置,其特征在于,包括:
键名拆分模块,用于将查询键名按位拆分为多个键名分段,所述键名分段具有顺序号;
数据发送模块,用于将所述键名分段分别发送给存储所述键名分段的服务器,所述服务器具有预定的顺序,且所述键名分段的顺序号与所述预定的顺序一致;
随机数确定模块,用于按照所述预定的顺序依次遍历所述服务器,并根据所述服务器对应的键名分段,确定满足所述查询键名的随机数集合;
键值查询模块,用于根据所述随机数集合,从存储键值分段的服务器中查询所述随机数集合对应的键值分段,并将所述键值分段进行重组以得到查询键值。
18.根据权利要求17所述的装置,其特征在于,所述键名的拆分规则包括:
将所述键名根据数位顺序拆分为多个键名分段,其中,所述键名被表示为整数,所述键名分段的长度固定。
19.根据权利要求17所述的装置,其特征在于,在对所述键名进行拆分时,若所述键名的长度不能被所述键名分段的长度整除,则对所述键名在高位以符号位和/或0进行填充,以使所述键名的长度被所述键名分段的长度整除。
20.根据权利要求17所述的装置,其特征在于,所述随机数确定模块还用于:
获取随机数集合;
根据所述服务器接收的所述键名分段,从所述随机数集合中查询满足所述键名分段的随机数;
将所述满足所述键名分段的随机数更新为所述随机数集合;
将更新后的所述随机数集合发送给所述预定的顺序中指定的下一个服务器;
待所有服务器完成查询后,得到的所述随机数集合即为满足所述查询键名的随机数集合;
其中,根据所述预定的顺序,第一个服务器获取的随机数集合为所述第一个服务器中保存的所有随机数。
21.根据权利要求17所述的装置,其特征在于,所述键值分段具有顺序号,根据所述键值分段的顺序号将所述键值分段重组得到所述查询键值。
22.根据权利要求17所述的装置,其特征在于,
所述查询键名包括数值或数值范围,并且,所述数值范围由查询上界和查询下界来限定。
23.根据权利要求22所述的装置,其特征在于,
若所述查询键名为数值范围,则将所述查询上界和所述查询下界分别按照所述键名的拆分规则进行拆分;并且,
所述随机数集合包括上边界集合、下边界集合和确界集合,其中,所述上边界集合为所述查询上界对应的随机数的集合,所述下边界集合为所述查询下界对应的随机数的集合,所述确界集合为所述查询上界和所述查询下界之间的数值对应的随机数的集合。
24.根据权利要求23所述的装置,其特征在于,
若所述查询键名为数值范围,则当所述随机数集合按照所述预定的顺序由一个服务器发送给下一个服务器时,所述下一个服务器通过以下步骤更新所述随机数集合:
根据所述下一服务器对应的查询上界的分段,从所述上边界集合中查找所述分段上可取的最小值与所述查询上界的分段之间的数值对应的随机数,并将查找到的所述随机数中,所述查询上界的分段对应的随机数更新为所述上边界集合,其他随机数添加到所述确界集合中;以及
根据所述下一服务器对应的查询下界的分段,从所述下边界集合中查找所述查询下界的分段与所述分段上可取的最大值之间的数值对应的随机数,并将查找到的所述随机数中,所述查询下界的分段对应的随机数更新为所述下边界集合,其他随机数添加到所述确界集合中。
25.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4和/或权利要求5-12中任一所述的方法。
26.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4和/或权利要求5-12中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710168815.4A CN108629196B (zh) | 2017-03-21 | 2017-03-21 | 数据存储和查询的方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710168815.4A CN108629196B (zh) | 2017-03-21 | 2017-03-21 | 数据存储和查询的方法、装置、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108629196A CN108629196A (zh) | 2018-10-09 |
CN108629196B true CN108629196B (zh) | 2021-04-30 |
Family
ID=63687929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710168815.4A Active CN108629196B (zh) | 2017-03-21 | 2017-03-21 | 数据存储和查询的方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108629196B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112639761B (zh) | 2019-07-24 | 2024-04-26 | 华为云计算技术有限公司 | 一种为数据建立索引的方法以及装置 |
CN110502602B (zh) * | 2019-08-14 | 2023-10-17 | 平安科技(深圳)有限公司 | 数据存储方法、装置、设备和计算机存储介质 |
CN111143621A (zh) * | 2019-11-19 | 2020-05-12 | 京东数字科技控股有限公司 | 一种数据审核方法、装置及数据处理系统 |
CN111159730B (zh) * | 2019-12-13 | 2021-07-09 | 支付宝(杭州)信息技术有限公司 | 数据处理方法、查询方法、装置、电子设备和系统 |
CN111046431B (zh) * | 2019-12-13 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 数据处理方法、查询方法、装置、电子设备和系统 |
CN111737259B (zh) * | 2020-06-19 | 2023-09-19 | 中国银行股份有限公司 | 数据互锁方法及装置、支付数据生成方法及装置 |
CN113407534B (zh) * | 2021-06-02 | 2023-11-28 | 广州零端科技有限公司 | 一种医疗数据记录方法、查询方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129458A (zh) * | 2011-03-09 | 2011-07-20 | 胡劲松 | 关系型数据库的存储方法及装置 |
CN105187551A (zh) * | 2015-09-29 | 2015-12-23 | 成都四象联创科技有限公司 | 基于云平台的分布式计算方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424316B (zh) * | 2013-09-06 | 2018-06-05 | 华为技术有限公司 | 一种数据存储方法、数据查询方法、相关装置和系统 |
US20160299894A1 (en) * | 2015-04-07 | 2016-10-13 | Victor Chernov | Method of sparse array implementation for large arrays |
CN105681414B (zh) * | 2016-01-14 | 2019-01-01 | 深圳市博瑞得科技有限公司 | 一种避免Hbase数据热点的方法及系统 |
-
2017
- 2017-03-21 CN CN201710168815.4A patent/CN108629196B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129458A (zh) * | 2011-03-09 | 2011-07-20 | 胡劲松 | 关系型数据库的存储方法及装置 |
CN105187551A (zh) * | 2015-09-29 | 2015-12-23 | 成都四象联创科技有限公司 | 基于云平台的分布式计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108629196A (zh) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108629196B (zh) | 数据存储和查询的方法、装置、电子设备和可读存储介质 | |
CN106815350B (zh) | 一种云环境中动态的密文多关键词模糊搜索方法 | |
US11537626B2 (en) | Full-text fuzzy search method for similar-form Chinese characters in ciphertext domain | |
US10664610B2 (en) | Method and system for range search on encrypted data | |
Dai et al. | A privacy-preserving multi-keyword ranked search over encrypted data in hybrid clouds | |
CN108475480B (zh) | 加密装置、加密方法和保管装置 | |
Shekokar et al. | Implementation of fuzzy keyword search over encrypted data in cloud computing | |
CN109492410B (zh) | 数据可搜索加密和关键词搜索方法、系统及终端、设备 | |
Poh et al. | Searchable symmetric encryption over multiple servers | |
CN115757676A (zh) | 模糊可搜索加密方法、装置及电子设备 | |
US20160335259A1 (en) | Storing structured information | |
WO2020209793A1 (en) | Privacy preserving system for mapping common identities | |
Ding et al. | An efficient and privacy-preserving ranked fuzzy keywords search over encrypted cloud data | |
Ananthi et al. | FSS-SDD: fuzzy-based semantic search for secure data discovery from outsourced cloud data | |
CN109815730B (zh) | 一种支持skyline查询的可搜索加密方法与系统 | |
CN106874379B (zh) | 一种面向密文云存储的多维区间检索方法与系统 | |
Balasubramaniam et al. | A survey on data retrieval techniques in cloud computing | |
CN117951730A (zh) | 一种基于哈希索引的云端安全可搜索加密方法 | |
JP5983333B2 (ja) | 検索処理方法、データ生成方法及び情報処理装置 | |
WO2022002350A1 (en) | Data storage server and client devices for securely storing data | |
CN116194920A (zh) | 用于安全存储数据的数据存储服务器和客户端设备 | |
US20200142933A1 (en) | Search device, search system, search method, and computer readable medium | |
CN113609077A (zh) | 一种文件检索方法、系统、存储介质及设备 | |
CN112784309A (zh) | 数据安全管理方法、电子设备和存储介质 | |
Feng et al. | Research on privacy preserving of searchable encryption |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |