高效不经意的云存储

文档序号:1661762 发布日期:2019-12-27 浏览:10次 >En<

阅读说明:本技术 高效不经意的云存储 (Efficient casual cloud storage ) 是由 凯文·杨 沙瓦·帕特尔 朱塞佩·佩尔夏诺 于 2018-01-10 设计创作,主要内容包括:公开了一种用于不经意地执行对数据块的查询的方法(700)。该方法包括执行指令(400)以对数据块(B)执行查询(q),并从存储器级别映射(300)获得与数据块(B)相对应的查询存储器级别(l&lt;Sub&gt;q&lt;/Sub&gt;)。存储器级别映射映射了存储器的存储器级别(l&lt;Sub&gt;i&lt;/Sub&gt;),并且每个存储器级别(l&lt;Sub&gt;i&lt;/Sub&gt;)包括物理存储器(RAM&lt;Sub&gt;i&lt;/Sub&gt;)和虚拟存储器(Shelter&lt;Sub&gt;i&lt;/Sub&gt;)。最低存储器级别(l&lt;Sub&gt;l&lt;/Sub&gt;)的虚拟存储器(Shelter&lt;Sub&gt;l&lt;/Sub&gt;)驻留在客户设备上,其余物理存储器(RAM&lt;Sub&gt;i&lt;/Sub&gt;)和虚拟存储器(Shelter&lt;Sub&gt;i&lt;/Sub&gt;)驻留在分布式系统(140)的存储器硬件(114)上。当查询存储器级别(l&lt;Sub&gt;q&lt;/Sub&gt;)是最低存储器级别(l&lt;Sub&gt;l&lt;/Sub&gt;),(l&lt;Sub&gt;q&lt;/Sub&gt;=l&lt;Sub&gt;l&lt;/Sub&gt;)时,该方法包括从最低存储器级别(l&lt;Sub&gt;l&lt;/Sub&gt;)的虚拟存储器(Shelter&lt;Sub&gt;l&lt;/Sub&gt;)中检索数据块(B)。(A method (700) for inadvertently performing a query on a data block is disclosed. The method includes executing instructions (400) to perform a query (q) on a data block (B) and obtaining a query memory level (l) corresponding to the data block (B) from a memory level map (300) q ). Memory level mapping maps the memory level (l) of a memory i ) And each memory level (l) i ) Including physical memory (RAM) i ) And virtual memory (Shelter) i ). Lowest memory level (l) l ) Virtual memory (Shelter) l ) Resident on the client device, the remaining physical memory (RAM) i ) And virtual memory (Shelter) i ) Reside in the distributed system (140)On the memory hardware (114). When querying memory level (l) q ) Is the lowest memory level (l) l ),(l q =l l ) The method includes writing from the lowest memory level (l) l ) Virtual memory (Shelter) l ) To retrieve the data block (B).)

高效不经意的云存储

技术领域

本公开涉及不经意地(obliviously)移动存储在存储器中的数据块。

背景技术

企业和个人使用分布式存储系统(即,云存储服务)来将数据存储在覆盖多个存储位置的存储器上。这些企业和个人中有许多在将其数据上传到分布式存储系统之前对数据进行了加密。为了使用云存储服务供应的使用基本功能,例如对存储的数据进行搜索查询,企业需要提供对云存储服务的纯文本访问。结果,尽管它们增加了便利性和成本优势,但许多政府和敏感的私营部门(例如卫生,金融和法律)不愿使用云存储服务。另外,仅加密可能不足以确保数据私密性,因为仅对数据访问模式的了解就可以提供有关数据的大量信息,而无需解密数据。

发明内容

本公开的一个方面提供了一种方法,该方法不经意地执行对数据块的查询。该方法包括在数据处理硬件处执行指令以执行对数据块(B)的查询(q),由数据处理硬件从存储器级别映射中获取与数据块(B)对应的查询存储器级别(lq),由数据处理硬件确定查询存储器级别(lq)是否为所最低存储器级别(ll),(lq=ll)。存储器级别映射映射了存储器的存储器级别(li),每个存储器级别(li)包括物理存储器(RAMi)和虚拟存储器(Shelteri)。最低存储器级别(ll)的虚拟存储器(Shelterl)驻留在客户设备上,其余的物理存储器(RAMi)和虚拟存储器(Shelteri)驻留在与数据处理硬件通信的分布式系统的存储硬件上。当查询存储器级别(lq)是最低存储器级别(ll),(lq=ll)时,方法包括:由数据处理硬件从最低存储器级别(ll)的虚拟存储器(Shelterl)中检索数据块(B)。对于大于最低存储器级别(ll)的每个存储器级别(lj)和处于最低存储器级别(ll)的物理存储器(RAMl):该方法包括:由数据处理硬件从相应的存储器级别(lj),(ll)检索对应的虚拟数据块(Dj),以及由数据处理硬件丢弃检索到的虚拟数据块(Dj)。当存储器级别(lq)不是最低存储器级别(ll),(lq<ll)时,该方法包括:由数据处理硬件从查询存储器级别(lq)检索数据块(B),并且将检索到的数据块(B)存储在最低存储器级别(ll)的虚拟存储器(Shelterl)中。对于除查询存储器级别(lq)之外的每个存储器级别(lj),该方法包括:由数据处理硬件从相应的存储器级别(lj)中检索对应的虚拟数据块(Dj),并且由数据处理硬件丢弃检索到的虚拟数据块(Dj)。

本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,对于每个存储器级别(li),物理存储器(RAMi)具有保存Ni个数据块(B)的定义的第一大小,并且虚拟存储器(Shelteri)具有保存Si个数据块(b)的定义的第二大小,其中Si=Ni/c并且c是大于1的常数。相应的存储器级别(lj)的对应的虚拟数据块(Dj)包括指向相应的存储器级别(lj)的相应数据块(Nj)的指针(dCntj)的置换(πj)。该方法还可以包括通过数据处理硬件递增指针(dCntj)。

