CN108804031A - 最佳记录查找 - Google Patents
最佳记录查找 Download PDFInfo
- Publication number
- CN108804031A CN108804031A CN201810419688.5A CN201810419688A CN108804031A CN 108804031 A CN108804031 A CN 108804031A CN 201810419688 A CN201810419688 A CN 201810419688A CN 108804031 A CN108804031 A CN 108804031A
- Authority
- CN
- China
- Prior art keywords
- data object
- storage unit
- record
- index
- bucket
- 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.)
- Granted
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及最佳记录查找。在一些实施例中,方法可包括:生成表示储存器中的数据对象的数据对象记录,并且在设备上存储包括多个索引桶的查找索引,每个索引桶与设备上的一组存储单元相关联并且包括用于一组存储单元中的每个相应的一个存储单元的相应索引过滤器,一组存储单元包含数据对象记录的相应部分,其中每个相应索引过滤器包括用于一组存储单元的相应的一个存储单元中的每个数据对象记录的至少一个查找条目。该方法还可包括:接收数据对象请求,并且执行查找操作,查找操作包括识别用于数据对象的索引桶,并且确定与索引桶相关联的一组存储单元中的任意一个是否包含与数据对象对应的数据对象记录。
Description
技术领域
本技术涉及存储操作,并且更具体地涉及在外部媒体的查找索引中的最佳记录查找。
背景技术
数据存储技术可能具有各种限制,包括伸缩、性能和成本限制。例如,存储器器件可提供快速访问,但具有伸缩和成本限制。存储设备提供更大的存储容量,但具有有限的吞吐量和访问能力。一些存储技术具有更大的存储容量和越来越强的性能,但另外可能受限于它们的数据访问和写入模式。在诸如商务和关键任务应用的许多情况下,数据存储技术不能提供存储容量、性能和可用性的适当平衡,从而满足数据和数据服务的特定需求。
附图说明
应理解这些附图仅描绘了本公开的示例性实施例,并且因此不应被认为是其范围的限制,通过使用所附附图描述和解释本文的原理以及附加特性和细节。其中:
图1图示示例性存储和查找环境。
图2图示用于利用查找索引定位对象的过程的示例图。
图3图示查找索引的示例性布局。
图4图示用于将对象散列成查找索引中的桶(bucket)的示例图。
图5A图示用于缓存头部(header)和实现暂存区域的示例配置的示意图。
图5B图示查找索引中的桶的示例暂存区域的示意图。
图6图示用于执行查找操作的示例方法。
图7图示用于添加或更新查找索引中的对象记录的示例方法的流程图。
图8图示用于执行查找索引中的对象记录的查找的示例方法的流程图。
图9图示用于刷新记录的示例过程的伪代码。
图10图示示例计算设备。
具体实施方式
以下描述和附图是说明性的,并且不应被理解为是限制性的。描述许多特定细节以提供本公开的完整理解。但是,在某些实例中,为了避免使描述模糊不清,不描述众所周知的或传统的细节。对本公开中的一个实施例的参考或对本公开中的实施例的参考可以是、但不一定是对同一实施例的参考;并且,这种参考意味着实施例中的至少一个。
对“一个实施例”或“实施例”的参考意味着关于该实施例描述的特定特征、结构、或特性包括在本公开的至少一个实施例中。在说明书中各个位置处的短语“在一个实施例中”的出现不一定都指代同一实施例,也不一定是与其他实施例相互排斥的、分离的或可替代的实施例。此外,对可通过一些实施例而不是通过其他实施例展现的各种特征进行描述。类似地,对可以是一些实施例但不是其他实施例的各种特征进行描述。
本说明书中所使用的术语通常具有它们在本领域中、本公开的上下文中、以及每个术语所使用的特定上下文中的普通含义。可针对本文描述的术语中的任意一个或多个使用可替代的语言和同义词,并且不应强调术语在本文中是否被详细阐述的或论述的有特别意义。提供某些术语的同义词。一个或多个术语的描述不排除其他术语的使用。在本说明书中的任何地方使用包括本文所讨论的任何术语的示例的示例都仅是说明性的,并且不意在进一步限制本公开的范围和含义或者任何示例性术语的范围和含义。同样地,本公开不限于本说明书中给出的各种实施例。
在不意在限制本公开的范围的情况下,以下给出根据本公开的实施例的器具、装置、方法和它们的相关结果的示例。应注意到,为了读者方便,在示例中可使用标题或子标题,其决不应限制本公开的范围。除非另外限定,否则本文所使用的技术术语和科学术语具有本公开所涉及的技术领域的普通技术人员通常所理解的含义。在冲突的情况下,包括限定的本文档将进行控制。
本公开的附加特征和优势将在随后的描述中提出,并且在某种程度上将从本公开中显而易见,或可通过本文所描述的原理的实践而获知。可通过所附权利要求中具体指出的器具和组合实现和获得本公开的特征和优势。本公开的这些特征和其他特征将从以下描述和所附权利要求中变得更加充分明显,或者可通过本文提出的原理的实践而获知。
所公开的技术解决了本领域中的、对快速的且可伸缩的存储和资源查找方案的需求。本技术涉及用于最佳存储和资源查找以及查找索引的系统、方法和计算机可读介质。将在下面的公开中,如下描述本技术。如图1中所图示,论述开始于引导性论述以及用于最佳查找的示例存储和资源查找环境的描述。然后接着是用于资源存储和查找以及I/O操作的示例策略的更详细描述,如图2至图9中所图示。论述结束于示例计算设备的描述,如图10中所图示,示例计算设备包括适合于计算操作(包括存储和资源查找操作)的示例硬件部件。本公开现在转到本文的各种存储构思的引导性论述。
为了提高查找和访问性能,可实现索引,其允许系统在存储中定位请求的数据对象。这种索引可以存储在存储器中,以用于快速访问该索引,并且因此,快速访问存储上的内容。然而,索引可能需要大量的存储器,这可能强加伸缩限制。例如,64GB的DRAM(动态随机存取存储器)对于管理18TB的、外部硬盘驱动器(HDD)上的8KB数据对象可能是必要的。最常用的用户I/O是大小4k。为了支持4KB数据对象,针对相同量的HDD容量,索引将需要128GB的DRAM。为此,这转换成可用系统存储器的很大比例。
另一选择是在闪存中存储索引。SATA(串行ATA)和SAS(串行连接SCSI)SSD是具有大存储容量的示例闪存技术。然而,这些存储技术在其读取和写入特性方面具有限制。例如,这些存储技术典型地能够20k-50k I/O。PCIe(外设部件互连高速)快闪设备可能会更好地执行。此外,具有在存储设备失败之前其可接受的写入数量的上边界。以下描述提供查找索引和存储配置的各种示例。本公开现在转到图1。
图1图示用于内容存储和资源查找操作的示例系统100的示意图。系统100可包括如本文进一步描述的各种硬件部件和软件部件。硬件部件可经由一个或多个连接(例如,总线、网络、有线介质或无线介质等)通信地联接,并且可被托管在单个计算设备、多个计算设备(例如,集群或服务器群)内,和/或遍及一个或多个网络分布。
系统100可包括用于存储诸如文件的数据对象的存储设备104。存储设备104可以是能够提供永久存储的非易失性存储器设备。在此示例中,存储设备104是固态硬盘(SSD)。然而,在本文中,其他存储设备和技术也是预期的。
在内部,对当前SSD的写入通常用4KB-8KB大小的页面来管理。相应地,为了清楚和解释的目的,以下示例一般将描述为涉及4K或8K大小的页面。然而,今天或将来可用的其他大小也可用本文的方法来实现,并且在本公开的范围内。如本文所使用的,术语“页面”和“存储单元”可互换使用,以指代存储设备(诸如存储设备104)上的存储单元,而不限于任何特定大小、配置或存储架构。
存储设备104可包括用于存储数据的存储单元106。如上面所提及的,存储单元106的大小和类型可取决于存储设备104。例如,在SSD设备的情况下,存储单元106可以是用于保存SSD设备上的数据的SSD页面,并且可划分SSD设备内的存储边界。在一些情况下,可聚集存储单元106以形成大的存储单元。例如,多个存储单元106可限定表示存储设备104内的更大存储结构或单元的存储单元块。
系统100可包括附加存储设备和/或存储器设备。例如,系统100可包括用于数据永久存储的外部存储设备108,诸如硬盘驱动器、SSD驱动器、NAS(网络附属存储)、SATA设备、磁盘卷(例如,RAID阵列)等。指代外部存储设备108的术语“外部”不意在必须意味着存储设备108驻留在外部位置,而是在于,存储设备108相对于存储设备104是外部的。换句话说,术语“外部”被引用以意味着与存储设备104分开或者不同于存储设备104。因此,在一些情况下,外部存储设备108可以与存储设备104内部安装在同一机架或系统内,或者另外经由同一内部连接或外部连接(例如,总线或桥)通信地联接。
外部存储设备108可为系统100提供附加存储容量(例如,存储空间)。在一些情况下,外部存储设备108可具有比存储设备104低的性能(例如,IOPS、延迟等),但可提供其他优势,诸如更高的存储容量、更低的存储成本等。在一些情况下,系统100可包括其他存储部件112,其他存储部件112可包括一种或多种类型的存储设备或技术、存储配置、存储角色(例如,备份或灾难恢复、负载平衡等)等等。
存储设备104可存储多个对象记录,多个对象记录中的每一个可与外部存储设备108(或任何其他存储设备)上的相应对象(例如,诸如文件的数据对象)对应。对象记录可表示外部存储设备108上的相应对象和/或可包括用于定位外部存储设备108上的相应对象的信息(例如,指针、引用、标识符、资源地址等)。存储设备104还可存储用于资源查找操作的索引102。索引102可定位存储设备104上的对象记录以及存储设备104上的任何其他对象。例如,索引102可定位存储在存储设备104的特定存储单元106上的对象记录。存储设备104上的对象记录还可帮助定位外部存储设备108上的相关联的对象或资源,以进行快速查找和访问操作,如以下将进一步描述的。
系统100可包括用于快速和/或临时数据存储的存储器110(例如,DRAM)。例如,存储器110可实现为缓存用于快速和/或循环访问的数据。在一些情况下,存储器110可用于缓存索引102、索引102的一个或多个组件、外部存储设备108或者存储部件112上的对象或对象记录等,以用于快速或循环访问。例如,如以下将进一步描述的,在一些情况下,存储器110可存储与索引102相关联的一个或多个查找过滤器,查找过滤器可用于快速定位存储设备104上的对象记录。一旦定位,存储设备104上的对象记录就可定位外部存储设备108上的相关联的对象。当访问外部存储设备108上的对象时,此机制在大大减少在外部存储设备108上执行的查找操作量的同时,可有助于存储器110和存储设备104的快速访问性能。
系统100还可对索引102执行诸如添加、获取、更新和删除操作的各种其他操作,作为管理索引102和对象记录的一部分。以下将进一步描述这些操作以及其他查找构思。
图2图示系统100上的示例存储操作的示意图。在此示例中,存储设备104存储对象记录202,对象记录202可包括用于定位外部存储设备108上的对应对象204(例如,诸如文件或文件的一部分的数据对象)的信息。对象记录202中用于定位外部存储设备108上的对象204的信息可包括但不限于存储设备108上的对象204的指针、引用或地址;对象204的标示符;对象元数据(例如,标志、描述、标签、状态等);指纹;和/或与对象204和外部存储设备108相关联的任何其他信息。因此,对象记录202可允许系统100限制对外部存储设备108上的对象204进行定位和/或访问所必需的在外部存储设备108上的读取操作的数量。这可通过减少外部存储设备108上的延迟、延时和I/O操作大大改善性能。
如之前提及的,存储设备104可包括索引102,索引102可用于定位存储设备104中的对象记录202,索引102可进一步用于定位和访问外部存储设备108上的对应对象204。存储设备104可具有比外部存储设备108更好的性能(例如,速度、延迟等)。因此,使用存储设备104上的索引102和对象记录202来定位外部存储设备108上的对象204,可改善与外部存储设备108上的数据有关的查找和访问操作的效率和速度。存储设备104可存储外部存储设备108上的对象的相应对象记录,其可经由索引102定位,并且可用于类似地定位外部存储设备108上的那些对象。
图3图示索引102的示例布局。在此示例中,索引102可包括桶302。每个桶302可包括多个页面304或存储单元表示,其与存储设备104上的相应存储单元106对应。页面304可包括存储在存储设备104上的对象记录306。每个对象记录可散列成索引102中的桶。页面304中的每一个可包括头部308,头部308可包括查找过滤器310。相应查找过滤器310可表示它们的相应页面304中的对象记录306,并且可将对象记录定位在相应页面304内。在一些情况下,头部308还可包括对象计数312,对象计数312指示相应页面中对象记录的数量。
如之前提及的,对象记录306可表示和/或定位外部存储设备108上的对象。在一些情况下,每个对象记录可包括相关联对象的散列或指纹,诸如对象或对象的一部分的SHA-256散列。散列或指纹可用于识别与对象记录相关联的特定桶。此外,散列或指纹可产生均匀、随机分布的对象记录,这可提供各种性能和负载平衡益处,如本领域普通技术人员将领会的。
例如,参照图4,对象402可使用散列函数404、406被散列,以从索引中的桶302中识别对象402的特定桶。在此示例中,桶302包括桶00至桶05。对象402可使用函数404、406被散列,并且结果值用于识别与对象402对应的桶02和桶04。因此,对象402可散列到索引102中的桶302当中的桶02和桶04。
一旦使用对象的散列或指纹识别了桶,与所识别的桶相关联的过滤器310就可用于识别该桶内的页面或存储单元,页面或存储单元可包括与对应于散列或指纹的对象相关联的对象记录。过滤器310可以是用于测试对象是否存在于与过滤器310相关联的页面304中的数据结构。过滤器310可明确地指示对象记录是否未定位在与过滤器310相关联的相应页面304中,或另外指示对象记录具有位于相应页面304中的阈值概率。
过滤器310的类型或结构可以以不同的实现方式改变。过滤器310的非限定性示例可包括布隆(bloom)过滤器和布谷鸟(cuckoo)过滤器。为了清楚和解释的目的,当在以下示例中描述过滤器310时,将使用布谷鸟过滤器。
布谷鸟过滤器操作为具有移位散列、用于存储始发密钥的一部分的散列表。布谷鸟过滤器提供了在不重建整个数据结构的情况下移除条目的能力。另外,布谷鸟过滤器可以高效使用存储器。甚至当目标误报率低于3%时,布谷鸟过滤器也可以高效使用存储器。
作为布谷鸟过滤器的示例,每个条目的每个局部密钥使用16比特可允许过滤器310中的384个可用点。假设过滤器将在全页面的90%的负载因子处达到容量。例如,使用2个散列桶的配置,每个散列桶具有4个局部密钥(例如,指纹或散列值),给定比特/条目β和负载因子α,可以如下计算误报率ε:
误报/页面
也可以计算索引桶302内的所有页面304上的误报率。例如,假设70%负载因子应用于每桶16个页面的示例,则可如下计算误报率:
16个页面/桶×70%索引负载×70%利用率=7.84使用的页面/桶
7.84使用的页面×0.0026%误报/页面=0.02%误报/桶
如在此示例中所图示的,在需要低存储器占用量的同时,布谷鸟过滤器可提供低的误报率。访问模式还允许局部性,以及可提供改善的性能。
可为了最佳性能而以各种方式设置页面304中的对象记录306。在一个示例中,对象记录306可存储为阵列。然后,可将新的对象记录添加到阵列的尾部,并且当移除时,可重新设置阵列以消除空位置。这可优化容量利用率并且产生快速的添加。在另一示例中,可使用散列表来设置对象记录306。布谷鸟散列可用于解决冲突。还可实现诸如线性探测的其他机制以用于解决冲突。当使用布谷鸟散列时,可在布谷鸟过滤器中的槽(slot)与页面内的对象记录槽之间建立直接映射。用于管理页面中的对象记录306的其他示例可包括但不限于堆排序、B-树等。
索引102的大小可取决于多个因子。例如,索引102的大小可取决于外部存储设备108处的可用存储容量的量。为了说明,假设外部存储设备108具有20TB的可用存储,并且数据被存储为4KB的对象。在此示例中,索引102会导致总共53亿个对象(即,20TB÷4KB=5,368,709,120个对象)。
在一些情况下,每个对象在写入到外部存储设备108之前可被压缩,从而允许附加对象一起被封装,以允许附加的可用容量。例如,假设5:4的平均压缩比,则索引102将能够寻址67亿个压缩对象(即,5,368,709,120个对象×1.25=6,710,886,400个压缩对象)。
如之前所提到的,桶302可表示与存储单元106(例如,SSD页面)对应的页面304的集合。在一些情况下,每个桶的页面数量可足够小,以致于限制被检查以发现对象记录的页面过滤器310的数量;且还足够大,以确保足够新的对象记录添加部分可以被合并到同一桶302中。例如,假设每个桶302包括16个页面304,并且存储单元106和页面304是16KB-尽管应注意的是,诸如4KB或8KB的其他大小也是可能的。
桶302中的每个页面304包含头部308,头部308用于保存过滤器310和页面304中的那些对象记录的对象计数312。在一些情况下,可减少头部308的大小,以用于为了快速过滤器查找而在存储器110中缓存。然而,注意到头部308的大小可影响误报率。因此,可调节该大小以识别大小与误报率之间的适当平衡。为了说明的目的,本文将使用1024字节的示例大小。
在桶散列将提供平均均匀分布的同时,可提供便利以用于对桶进行布局,与其他方式相比,这可最终保存更多记录。实验已经显示桶可保存在10%内。然而,可提供更多的头部空间以确保桶将不会溢出。为了说明的目的,在以下示例中将使用70%负载。针对40字节的对象记录,这导致每个桶包含4300个对象记录:
(页面大小-头部大小)÷记录大小=记录/页面
(16384-1024)÷40=384记录/页面
记录/页面×页面/桶×负载因子=记录/桶
384×16×70%=4300记录/桶
另外,针对能够存储67亿个对象的20TB外部存储设备108,最终索引102包括消耗存储设备104中409GB的存储的150万个桶:
6,710,886,400个对象÷4300页面/桶=1,560,671个桶
1,560,671个桶×16页面/桶=24,970,736个页面
24,970,736个页面×16KB=409GB
当添加新的对象时,可将对象记录放入暂存队列直至写入到存储设备104。每个桶可具有其自身的暂存队列。任何修改的对象记录可具有其现存的更新数据。对象记录可从存储设备104中读取,并且放在桶内每页面管理的脏队列(dirty queue)上。当页面被读取以验证匹配(如在写入副本对象的情况下)时,其可被缓存并且可能用于合并下一次写入的其他更新。为了便于快速检索通常访问的对象记录,可实施分开的缓存以管理那些未修改的对象记录。例如,这可以是用于整个索引102的干净缓存,或另外可在桶的级别处被管理。在桶的级别处提供管理可允许软件中更大的并行性。此记录缓存还可用于识别和管理哪些对象记录在与存储设备104相关联的数据缓存中是可用的。
在一些情况下,非易失性存储器可用于暂存索引更新,因此它们可以混合到单个页面写入中。此暂存区域可保存对象记录和用于数据的缓冲区,对象记录等待被保存在存储设备104上,数据等待被压缩和写入到外部存储设备108。
为了说明,假设每次写入需要保存20个索引更新以保留在存储设备104的I/O能力内。由于桶302中的每一个积累新的对象记录,因此对象记录的分布将改变。如果在识别用于新对象记录的桶时采用密码散列,那么新对象记录在桶302中的的分布将是均匀的。一旦桶302中的每一个达到20个暂存更新,则暂存更新被刷新并且每个桶的暂存队列减少到零。这将实际上导致每个桶的暂存条目的均匀分布,这意味着将有与完整页面一样多的空页面,并且为保存它们而所需的存储器将是最大需求的一半。然而,这典型地也是被写入的副本对象的混合,其包括现存对象记录的更新。可单独地修改并刷新桶内的页面,这导致之前描述的分布模式。因此,在此示例中,桶平均仅能够同时刷新50%的暂存队列,并且可调整大小以适应更多数量的对象记录(例如,40个对象记录)。此示例如下带来2.5GB的暂存需求:
1,560,671个桶×(20个记录×2)=62,426,840个暂存的记录
62,426,840个暂存的记录×40字节/记录=2,497MB
数据写入缓冲区也可存储在非易失性存储器中,直至它们可保存到外部存储设备108以及它们的、在对应的对象记录中更新的地址(例如,逻辑桶地址)上。在一些情况下,新的对象记录不保存到桶页面,直至其表示的数据对象已经保存在后端存储(即,存储设备108)上。
针对高效过滤器访问,页面头部308可存储在易失性存储器中。例如,页面头部308可存储在存储器110中。这在之前的示例中将需要使用19.5GB的存储器(例如,DRAM):24,970,736个页面×1024字节/头部=25.5GB。
对象记录中的每一个可包括附加信息,用于组织它们以在暂存区域内进行高效访问。由于暂存区域在恢复失败的情况下可从非易失性存储器重建,因此此附加数据可以是易失性的。示例评估可以是附加的4个字节每对象记录,尽管在本文中,其他大小也是预期的。这意味着针对以上示例,将需要附加250MB的存储器。
对象记录的缓存也可存储在存储器110中,以允许拷贝到缓存的对象记录的快速查找。存储器110中对象记录的数量可以是灵活的,但是缓存的效力可被有效管理的对象记录的数量影响。考虑存储设备104中4TB的可用存储的示例。该存储的一部分(例如,600GB)还用于文件系统元数据。剩余的部分可用于存储未压缩的用户数据对象。为了管理存储器中的这些对象记录,将近68GB将是必要的:
600GB÷1KB=629,145,600元数据对象
3.4TB÷4KB=912,680,550数据对象
629,145,600+912,680,550=1,541,826,150对象
1,541,826,150对象×44字节/记录=67.84GB
另一方面,为了缓存管理(例如,最近最少使用的)而保存存储器中缓存记录的比例可减少存储器的使用。例如,为了LRU(最近最少使用的)缓存管理而保存存储器中20%的缓存记录将仅需要10GB。
图5A图示用于缓存头部308和实现暂存区域的示例配置示意图。在此示例中,存储器110缓存头部308以用于存储单元106中的对象记录的快速查找。存储单元106中的对象记录可定位外部存储设备108中的数据。因此,查找操作可包括首先搜索存储器110中的头部308。头部308可帮助定位存储设备104上的特定存储单元106中的对象记录。一旦定位,就可从特定存储单元106(例如,SSD页面)中读取对象记录以用于验证,并且定位外部存储设备108内的对象。
储存器112可存储包含对象记录和数据的缓冲区的暂存区域502,其中对象记录等待被保存在存储设备104上,数据将被压缩和写入到外部存储设备108。为了更大的吞吐量和性能,与桶相关联的更新可积累并稍后保存到单个页面写入(即,单个存储单元写入)中。
图5B图示桶的示例暂存区域示意图。在此示例中,暂存区域502包含桶01的桶暂存区域504。桶暂存区域504包含与桶01相关联的对象的更新506。更新506可包括但不限于要保存到存储设备104以及包括在索引102中的一个或多个对应的存储单元表示中的对象记录。
桶暂存区域504可合并更新506并且将多个更新写入到与桶01相关联的单个存储单元106。通过合并更新506以写入到与桶01相关联的单个存储单元106,可以提高I/O吞吐量。例如,针对4KB数据对象,20Gb/s的吞吐量可能需要每秒512k索引更新。由于针对读取-修改-写入操作,每个更新需要2个I/O,因此针对存储设备104的每个写入,这将会需要10-50之间的更新。此外,可利用此机制提高用于检索索引对象记录的性能,在包括每检索单个读取的许多情况下的同时,其可将每写入多个更新组合。此外,针对对象记录不存在的查找情况,将会需要多于99%的时间没有读取。
因此,如图5A和图5B中所图示,当添加新的对象时,可将对象记录放入暂存区域502直至被写入到存储设备104。每个桶可具有其自身的暂存队列(例如,桶01的桶暂存区域504)。任何修改的对象记录可具有其现存的更新数据。对象记录可从存储设备104中读取,并且然后被放置在桶内每页面管理的脏队列上。当页面被读取以验证副本时,其可被缓存并且可能用于针对下一次写入合并其他更新。为了便于快速检索通常访问的对象记录,存储器110中的单独缓存可用于管理那些未修改的对象记录。缓存可针对整个索引102或者一个或更多特定桶。
图6图示用于实现查找索引102的示例方法。在步骤602处,方法可包括在存储设备104上存储表示外部存储设备(例如,存储设备108)上的数据对象的对象记录(例如,对象记录306)。对象记录可在查找和I/O操作(包括读取、写入等)中定位外部存储设备中的数据对象。例如,对象记录可包括与外部存储设备中的数据对象对应的指针、引用、地址(例如,LBA)、标识符、元数据等。
存储设备104可具有比外部存储设备更好的性能特性(例如,IOPS、延迟、速度等)。因此,存储在存储设备104上的对象记录可用于限制外部存储设备上的查找操作,并改善查找性能。
在步骤604处,方法可包括在存储设备104处存储用于定位存储设备104上的数据对象记录的查找索引102。查找索引102可包括桶302,桶302中的每一个可包含与存储设备104上的特定存储单元106对应的一组存储单元表示(例如,页面)。特定存储单元106可属于查找索引102中的特定桶。此外,特定存储单元可存储表示外部设备上的数据对象的一组特定对象记录。存储在与桶相关联的存储单元上的对象记录可针对该桶而特别地选择。例如,对象记录可被散列以针对对象记录识别特定桶,并且可被存储在与所识别的桶相关联的特定存储单元中。
桶中的该组存储单元表示可包括用于定位存储在与该组存储单元表示相关联的特定存储单元上的对象记录的信息。例如,该组存储单元表示可以包括与特定存储单元相关联的对象或对象记录的相应散列或指纹。
查找索引102也可包括索引过滤器。在一些情况下,该组存储单元表示中的每一个可包括相应索引过滤器。相应索引过滤器可定位与相应索引过滤器相关联的相应存储单元表示上的对象记录,因此可定位与相应存储单元表示相关联的存储单元内的对象记录。例如,相应索引过滤器可包括与和相应存储单元相关联的存储单元上的每个对象记录对应的一个或多个查找条目。
在步骤606处,方法可包括接收与数据对象相关联的输入-输出请求(例如,诸如读取、检索、写入等的查找请求)。数据对象可以是存储在外部存储设备上的数据对象。在步骤608处,方法可包括响应于输入-输出请求而针对数据对象识别查找索引102中的索引桶,该索引桶与存储设备104上的一组特定存储单元对应。可基于数据对象的散列或指纹来针对数据对象识别查找索引102中的索引桶。例如,可散列数据对象以针对数据对象识别特定桶。一旦针对数据对象识别了桶,可存储数据对象的对象记录的存储设备104上的存储单元就可更易于识别,因为可将搜索约束到与识别的桶相关联的那些存储单元。
在步骤610处,方法可包括搜索与识别的索引桶相关联的相应索引过滤器,以确定与索引桶对应的任何存储单元是否包含与数据对象相关联的数据对象记录。例如,方法可搜索相应过滤器中的对象记录的散列、指纹或标识符。如果相应过滤器中的搜索未产生匹配,则可确定与相应过滤器相关联的存储单元不包含对象记录。如果相应过滤器中的搜索产生匹配,则可确定对象记录具有存在于与相应过滤器相关联的存储单元中的阈值概率。该方法可通过读取存储单元来验证该确定,以确认对象记录确实存在于存储单元中。如果方法识别了存储单元中的对象记录,则可读取对象记录以定位外部存储设备上的数据对象。因此,此机制可大大地限制了存储设备104以及外部存储设备中的查找操作的数量,并且可提高用于查找操作的性能。
如果搜索不产生任何匹配或另外产生误报,则可做出对象是新的对象的决定。然后,如之前所解释的,可将对象写入到外部存储设备,并且可更新索引102和存储设备104以考虑对象的对象记录,如之前所描述以及以下进一步所解释的。
图7图示用于添加并更新对象记录到索引102的示例方法的流程图。在步骤702处,方法包括获取与对象相关联的对象记录。在步骤704处,方法包括散列对象记录以识别与对象记录对应的桶。例如,此操作可包括利用模操作使用第一64位的对象SHA-256,该模操作使用可用桶的数量。
在步骤706处,方法可包括确定对象记录是否处于暂存区域(例如,暂存区域502)中。如果对象记录已经在暂存区域中,则方法可包括在步骤734处更新记录以及在步骤736处添加记录到脏队列。
如果对象记录不在暂存区域中,则方法可开始循环或迭代过程以针对对象记录检查桶中的页面。因此,在步骤708中,为了开始用于搜索页面的迭代过程,方法可将页面数量(例如,PageNum)设定为零。在步骤710处,方法可确定是否页面数量(例如,正在被检查的当前页面)大于或等于桶中的页面数量(例如,NumPages)。此步骤将允许方法确定其是否已经针对对象记录检查了桶中的所有页面。确定页面数量大于或等于桶中的页面数量将指示桶中的所有页面已经被检查。在桶中的所有页面已经被检查之后,如果对象记录未定位在任何页面中,那么对象记录是新的记录并且方法进行到步骤714,如以下进一步描述的。
如果页面数量不大于或等于页面数量,那么方法进行到步骤724,以继续针对对象记录检查页面,直至对象记录被定位在页面(即,存储单元)中或桶中的所有页面在没有冲击的情况下已经被检查。因此,在步骤724处,方法确定对象记录是否被定位在与页面数量相关联的页面过滤器中。如果该方法未将对象记录定位在与页面数量相关联的页面过滤器中,则其在步骤726处递增页面数量,并且返回步骤710以检查是否存在未被检查的任何剩余页面。另一方面,如果方法在步骤724处将对象记录定位在与页面数量相关联的页面过滤器中,则其进行到步骤728以读取与页面数量相关联的页面,并且进行到步骤730以针对数据对象进行检查。当读取页面时,方法可检索对象记录并分析对象记录,以验证对象记录确实在页面中。方法可针对页面中的对应槽中的对象记录进行检查。对应槽可以是与对象记录相关联的页面内的位置。例如,可能包括被搜索的对象记录(例如,对象记录X)的槽与步骤724中产生冲击或匹配的过滤器槽对应。为了说明,如果在页面N和过滤器槽M上存在针对X的匹配,那么页面N上的槽M包含对象记录X存在高概率。如果在页面N和过滤器槽M上不存在匹配,那么可做出页面N上的槽M不包含对象记录X的决定。
如果页面中未发现对象记录,则方法进行到步骤726以递增页面数量并返回到步骤710。如果页面中发现对象记录,则方法进行到步骤734以更新记录。当更新记录时,方法可例如修改与记录相关联的参考计数、改变与存储中的对象相关联的地址(例如,LBA)等。在步骤736处,方法可将记录添加到页面的脏队列以稍后写入。
返回到步骤710,如之前提及的,如果页面数量大于或等于桶中的页面的数量并且方法未在任何页面中定位对象记录,那么方法进行到步骤714。在任何页面中没有命中对象记录将指示与对象记录相关联的对象是新的唯一对象。相应地,在步骤714处,方法压缩与对象记录相关联的对象并且将对象写入到外部存储设备(例如,存储设备108)。然后,方法进行到步骤716以创建对象记录,并且进行到步骤718以将对象记录添加到桶的暂存区域。方法可使用对象的地址(例如,LBA)更新对象记录的条目。
在步骤720处,方法确定桶的暂存区域是否是满的。如果暂存区域不是满的,则在步骤738处,方法结束或完成。如果暂存区域是满的,则方法进行到步骤722以将暂存区域刷新成符合条件的页面。刷新暂存区域的示例过程进一步如下参照图9描述。
图8图示用于对象记录查找过程的流程图。在步骤802处,方法可识别对象记录以从索引102检索。在步骤804处,方法可包括散列对象记录以识别与对象记录对应的桶。在步骤806处,方法可包括确定是否对象记录已经在桶暂存区域中。如果对象记录已经在桶暂存区域中,则在步骤824处,方法可从桶暂存区域中找到对象记录。
如果对象记录不在桶暂存区域中,为了开始迭代过程以针对对象记录搜索页面,方法可进行到步骤808并且将页面数量(例如,PageNum)设定为零。在步骤810处,方法可确定页面数量(例如,正在被检查的当前页面)是否大于或等于桶中的页面数量(例如,NumPages)。这将允许方法知道桶中的所有页面何时已经针对对象记录被检查,如之前在图7中所解释的。在桶中的所有页面都已经被检查之后(即当页面数量大于或等于页面的数量时),如果对象记录未被定位在任何页面中,那么方法进行到步骤812并且确定对象记录未发现。
否则,方法进行到步骤814以搜索桶中当前页面的过滤器上的对象记录(即,迭代过程中与当前页面数量相关联的页面)。如果搜索未产生任何匹配,那么方法进行到步骤822以递增页面数量,并且方法返回到步骤810以检查递增的页面数量是否大于或等于桶中页面的数量。
如果在步骤814处搜索产生匹配,则方法可进行到步骤816以读取页面,并且进行到步骤818以在页面的对应槽中检查对象记录。如果在步骤818处在页面的对应槽中未发现对象记录,则方法进行到步骤822以递增页面数量并返回到迭代过程中的步骤810。否则,方法进行到步骤824并且确定在索引102中发现了对象。
图9图示用于刷新对象记录的过程的示例伪代码,诸如图7示出中的刷新步骤722。在此示例中,过程可发现桶页面,桶页面可具有刷新到该桶页面的最脏条目。因此,过程可对桶中的单个页面刷新尽可能多的改变。这允许写入到存储的每个页面的最佳使用。过程可审查脏缓存的内容,以确定对象记录是否已经相关联到页面或者是否对象记录是可被写入桶内任何位置的新的记录。每个脏记录(dirty record)可包含页面标识符。如果对象记录从未被刷新,则其可包含指定的无效页面数量,无效页面数量指示对象记录是“新的记录”。由于过程迭代脏缓存,因此其可创建与每个页面相关联的对象记录的列表并且记录对象记录应被从页面移除的计数。该过程还可基于可在页面中更新的记录的相应数量而对与桶相关联的每个页面进行排序。当结束时,过程可识别要刷新的页面和要被刷新到该页面的对象记录列表。
例如,伪代码可包括用于执行刷新过程中的各个步骤的代码块902、904、906、908、910、912。代码块902确定脏记录是否应被添加到新的记录列表或对应的页面列表。针对桶中的每个脏记录,代码块902检查与脏记录相关联的页面数量是否是无效页面数量。页面数量可基于脏记录中的页面标识符来确定。如果页面数量是无效页面,则脏记录被添加到新的记录列表,否则脏记录被添加到其对应页面的页面列表。如果脏记录被移除,则对应页面的页面移除计数可递增。
代码块904识别桶中页面的哪些脏记录应被刷新。针对桶中的每个页面,通过添加自由槽的数量和页面删除计数来计算可用槽。然后,基于针对页面计算的可用槽或新的记录列表中新的记录的数量,计算可被添加到页面的记录的数量。页面还基于页面列表的大小(例如,添加到该页面的列表的脏记录数量)和可被添加到页面的记录的数量而排序。基于针对每个页面计算的排序而从桶中的页面中选择用来刷新的页面。在此,可选择具有最高排序的页面作为用来刷新的页面。
代码块906通过将所选择的页面的记录列表与之前创建的新的记录列表合并而确定用来刷新的记录。
代码块908处理所选择的页面的页面列表中的现有记录。针对页面列表中的每个记录,现有记录使用与页面相关联的过滤器来定位。如果记录要被移除,则记录在页面和过滤器以及脏暂存区域中被标记为无效。否则,用新的版本重写现有记录,并且记录在脏暂存区域中被标记为干净的。
代码块910处理新的记录列表中的新的记录。针对新的记录列表中的每个记录,记录被添加到页面过滤器。如果过滤器是满的,则记录保存在脏暂存中,新更新的页面被写入到储存器并且新的页面过滤器被复制到过滤器缓存。此外,记录被复制到页面中的与过滤器中的记录的位置相同的位置,并且记录在脏暂存区域中被标记为干净的。
代码块912将新更新的页面写入到储存器(例如,存储设备104)并且将新的页面过滤器复制到过滤器缓存。
现在本公开转到图10,图10图示示例硬件部件和计算设备的示例设备架构。具体地,图10图示示例计算系统架构1000,其中系统1000的部件使用连接1005彼此通信。连接1005可以是经由总线的物理连接或者诸如在芯片架构中到处理器1010中的直接连接。连接1005也可以是虚拟连接、联网连接或者逻辑连接。
在一些情况下,系统1000是分布式系统,其中本文关于部件描述的功能可在地理上分布在数据中心、多个数据中心等内。在一些实施例中,所描述的系统部件中的一个或多个表示许多这样的部件,每个部件执行被描述的部件的功能中的一些或所有。在一些实施例中,本文描述的部件可以是物理或虚拟设备。
示例系统1000包括至少一个处理单元(CPU或处理器)1010以及连接1005,连接1005将包括系统存储器1015的各种系统部件联接到处理器1010,系统存储器1015为诸如只读存储器(ROM)1020和随机存取存储器(RAM)1025。系统1000可包括直接与处理器1010连接、紧邻处理器1010或集成为处理器1010一部分的高速存储器1012的缓存。
处理器1010可包括任何通用处理器和硬件服务或软件服务,硬件服务或软件服务诸如存储在存储设备1030中的服务1 1032、服务2 1034和服务3 1036,被配置成控制处理器1010以及其中软件指令被并入实际处理器设计中的专用处理器。处理器1010可基本上是完全独立的计算系统,包含多核或多处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或非对称的。
为了使用户能够与计算设备1000交互,输入设备1045可表示任何数量的输入机构,诸如用于语音的麦克风、用于手势或图形输入的触摸屏、键盘、鼠标、运动输入、语音等等。输出设备1035也可是本领域技术人员已知的许多输出机构中的一个或多个。在一些实例中,多模型系统可使用户能够提供多种类型的输入,以与计算设备1000通信。通信接口1040通常可控制和管理用户输入和系统输出。对任何特定硬件布置进行操作不存在限制,并且因此,当开发改进的硬件或固件设置时,在此的基本特征可易于被它们替代。
存储设备1030可以是非易失性存储器并且可以是硬盘或可存储由计算机可访问的数据的其他类型的计算机可读介质,诸如磁盘、闪存卡、固态存储设备、数字通用光盘、磁带、随机存取存储器(RAM)1025、只读存储器(ROM)1020以及它们的组合。
存储设备1030可包括代码,该代码在由处理器1010执行时,使系统1000执行功能。执行特定功能的硬件服务可包括存储在计算机可读介质中与硬件部件有关的软件部件,以执行功能,硬件部件诸如处理器1010、总线1005、输出设备1035等等。
为了解释清楚,在一些实例中,本技术可呈现为包括单个功能块,单个功能块包括含有设备、设备部件、体现在软件中的方法的步骤或例程、或硬件和软件的组合的功能块。
本文所描述的任何步骤、操作、功能或过程可通过硬件或软件服务的组合、单独或与其他设备组合来执行或实现。在一些实施例中,服务可以是驻留在客户端设备和/或内容管理系统的一个或多个服务器的存储器中的软件,并且当处理器执行与服务相关联的软件时,执行一个或多个功能。在一些实施例中,服务是执行特定功能的程序或程序集合。在一些实施例中,服务可被认为是服务器。存储器可以是非瞬态计算机可读介质。
在一些实施例中,计算机可读存储设备、介质和存储器可包括电缆信号或无线信号,电缆信号或无线信号包含比特流等。然而,当被提及时,非瞬态计算机可读存储介质明确排除诸如能量、载波信号、电磁波和信号本身的介质。
根据上述示例的方法可使用计算机可执行指令实现,计算机可执行指令被存储或另外从计算机可读介质提供。这些指令可例如包括使得或另外配置通用目的计算机、专用目的计算机或专用目的处理设备以执行某些功能或功能组的指令和数据。所使用的计算机资源的部分可通过网络访问。计算机可执行指令可例如是二进制中间格式指令,诸如汇编语言、固件或源代码。根据所描述的示例,可用于存储指令、所使用的信息和/或在方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、固态存储器设备、闪存、提供非易失性存储器的USB设备、联网的存储设备等等。
根据这些公开的设备实现方法可包括硬件、固件和/或软件,并且可采用任何形式因素。这些形式因素的典型的示例包括服务器、笔记本电脑、智能手机、小型个人计算机、个人数字助理等等。本文所描述的功能也可体现在外设卡或插件卡中。这种功能也可通过进一步示例的方式在不同芯片或执行在单个设备中的不同过程中的电路板上实现。
指令、用于输送这些指令的介质、用于执行指令的计算资源以及其他用于支持这些计算资源的其他结构注定提供在这些公开中描述的功能。
尽管各种示例和其他信息用于解释所附权利要求的范围内的各方面,但基于这些示例中的特定特征或设置,应暗示不对权利要求进行限制,因为普通技术人员将能够使用这些示例来获得宽泛的各种实施方式。进一步并且尽管一些主题可以以特定于结构特征和/或方法步骤的示例的语言描述,但应理解的是,所附权利要求中限定的主题名称不必限定于这些描述的特征或动作。例如,除了本文所识别的那些之外,这种功能可在部件中不同地分布或执行。相反,所描述的特征和步骤公开为系统的部件的示例以及所附权利要求的范围内的方法。
记载了“...中的至少一个”的权利要求语言指的是一组中的至少一个并且指示满足权利要求的该组中的一个成员或该组中的多个成员。例如,记载了“A和B中的至少一个”的权利要求语言意味着A、B、或者A和B。
Claims (25)
1.一种方法,包括:
生成表示储存器中的数据对象的数据对象记录;
在存储设备处存储包括多个索引桶的查找索引,每个索引桶与所述存储设备上的一组存储单元相关联,并且包括用于所述一组存储单元中的每个相应的一个存储单元的相应索引过滤器,所述一组存储单元包含所述数据对象记录的相应部分,其中每个相应索引过滤器包括用于所述一组存储单元中的所述相应的一个存储单元中的每个数据对象记录的至少一个查找条目;
接收与数据对象相关联的输入-输出请求;以及
响应于所述输入-输出请求,对所述查找索引执行所述数据对象的查找操作,所述查找操作包括:
识别所述查找索引中用于所述数据对象的索引桶;并且
基于与在所述查找索引中识别的用于所述数据对象的所述索引桶相关联的每个相应索引过滤器,确定与所述索引桶相关联的一组存储单元中的任意一个是否包含与所述数据对象对应的数据对象记录。
2.根据权利要求1所述的方法,其中所述存储设备包括固态驱动器(SSD),并且所述存储与第二存储设备相关联,所述第二存储设备包括固态驱动器、硬盘驱动器和独立冗余磁盘阵列中的至少一种,并且其中所述一组存储单元包括SSD页面。
3.根据权利要求1所述的方法,其中所述相应索引过滤器包括布谷鸟过滤器,其中所述数据对象记录包括与所述数据对象对应的对象签名,并且其中所述至少一个查找条目包括与所述一组存储单元中的所述相应的一个存储单元中的对应数据对象记录相关联的至少部分对象签名。
4.根据权利要求3所述的方法,其中所述对象签名和所述至少部分对象签名通过将一个或多个散列函数应用到所述数据对象而生成,并且其中识别所述查找索引中用于所述数据对象的索引桶包括:
散列所述数据对象的至少部分以产生散列值;以及
使用所述散列值的至少部分来识别所述查找索引中的索引桶。
5.根据权利要求1所述的方法,进一步包括:
在存储器设备处存储所述一组存储单元中的每个相应的一个存储单元的相应索引过滤器的副本,以产生多个缓存的索引过滤器,所述多个缓存的索引过滤器包含与包含在所述一组存储单元中的数据对象记录相关联的相应查找条目;并且
其中确定所述一组存储单元中的任意一个是否包含所述数据对象记录包括:确定所述相应查找条目是否匹配针对所述数据对象生成的一个或多个散列值。
6.根据权利要求5所述的方法,其中所述输入-输出请求包括读取操作,并且其中识别用于所述数据对象的所述索引桶是基于针对所述数据对象生成的所述一个或多个散列值,所述方法进一步包括:
在确定与所述索引桶相关联的所述一组存储单元中的任意一个是否包含所述数据对象记录之前,针对所述数据对象记录搜索与所述索引桶相关联的暂存区域,其中所述暂存区域包括可选择、以复制到与所述索引桶相关联的所述一组存储单元中的一个存储单元的数据对象记录的队列;并且
当所述搜索在所述暂存区域中未定位到所述数据对象记录时,确定与所述索引桶相关联的所述一组存储单元中的任意一个包含所述数据对象记录。
7.根据权利要求6所述的方法,进一步包括:
基于针对所述数据对象生成的所述一个或多个散列值,识别所述索引桶中具有包含与所述数据对象相关联的所述数据对象记录的阈值概率的特定存储单元;
响应于识别到所述索引桶中的所述特定存储单元,读取所述特定存储单元并且检查所述特定存储单元中的对应槽,以确定所述数据对象记录是否包含在所述特定存储单元中;并且
当确定所述数据对象记录在所述特定存储单元中时,从所述特定存储单元中检索所述数据对象记录。
8.根据权利要求5所述的方法,进一步包括:
当所述相应查找条目与针对所述数据对象生成的所述一个或多个散列值不匹配时,确定所述数据对象是新的数据对象并且所述数据对象记录不存在于所述一组存储单元中的任意一个中;
响应于确定所述数据对象是所述新的数据对象,将所述数据对象写入到所述储存器;
更新与所述数据对象相关联的所述数据对象记录,以包括所述储存器上的与所述数据对象相关联的地址的指示;并且
将所述数据对象记录发送到与所述索引桶相关联的暂存区域。
9.根据权利要求8所述的方法,进一步包括:
确定所述暂存区域中的特定数据对象记录的数量已经达到阈值数;以及
响应于确定所述暂存区域中的特定数据对象记录的所述数量已经达到所述阈值数,将所述暂存区域中的所述数量的数据对象记录复制到所述索引桶中的同一存储单元中。
10.一种系统,包括:
一个或多个处理器;
存储查找索引的计算机可读存储介质,所述查找索引包括:
与所述计算机可读存储介质上的存储单元相关联的多个索引桶,其中每个索引桶包括相应的一组存储单元;
表示存储设备上的数据对象的多个数据对象记录,所述多个数据对象记录存储在所述存储单元中,每个存储单元存储所述多个数据对象记录的相应部分,所述相应部分对应于与所述存储单元相关联的特定索引桶;
存储在所述存储单元中的多个索引过滤器,每个存储单元存储所述多个索引过滤器中的相应索引过滤器,所述相应索引过滤器包括与所述存储单元中的所述多个数据对象记录的所述相应部分中的每一个对应的至少一个查找条目;以及
计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时,使得所述系统:
响应于与数据对象相关联的一个或多个输入-输出请求,识别所述多个索引桶中用于所述数据对象的对应索引桶;
针对与所述数据对象相关联的数据对象记录,查询与所述对应索引桶相关联的所述相应的一组存储单元中的每一个存储单元中的所述相应索引过滤器;以及
确定与所述对应索引桶相关联的所述一组存储单元中的任意一个是否包含所述数据对象记录。
11.根据权利要求10所述的系统,其中所述计算机可读存储介质包括固态驱动器(SSD),并且所述存储设备包括固态驱动器、硬盘驱动器和独立冗余磁盘阵列中的至少一个,并且其中所述存储单元包括SSD页面。
12.根据权利要求10所述的系统,其中所述多个索引过滤器包括布谷鸟过滤器,其中识别用于所述数据对象的所述对应索引桶包括:
散列所述数据对象的至少部分以产生一个或多个散列值;以及
基于所述一个或多个散列值识别所述对应索引桶。
13.根据权利要求10所述的系统,进一步包括存储所述多个索引过滤器的第二计算机可读存储介质,其中确定与所述对应索引桶相关联的所述相应一组存储单元中的任意一个是否包含所述数据对象记录包括:
将一个或多个散列函数应用到所述数据对象,以产生与所述数据对象相关联的一个或多个散列值;以及
在所述多个索引过滤器的至少一部分中的过滤器条目内搜索所述一个或多个散列值,所述多个索引过滤器的所述部分对应于与所述对应索引桶中的所述相应的一组存储单元相关联的索引过滤器。
14.根据权利要求13所述的系统,其中所述一个或多个输入-输出请求包括一个或多个读取操作,所述系统进一步包括在由所述一个或多个处理器执行时使得所述系统进行如下操作的附加计算机可读指令:
在所述一个或多个散列值与所述过滤器条目中的至少一个匹配时:
确定与所述特定索引过滤器相关联的存储单元至少具有包含所述数据对象记录的阈值概率;
基于所述存储单元至少具有包含所述数据对象记录的所述阈值概率,执行所述存储单元的读取以搜索所述数据对象记录;以及
当所述数据对象记录被定位在所述数据单元中时,从所述存储单元检索所述数据对象记录。
15.根据权利要求13所述的系统,进一步包括在由所述一个或多个处理器执行时使得所述系统进行如下操作的附加计算机可读指令:
在所述一个或多个散列值与所述过滤器条目中的至少一个不匹配或所述数据对象记录在所述读取之后未被定位在所述存储单元中时,确定所述数据对象是新的数据对象并且所述存储单元不包含所述数据对象记录。
16.根据权利要求15所述的系统,进一步包括在由所述一个或多个处理器执行时使得所述系统进行如下操作的附加计算机可读指令:
响应于确定所述数据对象是所述新的数据对象,将所述新的数据对象写入到所述存储设备;
更新与所述新的数据对象相关联的所述数据对象记录,以指示所述存储设备上与所述新的数据对象相关联的地址;并且
将所述数据对象记录发送到与所述对应索引桶相关联的暂存区域,其中所述暂存区域存储排成队列以复制到所述一组存储单元中的一个存储单元的特定数据对象记录。
17.一种非瞬态计算机可读存储介质,包括:
存储单元,用于存储表示储存器中的数据对象的数据对象记录;以及
包括多个索引桶的查找索引,每个索引桶与一组存储单元相关联,并且包括用于所述一组存储单元中的每个相应的一个存储单元的相应索引过滤器,所述一组存储单元包含所述数据对象记录的相应部分,其中每个相应索引过滤器包括用于所述一组存储单元的所述相应的一个存储单元中的每个数据对象记录的至少一个查找条目;
存储在所述非瞬态计算机可读存储介质上的计算机可读指令,所述计算机可读指令在由一个或多个处理器执行时,使得所述一个或多个处理器:
接收与数据对象相关联的输入-输出请求;并且
响应于所述输入-输出请求,对所述查找索引执行所述数据对象的查找操作,所述查找操作包括:
识别所述查找索引中用于所述数据对象的索引桶;及
基于与在所述查找索引中识别的用于所述数据对象的所述索引桶相关联的每个相应索引过滤器,确定与所述索引桶相关联的一组存储单元中的任意一个是否包含与所述数据对象对应的数据对象记录。
18.根据权利要求17所述的非瞬态计算机可读存储介质,其中所述相应索引过滤器包括布谷鸟过滤器,并且其中识别用于所述数据对象的所述索引桶是基于与所述数据对象相关联的一个或多个散列值,所述非瞬态计算机可读存储介质存储附加指令,所述附加指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器:
在确定与所述索引桶相关联的所述一组存储单元中的任意一个是否包含所述数据对象记录之前,针对所述数据对象记录搜索与所述索引桶相关联的暂存区域,其中所述暂存区域包括可选择、以复制到所述索引桶中的所述一组存储单元中的一个存储单元的数据对象记录的队列;并且
当所述搜索在所述暂存区域中未定位到所述数据对象记录时,通过在与所述一组存储单元相关联的每个相应索引过滤器中的过滤器条目内搜索所述一个或多个散列值,确定与所述索引桶相关联的所述一组存储单元中的任意一个是否包含所述数据对象记录,所述一组存储单元与所述索引桶相关联。
19.根据权利要求17所述的非瞬态计算机可读存储介质,其中确定与所述索引桶相关联的所述一组存储单元中的任意一个是否包含所述数据对象记录包括:
当所述一个或多个散列值与所述过滤器条目中的至少一个匹配时:
确定与所述索引过滤器相关联的特定存储单元至少具有包含所述数据对象记录的阈值概率;
基于所述存储单元至少具有包含所述数据对象记录的所述阈值概率,执行所述特定存储单元的读取并且针对所述数据对象记录检查所述特定存储单元中的对应槽;以及
当所述数据对象记录被定位在所述特定数据单元中时,从所述特定存储单元检索所述数据对象记录。
20.根据权利要求19所述的非瞬态计算机可读存储介质,其中确定与所述索引桶相关联的所述一组存储单元中的任意一个是否包含所述数据对象记录进一步包括:
当所述一个或多个散列值与所述过滤器条目中的至少一个不匹配时:
确定所述数据对象是新的数据对象并且所述一组存储单元不包含与所述新的数据对象相关联的所述数据对象记录;
将所述新的数据对象写入到所述储存器;
更新所述数据对象记录,以包括所述新的数据对象的地址的指示;并且
将所述数据对象记录发送到与所述对应索引桶相关联的所述暂存区域。
21.一种非瞬态计算机可读存储介质,包括:
存储在所述非瞬态计算机可读存储介质上的计算机可读指令,所述计算机可读指令在由一个或多个处理器执行时,使得所述一个或多个处理器:
识别与查找索引中的索引桶对应的多个脏对象记录,所述索引桶与储存器上的一组存储单元相关联,所述多个脏对象记录排成队列以复制到所述一组存储单元中的一个或多个存储单元;
针对所述一组存储单元中的每个相应存储单元:
确定所述多个脏对象记录中能添加到所述相应存储单元的第一相应数量的脏对象记录,所述第一相应数量基于所述相应存储单元中的可用对象记录槽的数量和所述多个脏对象记录中的新的对象记录的数量中的至少一个;以及
确定所述多个脏对象记录中与所述相应存储单元相关联的第二相应数量的对象记录;
基于所述多个脏对象记录中能添加到所述相应存储单元的第一相应数量的脏对象记录和与所述相应存储单元相关联的所述第二相应数量的对象记录,针对所述多个脏对象记录从所述一组存储单元中选择特定存储单元;
基于所述多个脏对象记录中的新的对象记录的数量以及与所述特定存储单元相关联的所述第二相应数量的对象记录,识别从所述多个脏对象记录中的哪些脏对象记录复制到所述特定存储单元;以及
基于所识别的脏对象记录更新所述特定存储单元。
22.根据权利要求21所述的非瞬态计算机可读存储介质,其中更新所述特定存储单元包括:将所述特定存储单元的更新后的版本写入到所述储存器,并且其中从所述一组存储单元中选择所述特定存储单元包括:
基于所述多个脏对象记录中能添加到所述相应存储单元的所述第一相应数量的脏对象记录和与所述相应存储单元相关联的所述第二相应数量的对象记录的对应总数,对所述一组存储单元中的每个存储单元进行排序;以及
从所述一组存储单元中识别排序最高的存储单元,所述排序最高的存储单元具有最高的对应总数。
23.根据权利要求21所述的非瞬态计算机可读存储介质,存储在由所述一个或多个处理器执行时使得所述一个或多个处理器进行如下操作的附加计算机可读指令:
针对与所述特定存储单元相关联的所述第二相应数量的对象记录中的每个对象记录:
在所述特定存储单元中定位所述对象记录的现有版本;
确定是否从所述特定存储单元移除或更新所述对象记录;
当确定移除所述对象记录时,标记所述对象记录以进行移除;以及
当确定更新所述对象记录时,使用所述对象记录的更新版本重写所述对象记录的所述现有版本。
24.根据权利要求21所述的非瞬态计算机可读存储介质,其中所述索引桶包括用于所述一组存储单元中的每个相应的一个存储单元的相应索引过滤器,所述非瞬态计算机可读存储介质存储在由所述一个或多个处理器执行时使得所述一个或多个处理器进行如下操作的附加计算机可读指令:
针对所述多个脏对象记录中的所述数量的新的对象记录中的每个对象记录:
在与所述特定存储单元相关联的所述相应索引过滤器中添加对象记录条目;并且
将所述对象记录复制到所述特定存储单元中的第一位置,所述特定存储单元中的第一位置与所述相应索引过滤器中的所述对象记录条目的第二位置对应。
25.根据权利要求24所述的非瞬态计算机可读存储介质,存储在由所述一个或多个处理器执行时使得所述一个或多个处理器进行如下操作的附加计算机可读指令:
在所述相应索引过滤器满时:
将所述数量的新的对象记录中的一个或多个剩余对象记录存储在脏暂存区域中;并且
在存储器中缓存所述相应索引过滤器的更新版本。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/586,947 US11010300B2 (en) | 2017-05-04 | 2017-05-04 | Optimized record lookups |
US15/586,947 | 2017-05-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108804031A true CN108804031A (zh) | 2018-11-13 |
CN108804031B CN108804031B (zh) | 2021-10-01 |
Family
ID=62235795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810419688.5A Active CN108804031B (zh) | 2017-05-04 | 2018-05-04 | 最佳记录查找 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11010300B2 (zh) |
EP (1) | EP3399444B1 (zh) |
CN (1) | CN108804031B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765138A (zh) * | 2019-10-31 | 2020-02-07 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN111506604A (zh) * | 2019-01-31 | 2020-08-07 | 伊姆西Ip控股有限责任公司 | 访问数据的方法、装置和计算机程序产品 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10795859B1 (en) | 2017-04-13 | 2020-10-06 | EMC IP Holding Company LLC | Micro-service based deduplication |
US10795860B1 (en) | 2017-04-13 | 2020-10-06 | EMC IP Holding Company LLC | WAN optimized micro-service based deduplication |
US10546018B2 (en) * | 2017-06-29 | 2020-01-28 | Arista Networks, Inc. | System and method of coalescing writes to a hardware table in a non-disruptive fashion |
CN109254794A (zh) * | 2017-06-29 | 2019-01-22 | Nvxl技术股份有限公司 | 数据软件系统辅助 |
US10936543B1 (en) | 2017-07-21 | 2021-03-02 | EMC IP Holding Company LLC | Metadata protected sparse block set for SSD cache space management |
US10459633B1 (en) | 2017-07-21 | 2019-10-29 | EMC IP Holding Company LLC | Method for efficient load balancing in virtual storage systems |
US11461269B2 (en) | 2017-07-21 | 2022-10-04 | EMC IP Holding Company | Metadata separated container format |
US10949088B1 (en) | 2017-07-21 | 2021-03-16 | EMC IP Holding Company LLC | Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system |
US10860212B1 (en) | 2017-07-21 | 2020-12-08 | EMC IP Holding Company LLC | Method or an apparatus to move perfect de-duplicated unique data from a source to destination storage tier |
US11113153B2 (en) | 2017-07-27 | 2021-09-07 | EMC IP Holding Company LLC | Method and system for sharing pre-calculated fingerprints and data chunks amongst storage systems on a cloud local area network |
US10481813B1 (en) | 2017-07-28 | 2019-11-19 | EMC IP Holding Company LLC | Device and method for extending cache operational lifetime |
US10929382B1 (en) | 2017-07-31 | 2021-02-23 | EMC IP Holding Company LLC | Method and system to verify integrity of a portion of replicated data |
US11093453B1 (en) | 2017-08-31 | 2021-08-17 | EMC IP Holding Company LLC | System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication |
US11188594B2 (en) * | 2018-02-07 | 2021-11-30 | Oracle International Corporation | Wildcard searches using numeric string hash |
US10997153B2 (en) | 2018-04-20 | 2021-05-04 | Hewlett Packard Enterprise Development Lp | Transaction encoding and transaction persistence according to type of persistent storage |
US11243703B2 (en) | 2018-04-27 | 2022-02-08 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
US11321295B2 (en) * | 2019-11-14 | 2022-05-03 | Acronis International Gmbh | Systems and methods for improving indexer performance by multiplexing data of an underlying index |
JP2021124951A (ja) * | 2020-02-05 | 2021-08-30 | 富士通株式会社 | 情報処理システム、情報処理装置およびアクセス制御方法 |
CN112148928B (zh) * | 2020-09-18 | 2024-02-20 | 鹏城实验室 | 一种基于指纹家族的布谷鸟过滤器 |
CN114691011A (zh) | 2020-12-25 | 2022-07-01 | 伊姆西Ip控股有限责任公司 | 管理数据块的方法、电子设备和计算机程序产品 |
CN113094336B (zh) * | 2021-04-01 | 2022-11-01 | 中山大学 | 基于Cuckoo哈希的文件系统目录管理方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542052A (zh) * | 2010-12-29 | 2012-07-04 | 微软公司 | 优先散列索引 |
US20130318051A1 (en) * | 2011-12-06 | 2013-11-28 | Brocade Communications Systems, Inc. | Shared dictionary between devices |
CN104115134A (zh) * | 2012-02-16 | 2014-10-22 | 苹果公司 | 复合非易失性存储设备的数据迁移 |
CN104809135A (zh) * | 2014-01-27 | 2015-07-29 | 腾讯科技(深圳)有限公司 | 一种数据存取方法及装置 |
US9454476B2 (en) * | 2011-08-11 | 2016-09-27 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
CN106033420A (zh) * | 2015-03-11 | 2016-10-19 | 杭州华三通信技术有限公司 | 哈希表的处理方法及装置 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4302754C1 (de) | 1993-02-01 | 1994-06-16 | Siemens Ag | Monolithisch integrierte Datenspeicheranordnung und Verfahren zu deren Betrieb |
US5555389A (en) * | 1993-07-07 | 1996-09-10 | Hitachi, Ltd. | Storage controller for performing dump processing |
US6115705A (en) | 1997-05-19 | 2000-09-05 | Microsoft Corporation | Relational database system and method for query processing using early aggregation |
US6704730B2 (en) | 2000-02-18 | 2004-03-09 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
US6625612B1 (en) | 2000-06-14 | 2003-09-23 | Ezchip Technologies Ltd. | Deterministic search algorithm |
CA2331474A1 (en) | 2001-01-19 | 2002-07-19 | Stergios V. Anastasiadis | Stride-based disk space allocation scheme |
JP4991283B2 (ja) | 2003-02-21 | 2012-08-01 | カリンゴ・インコーポレーテッド | コンテンツベースのアドレシングにおける追加ハッシュ関数 |
US7139781B2 (en) | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
EP1617341A1 (en) | 2004-07-16 | 2006-01-18 | International Business Machines Corporation | File operation management device |
US7814078B1 (en) | 2005-06-20 | 2010-10-12 | Hewlett-Packard Development Company, L.P. | Identification of files with similar content |
US7454592B1 (en) * | 2006-02-16 | 2008-11-18 | Symantec Operating Corporation | Block-level and hash-based single-instance storage |
CA2705379C (en) | 2006-12-04 | 2016-08-30 | Commvault Systems, Inc. | Systems and methods for creating copies of data, such as archive copies |
US20080201335A1 (en) | 2007-02-20 | 2008-08-21 | Nec Laboratories America, Inc. | Method and Apparatus for Storing Data in a Peer to Peer Network |
US8028106B2 (en) | 2007-07-06 | 2011-09-27 | Proster Systems, Inc. | Hardware acceleration of commonality factoring with removable media |
US7941633B2 (en) | 2007-12-18 | 2011-05-10 | International Business Machines Corporation | Hash optimization system and method |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
CN101330668B (zh) | 2008-08-04 | 2012-06-27 | 华为技术有限公司 | 接入网与核心网之间接口电路的管理方法、设备及系统 |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
JP2012531674A (ja) | 2009-06-26 | 2012-12-10 | シンプリヴィティ・コーポレーション | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
US9239843B2 (en) | 2009-12-15 | 2016-01-19 | Symantec Corporation | Scalable de-duplication for storage systems |
US8990216B2 (en) | 2010-03-19 | 2015-03-24 | Microsoft Corporation | Scalable index build techniques for column stores |
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8935487B2 (en) * | 2010-05-05 | 2015-01-13 | Microsoft Corporation | Fast and low-RAM-footprint indexing for data deduplication |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US10331649B2 (en) * | 2014-06-29 | 2019-06-25 | Microsoft Technology Licensing, Llc | Transactional access to records on secondary storage in an in-memory database |
US9389950B2 (en) * | 2014-11-14 | 2016-07-12 | International Business Machines Corporation | Techniques for information protection in a solid-state device based storage pool |
US11386067B2 (en) * | 2015-12-15 | 2022-07-12 | Red Hat, Inc. | Data integrity checking in a distributed filesystem using object versioning |
US10255288B2 (en) | 2016-01-12 | 2019-04-09 | International Business Machines Corporation | Distributed data deduplication in a grid of processors |
US11016955B2 (en) | 2016-04-15 | 2021-05-25 | Hitachi Vantara Llc | Deduplication index enabling scalability |
US10241722B1 (en) * | 2016-05-27 | 2019-03-26 | Pavilion Data Systems, Inc. | Proactive scheduling of background operations for solid state drives |
US9928178B1 (en) * | 2016-09-29 | 2018-03-27 | Amazon Technologies, Inc. | Memory-efficient management of computer network resources |
US10997153B2 (en) | 2018-04-20 | 2021-05-04 | Hewlett Packard Enterprise Development Lp | Transaction encoding and transaction persistence according to type of persistent storage |
-
2017
- 2017-05-04 US US15/586,947 patent/US11010300B2/en active Active
-
2018
- 2018-05-04 CN CN201810419688.5A patent/CN108804031B/zh active Active
- 2018-05-07 EP EP18171116.9A patent/EP3399444B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542052A (zh) * | 2010-12-29 | 2012-07-04 | 微软公司 | 优先散列索引 |
US9454476B2 (en) * | 2011-08-11 | 2016-09-27 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
US20130318051A1 (en) * | 2011-12-06 | 2013-11-28 | Brocade Communications Systems, Inc. | Shared dictionary between devices |
CN104115134A (zh) * | 2012-02-16 | 2014-10-22 | 苹果公司 | 复合非易失性存储设备的数据迁移 |
CN104809135A (zh) * | 2014-01-27 | 2015-07-29 | 腾讯科技(深圳)有限公司 | 一种数据存取方法及装置 |
CN106033420A (zh) * | 2015-03-11 | 2016-10-19 | 杭州华三通信技术有限公司 | 哈希表的处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
XI CHEN; GAOGANG XIE; JIANHUA YANG: "Mitigate DDoS attack using TTL buckets and host threatening index", 《IEEE》 * |
黎浩宏: "一种新型索引结构", 《万方数据知识服务平台》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506604A (zh) * | 2019-01-31 | 2020-08-07 | 伊姆西Ip控股有限责任公司 | 访问数据的方法、装置和计算机程序产品 |
CN111506604B (zh) * | 2019-01-31 | 2023-06-13 | 伊姆西Ip控股有限责任公司 | 访问数据的方法、装置和计算机程序产品 |
CN110765138A (zh) * | 2019-10-31 | 2020-02-07 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3399444A1 (en) | 2018-11-07 |
EP3399444B1 (en) | 2020-04-15 |
US20180322062A1 (en) | 2018-11-08 |
US11010300B2 (en) | 2021-05-18 |
CN108804031B (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804031A (zh) | 最佳记录查找 | |
US11341117B2 (en) | Deduplication table management | |
US9858303B2 (en) | In-memory latch-free index structure | |
TWI627536B (zh) | 用於具有調適分割之一共用快取之系統及方法 | |
CN104025059B (zh) | 用于数据存储存储器的空间收回的方法和系统 | |
CN108268219B (zh) | 一种处理io请求的方法及装置 | |
US9727479B1 (en) | Compressing portions of a buffer cache using an LRU queue | |
TWI771933B (zh) | 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器 | |
US11169968B2 (en) | Region-integrated data deduplication implementing a multi-lifetime duplicate finder | |
Tulkinbekov et al. | CaseDB: Lightweight key-value store for edge computing environment | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
Li et al. | Enabling efficient updates in KV storage via hashing: Design and performance evaluation | |
US11010091B2 (en) | Multi-tier storage | |
CN113505130A (zh) | 一种哈希表的处理方法 | |
Lee et al. | Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds | |
US11775433B2 (en) | Cache management for search optimization | |
US11556470B2 (en) | Cache management for search optimization | |
US11714758B2 (en) | Cache management for search optimization | |
Misra et al. | Multi-version Indexing in Flash-based Key-Value Stores | |
US11960481B2 (en) | Managing lookup operations of a metadata structure for a storage system | |
Zhao | Designing Large-Scale Key-Value Systems on High-Speed Storage Devices | |
US11327664B1 (en) | Fast small write forwarding with non-temporal cache memory | |
JP2023110317A (ja) | 機械学習モデルの交差検証プログラム,交差検証方法及び情報処理装置 | |
Pan | Data Management on Non-Volatile Memory: From Mobile Applications to Large-Scale Databases | |
CN116909473A (zh) | 具有计算存储设备的跨层键值存储架构的系统和方法 |
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 |