在一些示例中,当存储器级别(lq)不是最低存储器级别(ll)时,由数据处理硬件(124)更新级别映射(300),以指示检索到的数据块(B)被存储在最低存储器级别(ll)的虚拟存储器(Shelterl)中。分布式系统被配置为将至少一个存储器级别(li)的对应的虚拟存储器(Shelteri)的至少一个数据块(Bi)初始化为相应的虚拟数据块(Di)。相应的虚拟数据块(Di)包括对应的数据块(Ni)的大小、对应的数据块(Ni)的索引或对应的存储器级别(li)的存储器级别数。

在一些实施方式中,该方法包括由数据处理硬件对每个存储器级别(li)的对应的虚拟存储器(Shelteri)进行不经意地洗牌。该方法还可以包括:由数据处理硬件将最低存储器级别(ll)的虚拟存储器(Shelterl)与大于最低存储器级别(ll)的下一个存储器级别(li)的虚拟存储器(Shelterl-1)进行不经意地洗牌。不经意地洗牌包括:从虚拟存储器(Shelterl),(Shelterl-1)中选择数据块(B)的随机置换;对来自虚拟存储器(Shelterl),(Shelterl-1)的每个数据块(B)进行解密;对来自虚拟存储器(Shelterl),(Shelterl-1)的每个数据块(B)进行重新加密;以及使用重新加密的数据块(B)的随机置换,对重新加密的数据块(B)进行洗牌。

本公开的另一方面提供了一种客户设备,该客户设备用于不经意地执行对数据块的查询。客户设备包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储指令,这些指令在数据处理硬件上执行时使数据处理硬件执行操作。该操作包括:在数据处理硬件,执行指令以执行对数据块(B)的查询(q),从存储器级别映射获得与数据块(B)相对应的查询存储器级别(lq),存储器级别映射映射了存储器的存储器级别(li),并确定查询存储器级别(lq)是否为最低存储器级别(ll),(lq=ll)。每个存储器级别(ll)包括物理存储器(RAMi)和虚拟存储器(Shelteri)。最低存储器级别(ll)的虚拟存储器(Shelterl)驻留在客户设备的存储器硬件上,其余的物理存储器(RAMi)和虚拟存储器(Shelteri)驻留在与数据处理硬件进行通信的分布式系统的存储器硬件。当查询存储器级别(lq)是最低存储器级别(ll)时,(lq=ll),从最低存储器级别(ll)的虚拟存储器(Shelterl)中检索数据块(B)。对于大于最低存储器级别(ll)的每个存储器级别(lj)和处于最低存储器级别(ll)的物理存储器(RAMl),操作包括从相应的存储器级别(lj),(ll)检索对应的虚拟数据块(Dj)、以及丢弃检索到的虚拟数据块(Dj)。当存储器级别(lq)不是最低存储器级别(ll),(lq<ll)时,从查询存储器级别(lq)检索数据块(B)、并将检索到的数据块(B)存储在最低存储器级别(ll)的虚拟存储器(Shelterl)中。对于除查询存储器级别(lq)之外的每个存储器级别(lj),从相应的存储器级别(lj)中检索对应的虚拟数据块(Dj),并且丢弃检索到的虚拟数据块(Dj)。

该方面可以包括以下可选特征中的一个或多个。在一些实施方式中,对于每个存储器级别(li),物理存储器(RAMi)具有保存Ni个数据块(B)的定义的第一大小,并且虚拟存储器(Shelteri)具有保存Si个数据块(B)的定义的第二大小,其中Si=Ni/c并且c是大于1的常数。相应的存储器级别(lj)的对应的虚拟数据块(Dj)包括指向相应的存储器级别(lj)的相应数据块(Nj)的指针(dCntj)的置换(πj)。该操作还可以包括递增指针(dCntj)。

当存储器级别(lq)不是最低存储器级别(ll)时,更新级别映射(300),以指示检索到的数据块被存储在最低存储器级别(ll)的虚拟存储器(Shelterl)中。分布式系统(140)被配置为将至少一个存储器级别(li)的对应的虚拟存储器(Shelteri)的至少一个数据块(Bi)初始化为相应的虚拟数据块(Di)。相应的虚拟数据块(Di)包括对应的数据块(Ni)的大小、对应的数据块(Ni)的索引或对应的存储器级别(li)的存储器级别数。

在一些示例中,操作包括对每个存储器级别(li)的对应的虚拟存储器(Shelteri)进行不经意地洗牌。操作还可以包括,将最低存储器级别(ll)的虚拟存储器(Shelterl)与大于最低存储器级别(ll)的下一个存储器级别(li)的虚拟存储器(Shelterl-1)进行不经意地洗牌。不经意地洗牌包括:从虚拟存储器(Shelterl),(Shelterl-1)中选择数据块(B)的随机置换;对来自虚拟存储器(Shelterl),(Shelterl-1)的每个数据块(B)进行解密;对来自虚拟存储器(Shelterl),(Shelterl-1)的每个数据块(B)进行重新加密;以及使用重新加密的数据块(B)的随机置换,对重新加密的数据块(B)进行洗牌。

在附图和以下描述中阐述了本公开的一种或多种实施方式的细节。根据说明书和附图以及根据权利要求书,其他方面,特征和优点将是显而易见的。

附图说明

图1是示例性系统的示意图,该系统用于对存储在分布式系统的非暂时性数据存储上的数据块执行清楚不经意地查询。

图1B是用于允许一个或多个客户不经意地对存储在分布式存储系统的非暂时性数据存储上的数据块执行查询的示例系统的示意图。

图2提供了示例性存储器级别的示意图,该示例性存储器级别包括两个级别的非暂时性存储器。

图3提供了用于映射非暂时性存储器的存储器级别的示例存储器级别映射的示意图。

图4A和4B提供了在客户设备上执行以执行对数据块的查询的示例指令。

图5提供了用于初始化非暂时性存储器的存储器级别的示例算法。

图6提供了用于在客户设备处执行指令以执行对数据块的查询的示例算法。

图7A和7B示出了用于不经意地执行对数据块的查询的方法。

图8是执行对数据块的查询的示例计算设备的示意图。

相似的附图标记和各个附图指示相似的元件。

具体实施方式

图1A和1B描绘了示例性系统100,该示例性系统100用于在分布式系统140上存储由客户104拥有的N个数据块(B),并且在分布式系统140周围不经意地移动数据块(B),以隐藏访问模式,同时保留对客户104的数据块的搜索功能。与客户104相关联的客户设备120(例如计算机)经由网络130与具有可伸缩的/弹性的非暂时性存储抽象(storageabstraction)200的分布式系统140进行通信。客户设备120可包括相关联的存储器硬件122和相关联的数据处理硬件124。存储抽象200(例如,键/值存储,文件系统,数据存储等)覆盖在存储资源114上,以允许一个或多个客户设备120可扩展的使用存储资源114。

在一些实施方式中,分布式系统140执行计算设备112,计算设备112管理对存储抽象200的访问。例如,客户设备120可以对数据块(B)进行加密并将数据块(B)存储在存储抽象200上,并且从存储抽象200中检索和解密数据块(B)。虽然所示的示例描述了系统100具有与客户设备120关联的可信侧,其经由网络130和与分布式系统140关联的不可信侧进行通信,但是,系统100可以可替代地在具有可信计算设备(CPU)和不可信数据存储的大型企业内部网上实现。

在一些实施方式中,分布式系统100包括资源110、110a-z。资源110可以包括硬件资源110和软件资源110。硬件资源110可以包括计算设备112(也称为数据处理设备和数据处理硬件)或非暂时性存储器114(也称为存储器硬件和存储资源)。软件资源110可以包括软件应用,软件服务,应用编程接口(API)等。软件资源110可以驻留在硬件资源110中。例如,软件资源110可以被存储在存储器硬件114中,或者硬件资源110(例如,计算设备112)可以执行软件资源110。

软件应用(即,软件资源110)可以指使计算设备执行任务的计算机软件。在某些示例中,软件应用可以称为“应用”,“app”或“程序”。示例应用包括但不限于系统诊断应用,系统管理应用,系统维护应用,文字处理应用,电子表格应用,消息应用,媒体流应用,社交网络应用和游戏应用。

存储器硬件114、122可以是用于暂时或永久地存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备112和/或客户设备120(即,客户设备120的数据处理硬件124)使用的物理设备。存储器硬件114、122可以是易失性和/或非易失性可寻址半导体存储器。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,例如启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM),不经意随机存取存储器(ORAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM),以及磁盘或磁带。

网络130可以包括各种类型的网络,例如局域网(LAN),广域网(WAN)和/或互联网。尽管网络130可以代表远程网络(例如,互联网或WAN),但是在一些实施方式中,网络130包括较短范围的网络,诸如局域网(LAN)。在一些实施方式中,网络130使用标准通信技术和/或协议。因此,网络130可以包括使用诸如以太网,无线局域网(WiFi)(例如802.11),全球微波接入互通性(WiMAX),3G,长期演进(LTE),数字用户线(DSL),异步传输模式(ATM),无限带宽,PCI Express高级交换,蓝牙,低功耗蓝牙(BLE)等的技术的链接。类似地,在网络130上使用的联网协议可以包括多协议标签交换(MPLS),传输控制协议/互联网协议(TCP/IP),用户数据报协议(UDP),超文本传输协议(HTTP),简单邮件传输协议(SMTP),文件传输协议(FTP)等。通过网络130交换的数据可以使用包括超文本标记语言(HTML),可扩展标记语言(XML)等的技术和/或格式来表示。另外,可以使用常规的加密技术(诸如安全套接字层(SSL),传输层安全性(TLS)和虚拟专用网络(VPN),因特网协议安全(IPsec)等)对所有或一些链接进行加密。在其他示例中,代替或除了上述技术之外,网络130还使用定制的和/或专用的数据通信技术。

数据块(B)对应于数据的原子单位,每个数据块的大小均为B字节。例如,用于在分布式系统上存储的B的典型值可能是64KB到256B。符号N表示与客户104相关联并且使用不经意随机存取存储器(O-RAM)存储在存储抽象200上的数据块(B)的总数。N个数据块中的每个数据块存储在存储抽象200的覆盖遍及存储器硬件114的对应存储位置118、118A–N(图1B)中。

尽管传统的加密方案提供了机密性,但是传统的加密方案在隐藏数据访问模式方面无效,该数据访问模式可能向不可信的分布式系统140揭示非常敏感的信息。此外,仅当客户104向分布式系统140提供对数据的纯文本访问时,传统的加密方案才允许客户104搜索存储在分布式系统140上的加密的数据(由B,B1-BN表示)。当客户设备120发起数据时,客户设备120被认为是可信的。

在一些实施方式中,客户设备120和分布式系统140执行不经意置换(permutation)例程450,该不经意置换例程450用于使加密的数据块(B)在存储抽象200周围不经意地移动,以对分布式系统140完全隐藏数据访问模式(哪些数据块(B)被读取/写入)。例如,不经意置换例程450可以使分布式系统140分配用于存储重新置换的数据块(B)的存储抽象200的新存储位置118,并将存储抽象200组织/划分/分隔为多个数据桶350。在一些实施方式中,不经意置换例程450将存储抽象200组织到n个数据桶350中,每个数据桶350包含n个数据块(B),由此值n等于N个数据块的平方根(即,)。在可信侧,客户设备120可以一次从分布式系统140迭代地下载n个数据桶350中的每一个数据桶350,并且在执行不经意置换例程450的同时,在存储器硬件122上分配基本上n个高速缓存槽。对于接收到的每个数据桶350,客户设备120在对应的数据桶350内的n个数据块(B)上应用随机置换,以生成置换的数据块,并为每个置换的数据块(B)确定对应的缓冲桶360和对应的高速缓存槽。这里,高速缓存槽可以在客户设备120的存储器硬件122处临时存储最近置换的数据块(B),直到数据块(B)被上传/发送到分布式系统140以存储在新的存储位置118处。执行用于使加密的数据块(B)在存储抽象200周围不经意移动的不经意置换例程的附加细节可以在2017年4月27日提交的美国专利申请62/490,804中找到,该申请的全部内容通过引用被结合于此。

在一些实施方式中,当客户设备120需要访问(读取/写入)存储在存储抽象200上的加密数据块(B)时,客户设备120处的数据处理硬件124执行指令400以执行对数据块(B)的查询(q)。通过执行指令400,客户设备120能够检索数据块(B)而不会将数据块(B)的内容以及由客户设备120执行的查询(q)的序列泄露给分布式系统140。此外,指令400的执行完全对分布式系统140隐藏了数据访问模式(读取/写入了哪些数据块(B))。当客户设备120执行对数据块(B)相应的查询(q)时,指令400的执行仅需要客户设备120与分布式系统140之间的单次往返。例如,需要写回服务器的所有操作都随查询一起发送。同样,所有读取操作也可以与查询一起发送。所有数据也可以与查询结果一起发送回分布式系统140。

参照图1B,在一些实施方式中,分布式存储系统140包括松散耦合的存储器主机110、110a-z(例如,计算机或服务器),每个存储器主机具有计算资源112(例如,一个或多个处理器或中央处理单元(CPU)),计算资源112与可用于缓存数据的存储资源114(例如,存储器硬件,存储器硬件,闪存,动态随机存取存储器(DRAM),相变存储器(PCM)和/或磁盘)进行通信。覆盖在存储资源114上的存储抽象200允许一个或多个客户设备120、120a-n可扩展使用存储资源114。客户设备120可以通过网络130(例如,经由远程过程调用(RPC))与存储器主机110通信。

在一些实施方式中,分布式存储系统140是“单面的”,当客户设备执行指令400以执行对数据块(B)的查询(q)时,消除了对任何服务器作业的需要,该任何服务器作业用于响应于来自客户设备120的真实和/或伪查询402、404,以从存储抽象200检索数据块(B)和/或的虚拟块(D)。“单面的”是指一种方法,通过该方法,可以在硬件中而不是通过在存储器主机110的CPU 112来完成在存储器主机110上的大多数请求处理。与单面分布式缓存系统有关的其他概念和特征可以在美国专利9,164,702中找到,该专利通过引用而被全部结合在本文中。

分布式系统140可以在远程存储器主机110(例如,存储抽象200)的存储资源114(例如,存储器硬件)周围不经意地移动数据块(B),并经由RPC或经由能够远程直接存储器访问(RDMA)的网络接口控制器(NIC)116从远程存储器主机110获取数据块(B)。网络接口控制器116(也称为网络接口卡,网络适配器或LAN适配器)可以是将计算设备/资源112连接到网络130的计算机硬件部件。存储器主机110a-z和客户设备120均可各自具有用于网络通信的网络接口控制器116。在硬件资源110的物理处理器112上执行的不经意置换例程450向网络接口控制器116注册存储器114的一组远程直接存储器可访问区域/位置118A-N。每个存储位置118被配置为存储对应的数据块(B)。

在一些实施方式中,当客户设备120执行指令400以执行对数据块(B)的查询(q)并确定数据块(B)被本地存储在客户的存储器硬件122处时,客户设备120从存储器硬件122检索数据块(B),并且向NIC 116发送用于检索对应的虚拟块(D)的一个或多个伪查询404,以对本地存储器硬件122隐藏对数据块(B)的检索。客户设备120可以丢弃每个检索到的虚拟块(D)。另一方面,如果客户设备120确定数据块(B)存储在存储抽象200上,则客户设备120可以向NIC 116发送真实查询402,用于从存储抽象200中检索对应的数据块(D)。

客户设备120在存储器硬件122中本地存储了映射存储器118,122,200的存储器级别(li)的存储器级别映射300。除了在客户设备120和存储抽象200中的每一个所需的存储容量之外,还可以基于查询和洗牌成本来选择存储器级别(li)的尺寸和数量。每个存储器级别(li)包括物理存储器(RAMi)210和虚拟存储器(Shelteri)220。如图1A所示,最低存储器级别(l1)的虚拟存储器(Shelterl)220驻留在客户设备120上(即,在存储器硬件122内),而其余的物理存储器(RAMi)210和虚拟存储器(Shelteri)220都驻留在分布式系统140的存储抽象200(例如,存储器硬件114)上。

图2提供了包括两个级别的存储器122、200的示例存储器级别(li)的示意图。这两个级别可以扩展为log N个级别,从而降低了用于N个大小为B的数据块(B)的RAM容量的O(log N)和客户存储O(N/B)的速度。第一级别(级别1)(i=1)包括物理存储器(RAM1)210和虚拟存储器(Shelter1)220。在示出的示例中,第一级别(级别1)的物理存储器(RAM1)210可以对应于最初存储所有N个数据块(B)的虚拟存储器(Shelter0)。物理存储器(RAM1)210和虚拟存储器(Shelter0,Shelter1)220各自驻留在分布式系统140的存储抽象200上。RAM1包括大小为N1的数据块(B)并且Shelter1包括大小为S1的数据块(B),其中S1等于N1的值除以常数c(即,S1=N1/c)。常数c可以是大于一(1)的任何值,以使与Shelter1相关的S1数据块(B)的大小/容量从RAM1中存储的N1数据块(B)的大小/容量减小。在所示示例中,N1的值等于RAM1中存储的16个数据块(B),(B1-BN),常数c等于二(2)。因此,第一级别(级别1)的虚拟存储器(Shelter1)220包括等于八(8)个数据块(B)的S1的值。

第二级别(级别2)(i=2)包括物理存储器(RAM2)210和虚拟存储器(Shelter2)220。由于存储器级别(li)包括两个级别,因此第二级别(级别2)对应于最低存储器级别(ll),因此,物理存储器(RAM2)210驻留在存储抽象200,并且虚拟存储器(Shelter2)220驻留在客户设备120的存储器硬件122。RAM2包括大小为N2的数据块(B),并且Shelter 2包括大小为S2的数据块(B),由此N2的值等于与第一级被(l-1)的Shelter 1相关联的S1的值。因此,第一级别的Shelter 1可以对应于在大小为N2=S1(例如,N2=八(8)个数据块(B))的第二级别的RAM2中存储的新数据块(B)。此外,Shelter 2的S2的值等于N2的值除以常数c(即,S2=N2/c)。在所示示例中,N2的值等于存储在RAM1中的8个数据块(B),并且常数c等于二(2)。因此,驻留在客户设备120的存储器硬件122上的最低级别(ll)的虚拟存储器(Shelter 1)220包括等于四个(4)数据块(B)的S2值。

图3提供了位于客户设备120处的用于映射存储器122、200的存储器级别(li)的示例存储器级别映射300的示意图。在所示的示例中,示例存储器级别映射300映射了图2的两个存储器级别映射(li)。存储器级别映射300将每个数据块(B),(B1-BN)映射到与存储已执行查询(q)的对应数据块(B)的存储器级别(li)中的最低存储器级别相关联的对应查询存储器级别(lq)。例如,数据块(B1,BN)各自包含等于级别1的对应查询存储器级别(lq),指示数据块(B1,BN)存储在Shelter1中。因此,如果客户设备120对数据块(B1,BN)中的任何一个执行查询(q),则客户设备120将向位于存储抽象200的RAM2发送对应于Shelter1的真实查询402,以检索所请求的数据块(B1,BN)。数据块(B3)包括等于级别0的对应查询存储器级别(lq),指示数据块(B3)存储在与RAM1相对应的Shelter0中。因此,如果客户设备120对数据块(B3)执行查询(q),则客户设备120将向位于存储抽象200的RAM1发送实际查询402以检索所请求的数据块(B3)。

在一些实施方式中,当查询存储器级别(lq)不是最低存储器级别(ll)(即,lq≠ll)时,客户设备120更新存储器级别映射300,以指示该检索到的数据块(B)现在存储在最低存储器级别(ll)的虚拟存储器Shelterl中的客户设备120。在示出的示例中,当客户设备120从存储抽象200检索到具有低于最低存储器级别(ll)的对应查询存储器级别(lq)的数据块(B),则客户设备120将检索到的数据块(B)本地存储在存储硬件122的Shelter2中,并更新级别映射300以指示检索到的数据块(B)现在包括等于级别2的对应查询存储器级别(lq),即,最低存储器级别(ll)。

返回参考图1A,客户设备120可以进一步在本地存储器硬件122中初始化洗牌(shuffle)缓冲器330,用于对存储器级别(li)的虚拟存储器(Shelteri)220进行洗牌。为了避免位于客户设备120的最低存储器级别(li))的虚拟存储器(Shelter1)溢出,洗牌缓冲器330可以用Shelterl-1来洗牌Shelterl。Shelterl-1是来自最低存储器级别(ll)的下一个最高级别的掩蔽处(Shelter),并且因此,驻留在存储抽象200。客户设备120可以下载掩蔽处Shelterl和Shelterl-1的数据块(B),并根据新随机选择的置换,在对重新加密的数据块(B)进行洗牌之前解密/重新加密数据块(B)。此后,客户设备120将重新置换的数据块(B)上传到存储抽象200上的Shelterl-1中。

图4A和图4B提供在客户设备120上执行以对数据块(Bq)执行查询(q)的示例指令400。数据块(Bq)可以使用完整的递归平方根O-RAM被存储在客户设备120或存储抽象200处。在所示的示例中,多个存储器级别(li)中的每一个包括物理存储器(RAMi)210和虚拟存储器(Shelteri)220,其中最低存储器级别(ll)的虚拟存储器(Shelterl)220)驻留在客户设备120(例如,存储硬件122中)上,其余的物理内存(RAMi)210和虚拟存储器(Shelteri)220驻留在分布式系统140的存储器硬件114(例如,存储抽象200)上。因此,RAM1-RAMl和Shelter0-Shelterl-1驻留在分布式系统140和存储器硬件114上,并且Shelterl驻留在客户设备120上。

在一些实施方式中,虚拟存储器(Shelterl)220占据客户设备120上的空间/尺寸Sl等于O(1)。此外,每个物理存储器(RAMi)210占据了存储抽象200的空间/尺寸的Ni,其中Ni等于值N1除以C的i次幂(即,Ni=N1/Ci)。同样,每个虚拟存储器(Shelteri-Shelterl-1)220占据存储抽象200的空间/大小Si,其中Si等于Ni的值除以常数c(即Si=Ni/c)。

在一些示例中,分布式系统140被配置为将至少一个存储器级别(li)的对应虚拟存储器(Shelteri)的至少一个数据块(Bi)初始化为相应的虚拟数据块(Di)。在此,相应的虚拟数据块(Di)可以包括相应数据块(Bi)的大小的置换,相应数据块(Bi)的索引(Ni)或相应存储器级别(li)的存储器级别数。

图4A示出了当数据处理硬件124对数据块(Bq)执行查询(q)时,客户设备120的数据处理硬件124从存储器级别映射300中检索与数据块(Bq)相对应的查询存储器级别(lq)。数据处理硬件124确定查询存储器级别(lq)是最低存储器级别(ll),然后从位于客户设备120上的最低存储器级别(ll)的虚拟存储器(Shelterl)220中检索数据块(Bq)。例如,数据处理硬件可以检索数据块(Bq),以对数据块(Bq)进行获取/读取操作或进行更新/写入操作。另外,对于大于最低存储器级别(ll)的每个存储器级别(lj)和最低存储器级别(ll)的物理存储器(RAMl),数据处理硬件124将对应的伪查询404发送到每个相应的存储器级别(lj),(ll),以从其检索对应的虚拟数据块(DJ)。在所示的例子中,数据处理硬件124从RAM1-RAMl中的每一个检索对应的虚拟数据块(Dj)。客户设备120获取虚拟数据块(Dj),以对来自客户设备12处的存储器硬件122上的虚拟存储器(Shelter1)220的数据块(Bq)进行模糊处理。在一些示例中,数据处理硬件124丢弃检索到的虚拟数据块(Dj)。

在一些示例中,相应存储器级别(lj)的每个对应的虚拟数据块(Dj)包括指向相应存储器级别((lj)的相应数据块(Nj)的指针(dCntj)的置换(πj)。当从相应的存储器级别(lj)中检索到对应的虚拟块(Dj)时,数据处理硬件124可以递增对应的指针(dCntj),以防止数据处理硬件124两次检索到相同的虚拟块(Dj)。

图4B示出了客户设备120的数据处理硬件124,其从存储器级别映射300中检索与数据块(Bq)相对应的查询存储器级别(lq),并确定检索到的查询存储器级别(lq)不是最低存储器级别(ll)(lq<ll)。在此,存储器级别映射300指示数据块(Bq)当前未存储在客户设备120上的最低存储器级别(ll)的虚拟存储器(Shelterl)220上。在所示的示例中,检索到的查询存储器级别(lq)等于级别1,表示对应的数据块(Bq)已存储在分布式系统140的存储抽象200处的(RAM2)210上。因此,数据处理硬件124将真实查询402发送到与查询存储器级别(lq)相关联的物理存储器(RAM2)210,以检索数据块(Bq)。数据处理硬件124将检索到的数据块(Bq)存储在客户设备120上的最低存储器级别(ll)的虚拟存储器(Shelterl)220中。此后,数据处理硬件124可以更新存储器级别映射300,以表示检索到的数据块(Bq)已存储在最低存储器级别(ll)的虚拟存储器(Shelterl)220中。

此外,对于除了查询存储器级别(lq)之外的每个存储器级别(lj)(例如,RAM2),数据处理硬件124发送对应的伪查询404到每个相应存储器级别(lj),以从中检索对应的虚拟数据块(Dj)。在所示的例子中,数据处理硬件124中从RAM1和RAM3-RAMl中的每一个检索对应的虚拟数据块(Dj)。在一些示例中,数据处理硬件124丢弃检索到的虚拟数据块(Dj)。图4B还示出了当从相应的存储器级别(lj)检索到对应的虚拟块(Dj)时,数据处理硬件124递增对应的指针(dCntj),以防止数据处理硬件124检索到相同的虚拟块(Dj)两次。

参考图4A和图4B,在一些实施方式中,数据处理硬件124初始化洗牌缓冲器330,以不经意地洗牌每个存储器级别(li)的对应虚拟存储器(Shelteri)220。为了不经意地洗牌对应的虚拟存储器(Shelteri)220,洗牌缓冲器330还必须对掩蔽处Shelteri+1,Shelteri+2,...,Shelterl中的每一个进行洗牌。因此,洗牌缓冲器330通过将Shelteri合并到Shelterl-1并将Shelterl-1与Shelterl洗牌和在一起,来最初洗牌Shelterl-1。在此,客户设备120可以下载Shelterl和Shelterl-1的数据块(B),并根据新随机选择的置换,在对重新加密的数据块(B)进行洗牌之前,对数据块(B)进行解密/重新加密。此后,客户设备120将重新置换的数据块(B)上传到存储抽象200上的Shelterl-1中。接着,为了不经意地洗牌Shelterl-2,洗牌缓冲器330将Shelterl-1结合到Shelterl-2,并将Shelterl-2和Shelterl-1洗牌在一起。洗牌缓冲器330重复该过程,直到Shelteri被不经意地洗牌为止。

通常,对于任何Shelteri,在每个Si查询之后都必须完成不经意的洗牌。此外,最后的Si查询必须在Shelteri中对客户可用。由于给定的Shelteri由Shelterl+1,……Shelterl组成,所以Si查询可能出现在Shelteri,……Shelterl中的任何地方。在一些实施方式中,Shelteri的不经意洗牌发生在Si/2查询的时段,并且洗牌缓冲器330存储两个具有Si/2个数据块(B)大小的洗牌缓冲器。在收集阶段期间,洗牌缓冲器330可以仅存储所查询的数据块(Bq)。在工作阶段,恒定数量的不经意洗牌步骤将利用每个查询完成,例如,不经意洗牌将在所有查询Si/2发生之前终止。不经意洗牌将发生在最近由不经意洗牌的最后一个实例和对应的洗牌缓冲器330洗牌的数据上。对于不经意洗牌的第一实例,洗牌缓冲器330可使用Shelter0的原始数据和所有其他不经意处的虚拟数据集。在完成不经意洗牌后,洗牌缓冲器330的Buffer1i可以排空以被再次使用。同时,发生第二洗牌的收集阶段,并且在第一洗牌完成时,所有查询都存储在Buffer2i中。因此,来自第一洗牌的洗牌数据在第二洗牌的工作阶段是可用的。随着更多查询的到达,该模式可能会重复。

在一些示例中,洗牌缓冲器330包含同一数据块(B)的多个版本。例如,客户设备120可以多次查询相同的数据块(Bq)。然而,洗牌缓冲器330可能需要每个数据块(B)的至多一个更新的版本。为了解决同一数据的多个版本的问题,较旧的数据块访问可以表示为虚拟数据块,并且可以将其丢弃。但是,没有任何数据块(B)从Shelter0丢弃。

在一些示例中,洗牌的总成本如下计算。

摊销成本可以通过将总成本除以N2来如下计算。

如图4A和4B所示,客户设备120可以执行加密模块342或访问加密模块342,以随机选择高级加密标准(AES)密钥,用于对数据块(B)应用随机置换以及加密,解密,然后重新加密数据块(B)。因此,加密模块342可提供随机生成的密钥(例如,AES密钥),用于不经意地移动数据块(B)到存储抽象200的新的存储位置118而不将置换暴露给分布式系统140。在一些示例中,随机生成的密钥是临时的,并且每次重新置换数据块(B)时都会随机生成新的密钥。

图5提供了示例算法500,其初始化存储器硬件114、122的存储器级别(li)。图6提供了示例算法600,用于在客户设备120处执行指令400以对数据块(Bq)执行查询(q)。

图7A和7B示出了用于不经意地执行对数据块(B)的查询的方法700。在框702处,方法700包括由数据处理硬件124执行指令400以执行对数据块(B)的查询(q)。在704处,方法700包括由数据处理硬件124从存储器级别映射300获得与数据块(B)相对应的查询存储器级别(lq)。存储器级别映射300映射存储器114、112的存储器级别(li),每个存储器级别(li)包括物理存储器(RAMi)210和虚拟存储器(Shelteri)220。最低存储器级别(ll)的虚拟存储器(Shelterl)220驻留在客户设备120上,其余的物理存储器(RAMi)210和虚拟存储器(Shelteri)220驻留在与数据处理硬件124通信的分布式系统140的存储器硬件114上。

在框706处,方法700包括由数据处理硬件124确定查询存储器级别(lq)是否为最低存储器级别(ll),(lq=ll)。在框708,当查询存储器级别(lq)是最低存储器级别(ll),(lq=ll)时,方法700包括由数据处理硬件124从最低存储器级别(ll)的虚拟存储器(Shelterl)220中检索数据块(B)。对于大于最低存储器级别(ll)的每个存储器级别(lj)和在最低存储器级别(ll)的物理存储器(RAMl)210,方法700包括,在框710处,由数据处理硬件124从相应的存储器级别(lj),(ll)中检索对应的虚拟数据块(Dj),并且在框712处,由数据处理硬件124丢弃检索到的虚拟数据块(Dj)。

另一方面,当查询存储器级别(lq)不是最低存储器级别(ll),

(lq=ll),方法700包括在框714,由数据处理硬件124从查询存储器级别(lq)检索数据块(B),并且在框716,将检索到的数据块(B)存储在最低存储器级别(ll)的虚拟存储器(Shelterl)220中。

在框718中,对于查询存储器级别(lq)以外的每个存储器级别(li),方法700包括由数据处理硬件124从相应的存储器级别(lj)检索对应的虚拟块(Dj)。在框720处,该方法包括由数据处理硬件124丢弃所获取的虚拟数据块(Dj)。

图8是可用于实现本文档中描述的系统和方法的示例计算设备800的示意图。计算设备800旨在代表各种形式的数字计算机,例如膝上型计算机,台式计算机,工作站,个人数字助理,服务器,刀片服务器,大型机和其他适当的计算机。此处所示的部件,它们的连接和关系以及它们的功能仅是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实现。

计算设备800包括处理器810(例如,数据处理硬件112),存储器820,存储设备830,连接到存储器820以及高速扩展端口850的高速接口/控制器840,以及连接到低速总线870和存储设备830的低速接口/控制器860。计算设备800可以驻留在客户设备120和/或分布式系统140处。每个部件810、820、830、840、850和860使用各种总线互连,并且可以安装在通用主板上,也可以其他方式安装。处理器810可以处理用于在计算设备800内执行的指令,包括存储在存储器820中或存储在存储设备830上的指令,以在外部输入/输出设备(诸如耦合到高速接口840的显示器)上显示用于图形用户界面(GUI)的图形信息。880。在其他实施方式中,可以适当地使用多个处理器和/或多个总线,以及多个存储器和多种类型的存储器。而且,可以连接多个计算设备800,其中每个设备提供必要操作的一部分(例如,作为服务器库,一组刀片服务器或多处理器系统)。

存储器820(例如,存储器硬件)在计算设备800内非暂时地存储信息。存储器820可以是计算机可读介质,易失性存储单元或非易失性存储单元。非暂时性存储器820可以是用于临时或永久地存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备800使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦可编程只读存储器(EPROM)/电子可擦可编程只读存储器(EEPROM)(例如,通常用于固件,例如启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM)以及磁盘或磁带。

存储设备830能够为计算设备800提供大容量存储。在一些实施方式中,存储设备830是计算机可读介质。在各种不同的实施方式中,存储设备830可以是软盘设备,硬盘设备,光盘设备或磁带设备,闪存或其他类似的固态存储设备,或设备阵列,包括在存储区域网络或其他配置中的设备。在另外的实施方式中,计算机程序产品有形地体现在信息载体中。该计算机程序产品包含在被执行时进行一种或多种方法的指令,例如上述方法。信息载体是计算机可读介质或机器可读介质,例如存储器820,存储设备830或处理器810上的存储器。

高速控制器840管理计算设备800的超带宽操作,而低速控制器860管理较低超带宽操作。这种职责分配仅是示例性的。在一些实施方式中,高速控制器840耦合到存储器820,显示器880(例如,通过图形处理器或加速器)以及高速扩展端口850,其可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器860耦合到存储设备830和低速扩展端口870。可以包括各种通信端口(例如,USB,蓝牙,以太网,无线以太网)的低速扩展端口870可以耦合至一个或多个输入/输出设备,诸如键盘,定点设备,扫描仪或网络设备(如交换机或路由器),例如通过网络适配器。

如图所示,可以以多种不同形式来实现计算设备800。例如,它可以被实现为标准服务器800a,或者被实现为一组这样的服务器800a多次,可以被实现为膝上型计算机800b,或者被实现为机架服务器系统800c的一部分。

这里描述的系统和技术的各种实施方式可以在数字电子电路,集成电路,专门设计的ASIC(专用集成电路),计算机硬件,固件,软件和/或其组合中实现。这些各种实施方式可以包括在一个或多个计算机程序中的实施方式,该程序可以在包括至少一个可编程处理器的可编程系统上可执行和/或可解释,该可编程处理器可以是专用的或通用的,其被耦合以从存储系统、至少一个输入设备和至少一个输出设备中接收数据和指令,并将数据和指令传送给存储系统、至少一个输入设备和至少一个输出设备。

这些计算机程序(也称为程序,软件,软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或以汇编/机器语言的形式实现。如本文所使用的,术语“机器可读介质”和“计算机可读介质”是指任何计算机程序产品,装置和/或设备(例如磁盘,光盘,存储器,可编程逻辑设备(PLD),其用于提供机器指令和/或数据给可编程处理器,包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。

本说明书中描述的主题和功能操作的实施方式可以在数字电子电路中,或在计算机软件,固件或硬件中实施,包括本说明书中公开的结构及其结构等同物,或结合其中的一个或多个。此外,本说明书中描述的主题可以实现为一个或多个计算机程序产品,即,编码在计算机可读介质上的计算机程序指令的一个或多个模块,以由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备,机器可读存储基板,存储设备,影响机器可读传播信号的物质组成或它们中的一个或多个的组合。术语“数据处装置备”,“计算设备”和“计算处理器”涵盖用于处理数据的所有装置,设备和机器,例如包括可编程处理器,计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件,协议栈,数据库管理系统,操作系统或以这些中的一个或多个的组合的代码。传播的信号是人工产生的信号,例如机器产生的电,光或电磁信号,其被产生以对信息进行编码以传输到合适的接收器装置。

计算机程序(也称为应用,程序,软件,软件应用,脚本或代码)可以用任何形式的编程语言(包括编译或解释语言)写入,并且可以以任何形式进行部署,包括作为独立程序或作为模块,部件,子例程或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),专用于所讨论程序的单个文件中,或多个协调文件(例如,存储一个或多个模块,子程序或部分代码的文件)。可以部署计算机程序以在位于一个站点上或分布在多个站点上并通过通信网络互连的一台计算机或多台计算机上执行。

本说明书中描述的处理和逻辑流程可以由执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程处理器来执行。处理和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

例如,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,或可操作地耦合以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据或两者,一个或多个大容量存储设备例如是磁性,磁光盘或光盘)。但是,计算机不必具有此类设备。此外,计算机可以被嵌入在另一个设备中,例如,移动电话,个人数字助理(PDA),移动音频播放器,全球定位系统(GPS)接收器等。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器,介质和存储设备,包括例如半导体存储设备,例如EPROM,EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

为了提供与用户的交互,本公开的一个或多个方面可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备(例如CRT(阴极射线管),LCD(液晶显示器)监视器或触摸屏)、以及可选地键盘和指示设备(例如鼠标或轨迹球),用户通过键盘和指示设备可以向计算机提供输入。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈,听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档以及从用户使用的设备接收文档,例如,通过响应从网页浏览器收到的请求将网页发送到用户的客户设备上的网页浏览器,来与用户进行交互。

本公开的一个或多个方面可以在包括后端部件(例如,作为数据服务器),或包括中间件部件(例如,应用服务器)或包括前端部件(例如,具有图形用户界面或网页浏览器的客户计算机,用户可通过该图形用户界面或网页浏览器与本说明书中描述的主题的实施进行交互),或此类后端,中间件或前端部件中的一个或多个的任意组合的计算系统中实现。系统的部件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),互联网络(例如英特网)和对等网络(例如adhoc对等网络)。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过在各自计算机上运行并彼此具有客户端-服务器关系的计算机程序产生的。在一些实施方式中,服务器将数据(例如,HTML页面)发送到客户设备(例如,为了向与客户设备交互的用户显示数据并从中接收用户输入)。可以在服务器处从客户设备接收在客户设备处生成的数据(例如,用户交互的结果)。

尽管本说明书包含许多细节,但是这些细节不应被解释为对本公开的范围或所要求保护的范围的限制,而应理解为对本公开的特定实施方式特定的特征的描述。在本说明书中在单独的实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实施。相反,在单个实施方式的上下文中描述的各种特征也可以分别在多个实施方式中或以任何合适的子组合来实施。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此宣称,但是在某些情况下可以从组合中切除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统部件的分离不应理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序部件和系统通常可以集成在单个软件产品中或打包成多个软件产品。

已经描述了许多实施方式。然而,将理解的是,在不脱离本公开的精神和范围的情况下,可以做出各种修改。因此,其他实施方式在所附权利要求的范围内。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于对经由DDR接口参数的特定于设备的自定义来减少存储器功耗的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类