CN113196260A - 能够选择性使用键部分的键值存储树 - Google Patents
能够选择性使用键部分的键值存储树 Download PDFInfo
- Publication number
- CN113196260A CN113196260A CN201980083131.1A CN201980083131A CN113196260A CN 113196260 A CN113196260 A CN 113196260A CN 201980083131 A CN201980083131 A CN 201980083131A CN 113196260 A CN113196260 A CN 113196260A
- Authority
- CN
- China
- Prior art keywords
- key
- levels
- data structure
- value
- particular key
- 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
Images
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的各方面提供例如当在键值存储(KVS)树数据结构内存储键值对(与键相关联)或浏览所述KVS树数据结构时相对于所述KVS树数据结构选择性地使用所述键的一部分的各种实施例,所述部分例如是所述键的前缀(也被称作键的键前缀)。对于一些实施例,当基于键浏览KVS树时,KVS树的第一组层级(例如,第一系列层级)通过所述键的第一部分(例如,前缀)浏览,且KVS树的第二组层级(例如,第二系列层级)通过所述键的第二部分(例如,整个部分)浏览。
Description
优先权申请
本申请要求2018年12月14日提交的第16/220,729号美国申请的优先权,所述美国申请以全文引用的方式并入本文中。
技术领域
本公开的实施例大体上涉及存储器子系统,且更确切地说,涉及键值存储(KVS)树数据结构的操作。
背景技术
存储器子系统可以是存储系统,例如固态驱动器(SSD),且可包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统将数据存储在存储器组件处且从存储器组件检索数据。
附图说明
根据下文给出的具体实施方式且根据本公开的各种实施例的附图将更加充分地理解本公开。
图1为示出根据本公开的一些实施例的包含存储器子系统的实例计算环境的框图。
图2为根据本公开的一些实施方案的用于键值存储(KVS)树的实例键部分选择性使用组件的框图。
图3为根据本公开的一些实施方案的用于利用KVS树选择性地使用的键的一部分的实例方法的流程图。
图4为示出根据本公开的一些实施方案的实施键的一部分的选择性使用的实例KVS树的图。
图5为示出根据本公开的一些实施方案的可实施键的一部分的选择性使用的实例KVS树的框图。
图6A和6B提供示出在实例实施例的上下文中的计算环境的组件之间的交互的交互图,在所述实例实施例中,关于KVS树执行用于选择性地使用键的一部分的方法。
图7为示出根据本公开的一些实施例的呈计算机系统形式的机器的图形表示的框图,在所述计算机系统内可执行指令集以使机器执行本文中所论述的方法中的任何一或多种。
具体实施方式
本公开的各方面涉及选择性地使用键的前缀来将键值对(与键相关联)存储于键值树数据结构内。存储器子系统在下文中也被称作“存储器装置”。存储器子系统的实例为存储系统,例如SSD。在一些实施例中,存储器子系统为混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可(例如,经由写入请求)提供待存储于存储器子系统处的数据,且可(例如,经由读取请求)请求待从存储器子系统检索的数据。
存储器子系统可包含可存储来自主机系统的数据的多个存储器组件。存储器子系统可进一步包含存储器子系统控制器,所述存储器子系统控制器可与存储器组件中的每一个通信以响应于从主机系统接收到的请求而例如在存储器组件处执行读取数据、写入数据或擦除数据的操作。存储器子系统的存储器组件中的任何一或多个可包含执行以下操作的媒体控制器:管理存储器组件的存储器单元,与存储器子系统控制器通信,以及执行从存储器子系统控制器接收到的存储器请求(例如,读取或写入)。
在例如数据库存储和体数据存储(例如,云存储)的一些应用中,键值数据结构用以将数据存储于数据存储媒体上,所述数据存储媒体例如由一或多个存储器装置实施且呈现为包括一或多个媒体数据块(媒体块)的单一逻辑数据存储体的数据存储媒体池(媒体池)。键值存储(KVS)可包括一或多个键值数据结构以存储和搜索键值对。键值数据结构可准许对所存储的键值对数据的高效搜索、准许对稀疏数据的高效存储或准许对可搜索的数据的高效存储。一般来说,键值数据结构接受键值对以进行存储,且配置成对基于键的值的查询作出响应。键值数据结构可包括例如树数据结构的此类结构,其实例包含日志结构的合并树(LSM树)和键值存储(KVS)树(在本文中也被称作键值存储树数据结构或KVS树数据结构)。
对于本文中所描述的各种实施例,KVS树包括基数树数据结构,所述基数树数据结构可基于键的至少一部分的散列(例如,键的前缀或整个键的散列)而(在KVS树内)分配与键(例如,键值对)相关联的值。举例来说,键值对存储在树节点处,且键用以从树的根节点浏览到存储与给定键相关联的键值对的节点。存储给定键的键值对的节点可由表示键的位串(例如,键的散列)确定,其中位串每次可消耗若干位以浏览树。举例来说,如果表示键的位串(例如,键的散列)为“01001110”且每次消耗两个位,那么两个位块的序列将为“01”、“00”、“11”和“10”,其对应于整数值1、0、3和2。因此,基于此位串的KVS树的浏览可包括:从KVS的根节点开始,基于“01”浏览到KVS树的层级一的子节点#1;从所述节点基于“00”浏览到KVS树的层级二的子节点#0;然后基于“11”浏览到KVS树的层级三的子节点#2;最后基于“10”浏览到KVS树的层级四的子节点#3。如果与键相关联的键值对存储于KVS中,那么其将存储于序列中的最后一个节点中(例如,层级四的子节点#3)。
取决于实施例,可基于给定键而浏览的KVS树的层级(或边沿)的数目可取决于表示用以(例如,用于)浏览树的每一层级/边沿的给定键(例如,键前缀或整个键的散列)的位串的位数目。举例来说,键(例如,键前缀或整个键)的散列可产生包括64位位串的散列值,且其中浏览KVS树的每一层级消耗表示键的位串的两个位,64位串将促进KVS树的多达32层级的浏览。在KVS树的每一层级消耗四个位的另一情况下,64位串将促进KVS树的多达16层级的浏览。
本公开的各方面提供例如当在键值树(KVS树)数据结构内存储键值对(与键相关联)或浏览KVS树数据结构时相对于KVS树选择性地使用键的一部分的各种实施例,所述部分例如是键的前缀(也被称作键的键前缀)。基于键部分(例如,键前缀)的选择性使用,KVS树中的键值对的存储也可在本文中被称作基于键部分(例如,键前缀)的KVS树中的键值对的分配。对于一些实施例,当基于键浏览KVS树(例如,搜索键值对或将键值对存储于KVS树的节点中)时,KVS树的第一组层级(例如,第一系列层级)通过键的第一部分(例如,局部部分,例如前缀),且KVS树的第二组层级(例如,第二系列层级)通过键的第二部分(例如,整个部分)浏览。举例来说,KVS树的第一L层级可通过基于键的局部部分(例如,键的局部部分的散列)而产生的位串浏览,而KVS树的层级L+1及以下可通过基于键的完整部分(例如,键的完整部分的散列)而产生的位串浏览。另外,对于一些实施例,当基于键浏览KVS树时,KVS树的第一组层级由键的第一部分(例如,第一前缀)浏览,KVS的第二组层级由键的不同于第一前缀的第二部分(例如,第二前缀)浏览,且KVS树的第三组层级由键的第三部分(例如,整个部分)浏览。一些实施例涉及多于四个或更多组层级,其中每一层级组使用键的不同部分。另外,取决于实施例,键的不同部分可或可不重叠。对于一些实施例,KVS树的一组层级包括KVS树的一系列层级。举例来说,KVS树的第一组层级可包括KVS树的第一层级到层级L,且KVS树的第二组层级可包括KVS树的层级L+1到最后一个层级。因此,各种实施例通过在相对于KVS树的不同层级组执行操作(例如,浏览KVS树或将键值对存储于KVS树中)时使用给定键的不同部分选择性地使用KVS树内的键的不同部分。
键的一部分可包括少于所有键,例如键前缀,而键的另一部分可包括所有键(即,键的整个部分)。对于一些实施例,键的前缀包括键的前N个字节或字符,其中N可被视为前缀的长度。举例来说,键的前缀可包括键的前8个字节(8字节前缀)。在另一情况下,键的第一前缀可包括键的前8个字节(8字节前缀),而键的第二前缀可包括键的前16个字节(16字节前缀)。在另一情况下,键的前缀可包括键的前两个字符(例如,美国信息交换标准码(American Standard Code for Information Interchange,ASCII)字符)。在另一情况下,键的第一前缀可包括键的前两个字符(例如,ASCII字符),且键的第二前缀可包括键的前四个字符。
对于一些实施例,给定前缀与KVS树的给定层级组(例如,层级系列)相关联,且与用于从给定前缀产生位串的给定运算/函数(例如,散列函数)相关联。因此,对于一些实施例,两个不同的前缀与用于基于前缀产生位串的两个不同运算/函数(例如,散列函数)相关联。
一些实施例实施用于基于给定键浏览KVS树的技术,方法是使用基于给定键的前N个字节而产生的位串(例如,通过第一散列函数)浏览KVS树的前L个层级(例如,第一系列层级),且使用基于给定键的整个部分而产生的位串(例如,通过第二散列函数)浏览KVS树的层级L+1及以下(例如,第二系列层级)。通过此技术,可保留地点,因为任何给定迭代将仍在树中的所有节点的小子集上迭代,且可防止退化,因为给定键的整个部分的位串(例如,散列)在层级L+1及以下使用。
传统上,KVS树可在前缀模式下操作,其中散列特定键的前缀以确定特定键的位串,所述位串可提供KVS树内的地点-具有浏览到KVS树的相同部分的相同前缀的键,且所述键相关联的值沿着共同浏览路径存储。利用地点,当在作为集合的部分的键上迭代时(例如,当找到用于具有共同前缀键的一组键的KVS树中的值时),KVS树可具有效率。不利的是,仅在前缀模式下操作KVS树可使KVS树退化成非平衡树(退化程度通常取决于键在可能的前缀的集合中的分布),这可使KVS树操作效率低下(例如,搜索、存取和存储操作效率低下)。
本文中所描述的各种实施例可使KVS树能够在使用键的一或多个前缀存储(且随后浏览)到KVS树的节点的同时维持平衡树,所述KVS树存储与键相关联的键值对(例如,键的相关值)。本文中所描述的各种实施例使键值对基于键的两个或更多个不同部分(例如,键的一或多个前缀,且接着键的整个部分)分布到KVS树的节点,这可在于KVS树内查找具有共同前缀的一组键的值时提供地点,同时避免将使KVS树变得不平衡的分布。因此,本文中所描述的实施例的使用可提高计算机系统存取(例如,读取和写入)KVS树上的键值对的能力。
如本文中所使用,KVS树包括树数据结构,所述树数据结构包括基于键的预定导出(例如,而非树的内容)具有父节点与子节点之间的连接的节点。根据各种实施例,KVS树的节点内的数据包括键值对的一组键块(用于存储键)和一组值块(用于存储值)。以此方式,KVS树的节点可存储与其对应值分开的键。每一节点可包括经排序(例如,按时间排序)的键值组(在本文中也被称作kvset)序列。在按时间排序的情况下,序列中靠后的键值组可表示较早键值组。kvset可包括一或多个键值对,其准许值连同参考所述值的对应键一起存储在KVS树中。因此,在KVS树内,kvset充当组织在KVS树的节点中的个别键和值存储区。给定kvset内的键值对可按键分类。给定kvset内的每一键可相对于kvset中其它键为唯一的;然而,KVS树内的键可不为唯一的(例如,在KVS树的单一节点内或不同节点中的两个不同的kvset可包含相同键)。每一kvset在写入到节点后可不变(例如,在放置/存储于节点中后,kvset不改变)。虽然节点内的kvset可不变,但kvset可被删除,或kvset的数据内容中的一些或全部可被添加到新kvset。
kvset可包括键树以存储kvset的键值对的键条目,其中给定键条目可包括键和对值的参考两者。多种数据结构可用以高效存储和检索例如二叉搜索树、B树等键树(例如,其甚至可能不是数据树)中的唯一键。举例来说,键存储于键树的叶节点中,其中键树的任何子树中的最大键可在最右子节点的最右条目中,键树的第一节点的最右边沿链接到键树的子节点,且扎根于键树的子节点处的子树中的所有键可大于键树的第一节点中的所有键。
对于一些实施例,kvset的键条目存储于可包括主键块和零或多个扩展键块的一组键数据块(也被称作键块或kblock)中。键块组中的成员可对应于由存储器装置实施的数据存储媒体的媒体数据块(媒体块),例如SSD、硬盘驱动器等。每一键块可包括用以将其标识为键块的标头,且kvset的主键块可包括用于kvset的一或多个扩展键块的媒体块标识列表。
主键块可包括关于kvset的键树的标头。标头可包括辅助或促进与键或kvset的交互的多个值。举例来说,主键块或其中所存储的标头可包括kvset的键树中的最低键的副本或kvset的键树中的最高键的副本。主键块可包括用于kvset的键树的媒体块标识列表。另外,主键块可包括用于kvset的布隆过滤器(bloom filter)的布隆过滤器标头,且主键块可包括kvset的布隆过滤器的媒体块标识列表。
对于一些实施例,kvset的值存储于一组值数据块(在本文中也被称作值块或vblock)中。KVS树中的每一特定值块可具有与其相关联的数据产生编号,所述数据产生编号指示最初针对KVS树产生的特定值块的序列次序。以此方式,特定值块的数据产生编号可充当用于何时初始产生特定值块时的时戳。例如,对于产生且添加到KVS树的根节点(例如,其kvset)的第一值块,数据生成编号可以值“1”开始,且产生且添加到KVS树的根节点(例如,其kvset)的第二值块将具有数据产生编号“2”。随着产生且添加到KVS树的每一新的值块通过根节点,数据产生编号增加。
所述一组值块的成员可对应于由存储器装置实施的数据存储媒体的媒体数据块(媒体块),如本文中所提到,所述数据存储媒体可包括SSD、硬盘驱动器等。每一值块可包括将其标识为值块的标头。值块可包括存储区段以其间无间隔地存储一或多个值,其中第一值的位可延伸到数据存储媒体上的第二值的位,而两值之间没有防护件、控件或其它分隔符。对于各种实施例,kvset的主键块包括用于kvset的一组值块中的值块的媒体块标识列表。以此方式,主键块可管理对kvset内的值块的存储参考。
对于一些实施例,与键相关联的数据标记(下文中称作铭碑(tombstone))用以指示对应于键的值已被删除。铭碑可驻存于与键相关联的键条目中,且可不针对键值对消耗值块空间。根据一些实施例,铭碑标记与键相关联的值的删除,同时避免从KVS树清除所述值的可能昂贵的操作。对于一些实施例,当在针对给定键按时间排序搜索KVS树期间遇到铭碑时,搜索过程会知道对应于给定键的值已被删除,即使与给定键相关联的键值对的到期版本驻存在KVS树内的较低(例如,较早)位置处也是如此。
对于一些实施例,主键块包含用于kvset的一组度量。举例来说,一组度量可包括以下中的一或多个:存储于kvset中的键的总数目;或具有储存于kvset中的铭碑值的键的数目;存储于kvset中的键的所有键长度的总和;存储于kvset中的键的所有值长度的总和。最后两个度量可提供kvset消耗的至少大致(如果不准确)的存储量。一组度量还可包括例如kvset的值块中未被参考的数据量(例如,未被参考值)。此最后的度量可提供可在维护操作(例如,对KVS树执行的垃圾收集操作)中回收的空间的估计值。
本文公开了系统的一些实例,所述系统执行与如本文中所描述的利用KVS树选择性地使用键的一部分有关的操作。
图1示出根据本公开的一些实例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如存储器组件112A到112N。存储器组件112A到112N可为易失性存储器装置、非易失性存储器装置,或其组合。在一些实施例中,存储器子系统110为存储系统。存储系统的实例为SSD。在一些实施例中,存储器子系统110为混合存储器/存储系统。一般来说,计算环境100可包含使用存储器子系统110的主机系统120。举例来说,主机系统120可将数据写入到存储器子系统110且从存储器子系统110读取数据。
主机系统120可以是计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到所述存储器子系统。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文中所使用,“耦合到”一般是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如,无介入组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤信道接口、串行连接SCSI(SAS)接口等。物理主机接口可用以在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用非易失性存储器(Non-Volatile Memory,NVM)高速(NVMe)接口来存取存储器组件112A到112N。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。
存储器组件112A到112N可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)型快闪存储器。存储器组件112A到112N中的每一个可包含一或多个存储器单元阵列,例如单层级单元(SLC)或多层级单元(MLC)(例如,TLC或QLC)。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储由主机系统120使用的数据(例如数据块)的一或多个位。尽管描述了例如NAND型快闪存储器的非易失性存储器组件,但存储器组件112A到112N可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件112A到112N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁阻随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112A到112N的存储器单元可分组为存储器页或数据块,所述存储器页或数据块可指用以存储数据的存储器组件的单元。
存储器子系统控制器115可与存储器组件112A到112N通信以执行操作,例如在存储器组件112A到112N处进行读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。存储器子系统控制器115可包含配置成执行存储于本地存储器119中的指令的处理器(处理装置)117。在所示出的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作,包含处理存储器子系统110与主机系统120之间的通信的各种过程、操作、逻辑流程和例程。在一些实施例中,本地存储器119可包含存储存储器指针、所提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管图1中的实例存储器子系统110示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110可能不包含存储器子系统控制器115,且可替代地依靠(例如,由外部主机或由与存储器子系统110分离的处理器或控制器提供的)外部控制。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适合的命令以实现对存储器组件112A到112N的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和在逻辑块地址与物理块地址之间的与存储器组件112A到112N相关联的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统120接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存器或缓冲器(例如,DRAM)以及地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器组件112A到112N。
存储器组件112A到112N中的任一个可包含媒体控制器(例如,媒体控制器113A和媒体控制器113N),以管理存储器组件的存储器单元,与存储器子系统控制器115通信,以及执行从存储器子系统控制器115接收到的存储器请求(例如,读取或写入)。
主机系统120包含用于键值存储(KVS)树的键部分选择性使用组件122,所述键部分选择性使用组件可在执行存储于由存储器组件112A到112N中的一或多个实施的数据存储媒体(例如,媒体池)上的KVS树内的操作时引起键的一部分的选择性使用。存储于数据存储媒体上的KVS树可以是由主机系统120、由存储器子系统110(例如,由存储器子系统控制器115在主机系统120的请求下)或其某一组合产生的KVS树。取决于实施例,键部分选择性使用组件122可以是主机系统120上的应用或操作系统(例如,用于存储器子系统110的操作系统软件驱动器)的部分。在一些实施例中,存储器子系统110包含键部分选择性使用组件122的至少一部分。举例来说,存储器子系统控制器115可包含配置成执行存储于本地存储器119中的用于执行本文中所描述的操作的指令的处理器117(例如,处理装置)。
当执行关于KVS树的操作时,键部分选择性使用组件122实现键的一或多个不同部分的选择性使用。例如,当基于给定键执行关于KVS树的特定操作(例如,浏览、搜索或存储操作)时,键部分选择性使用组件122可实现给定键的第一部分(例如,前缀)的使用,以相对于KVS树的第一组层级(例如,从层级一到层级L的第一系列层级)执行操作,且实现给定键的第二部分(例如,整个部分)(不同于第一部分)的使用,以相对于KVS树的第二组层级(例如,从层级L+1及以下开始的第二系列层级)执行操作。举例来说,键部分选择性使用组件122可使给定键的前缀的位串表示(例如,散列)用以在KVS树的第一组层级内的子节点之间浏览,且接着使给定键的整个部分的位串表示(例如,散列)用以在KVS树的第二组层级内的子节点之间浏览。此类浏览操作可例如在针对与KVS树内的给定键相关联的给定键值对的搜索过程期间发生。可基于给定键的第一部分的位表示浏览第一组层级的一或多个子节点,且针对给定键值对搜索所述一或多个子节点。如果在第一组层级内遇到的子节点均不包括给定键值对,则可基于给定键的第二部分的位表示浏览第二组层级的一或多个节点,且针对给定键值对搜索所述一或多个子节点。如果第二组层级内遇到的子节点均不包括键值对,则搜索过程将指示在KVS树中未找到给定键值对。
当基于键值对的相应键将KVS树中的键值对存储到一或多个子节点时(例如,在将键值对下移KVS树的一或多个层级的移动/下降操作期间),键部分选择性使用组件122可使类似操作发生。举例来说,当将与特定键相关联的特定键值对存储于KVS树的第一组层级中的子节点中时,特定键的第一部分(例如,前缀)的位串表示可用以确定(例如,标识)特定键值对将存储到的(第一组层级的)子节点。替代地,当将特定键值对存储于KVS树的第二组层级中的子节点中时,特定键的第二部分(例如,整个部分)的位串表示可用以确定(例如,标识)特定键值对将存储到的(第二组层级的)子节点。
取决于实施例,键部分选择性使用组件122可包括逻辑(例如,机器指令集,例如固件)或使存储器子系统110(例如,存储器子系统控制器115)执行本文中相对于键部分选择性使用组件122所描述的操作的一或多个组件。键部分选择性使用组件122可包括能够执行本文中所描述的操作的有形单元。下文描述关于键部分选择性使用组件122的操作的其它细节。
图2为根据本公开的一些实施方案的用于KVS树的实例键部分选择性使用组件200的框图。如所示出,键部分选择性使用组件200包括请求接收器210、基于第一键部分的节点浏览器220和基于第二键部分的节点浏览器230。对于一些实施例,键部分选择性使用组件200可在组件或布置上与图2中所示出的不同(例如,更少或更多组件)。举例来说,与所展示的那些基于键部分的节点浏览器相比,键部分选择性使用组件200可包括额外的基于键部分的节点浏览器(例如,每一基于键部分的节点浏览器与KVS树的不同层级组相关联且与其一起使用)。
如本文中所提及,由键部分选择性使用组件200操作的KVS树可存储于存储器子系统(例如,110)上以促进相对于对KVS树所执行的操作(例如,KVS树的浏览或作为在KVS树的一或多个节点中的一或多个键值对的数据的存储)选择性地使用键的一或多个不同部分。KVS树可以是形成键值存储(KVS)数据库的多个KVS树的部分,所述KVS数据库可包括多层级树,所述多层级树具有包括不均匀kvset的基础层级和包括各自分别包括均匀kvset的两个或更多个KVS子树的根节点(且因此为起点)的第二层级。KVS树可由主机系统(例如,120)、存储器子系统(例如,110)或其某一组合产生。KVS树可在一组存储器组件上产生,使得KVS树包括一组节点,其中所述一组节点中的节点包括kvset序列,且其中kvset序列中的kvset包括用于存储一或多个键的一组键块和用于存储一或多个值的一组值块。kvset序列可按时间排序,使得在序列中较早添加的kvsets表示相对于最近添加的kvsets的较早数据(例如,键值对)。
请求接收器210接收例如来自在主机系统上运行的软件应用(例如,用户软件应用)的请求,以执行关于KVS树的操作。可请求的操作的实例包含但不限于基于键从KVS树的特定层级上的一个节点浏览到KVS树的下一层级上的子节点,基于(例如,请求内所提供的)键针对键值对搜索KVS树,基于键迭代多个键值对(其中多个键值对为具有共同前缀键的一组键的部分),以及基于与键值对相关联的键将键值对从KVS树的特定层级上的父节点下移(例如,下降)到KVS树的下一较低层级上的子节点。对于各种实施例,针对KVS树所请求的操作,例如搜索、迭代和移动涉及基于键从KVS树的父节点浏览到KVS树的子节点(例如基于键从根节点遍历到特定子节点)。
如本文中所描述,基于给定键,在节点之间浏览可包括使用给定键的不同部分的位串表示(例如,散列)以在KVS树的不同层级组内的节点之间浏览。对于键部分选择性使用组件200,这通过基于第一键部分的节点浏览器220和基于第二键部分的节点浏览器230来促进。确切地说,对于一些实施例,基于第一键部分的节点浏览器220实现基于给定键的第一部分(例如,第一前缀)的位串表示从KVS树的第一组层级(例如,第一系列层级)内的父节点到子节点的浏览,且基于第二键部分的节点浏览器230实现基于给定键的第二部分(例如,整个部分)的位串表示从KVS树的第二组层级(例如,第二系列层级)内的父节点到子节点的浏览。例如,在请求接收器210接收到基于特定键搜索特定键值对的请求的情况下,如果特定键值对不位于KVS树的根节点内,则基于第一键部分的节点浏览器220可实现基于给定键的前缀(例如,前8个字节)的位串表示(例如,散列)从根节点到KVS树的层级1到L内的一或多个子节点的遍历,其继而可针对特定键值对搜索那些一或多个子节点。如果特定键值对不位于KVS树的根节点或KVS树的层级1到L内的至少一个子节点内,则基于第二键部分的节点浏览器230可实现基于给定键的整个部分(例如,全部64字节)的位串表示(例如,散列)从层级L处的子节点到KVS树的层级L+1及以下内的一或多个子节点的遍历,其继而可针对特定键值对搜索那些一或多个子节点。
图3为根据本公开的一些实施方案的用于利用KVS树选择性地使用的键的一部分的实例方法300的流程图。方法300可由可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法300由图1的主机系统120执行。在这些实施例中,方法300可至少部分地由键部分选择性使用组件122执行。替代地,图3的方法300由图1的存储器子系统110(例如,存储器子系统控制器115的处理器117)执行。尽管以特定序列或次序展示过程,但除非另外规定,否则可修改过程的次序。因此,所示出的实施例应仅作为实例理解,且所示出的过程可以不同次序执行,且一些过程可并行地执行。另外,可在各种实施例中省略一或多个过程。因此,并非每一实施例中都需要所有过程。其它过程流程是可能的。图3的方法300的操作可相对于KVS树的两个或更多个节点同时执行。
尽管图3的方法300是基于根据树层级的用于键值对的不同键部分的选择性使用,就搜索KVS树的节点而言来示出和描述的,但对于一些实施例,应用类似于方法300的那些技术的技术以执行关于KVS树的其它操作,例如在KVS树内存储或移动键值对。
在操作305处,主机系统(例如,120)的处理装置在存储器子系统(例如,110)上产生包括一组节点的键值存储树数据结构(KVS树),其中所述一组节点中的节点包括一组键值对。对于一些实施例,一组节点中的每一节点包括键值组(kvset)的序列,且kvset的序列中的kvset包括用于存储一或多个键的一组键块和用于存储一或多个值的一组值块。替代地,可已经产生(例如,通过另一过程)KVS树,且对于一些实施例,在操作305处存取KVS树,其中存取KVS树可有助于方法300的后续操作(例如,操作310)。
在操作310处,主机系统的处理装置接收针对与特定键相关联的特定键值对搜索键值存储树数据结构的请求。请求可响应于主机系统上操作的软件应用(例如,用户应用)的数据请求而产生。如本文中所提及,对于一些实施例,搜索的请求可以是对键值存储树数据结构执行的较大操作的部分。响应于在操作310处接收请求,在操作315处,主机系统的处理装置搜索用于与特定键相关联的特定键值对的键值存储树数据结构(例如,由操作305产生)的根节点。
如果主机系统的处理装置确定(在操作320处)在根节点中未找到特定键值对(根节点并不包括特定键值对),那么方法300进行到操作325。替代地,如果主机系统的处理装置确定(在操作320处)在根节点中找到特定键值对(根节点包括特定键值对),那么方法300进行到操作350。对于一些实施例,通过进行到操作325,方法300可基于键针对包括特定键值对的子节点搜索键值存储树数据结构。
在操作325处,主机系统的处理装置基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点。对于一些实施例,第一组层级包括键值存储树数据结构的第一系列层级,例如包括键值存储树数据结构的层级一到层级L的系列。对于一些实施例,特定键的第一部分包括键的前缀,其中所述前缀可包括键的前N个字节或键的前N个字符中的至少一个。另外,对于一些实施例,特定键的第一部分包括特定键的非前缀部分,例如特定键中从键的起点偏移的特定部分。基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点可包括基于特定键的第一部分的位串表示搜索键值存储树数据结构的第一组层级的一或多个子节点,所述位串表示例如可通过将散列函数(例如,第一散列函数)应用于特定键的第一部分而产生。对于一些实施例,键的两个不同部分(例如,键的前缀和键的整个部分)使用两个不同散列函数来产生其相应位串表示。
在操作325处,基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点可包括基于特定键的第一部分(例如,从第一组层级中的根节点或父节点)浏览到第一组层级的第一子节点,且针对特定键值对搜索第一子节点。响应于确定第一子节点不包括特定键值对,操作325可基于特定键的第一部分从第一组层级的第一子节点浏览到第二子节点,且针对特定键值对搜索第二子节点。第一节点可处于第一组层级中的第一层级,且第二子节点可处于第一组层级中的第二层级,其中第二层级为第一层级下方的下一层级。响应于确定第二子节点不包括特定键值对,操作325可继续在键值存储树数据结构的第一组层级中在较低层级处浏览和搜索一或多个子节点,直到在子节点中的一个中找到特定键值对或到达第一组层级中的最低层级为止。
如果主机系统的处理装置确定(在操作330处)未在键值存储树数据结构的第一组层级的至少一个子节点中(第一组层级的至少一个子节点不包括特定键值对)找到特定键值对,那么方法300进行到操作335。替代地,如果主机系统的处理装置确定(在操作330处)在第一组层级的至少一个子节点中(第一组层级的至少一个子节点包括特定键值对)找到特定键值对,那么方法300进行到操作350。
在操作335处,主机系统的处理装置基于特定键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点,其中第二部分不同于第一部分。对于一些实施例,第二组层级包括不与相关联于特定键的第一部分的第一系列层级重叠的键值存储树数据结构的第二系列层级。第二系列层级可遵循第一系列层级,使得第二系列层级包括键值存储树数据结构的层级L+1及以下。特定键的第二部分不同于特定键的第一部分,且第二部分可或可不与第一部分部分重叠。取决于实施例,第二部分可包括特定键的整个部分、特定键的第二前缀或特定键的某一其它部分(例如,特定键中从键的起点偏移的特定部分)。另外,对于一些实施例,特定键的第二部分包括键的第二前缀,其中第二前缀可包括键的前N+M个字节或键的前N+M个字符中的至少一个(其中M>0)。基于特定键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点可包括基于特定键的第二部分的位串表示搜索键值存储树数据结构的第二组层级的一或多个子节点,所述位串表示例如可通过将散列函数(例如,不同于第一散列函数的第二散列函数)应用于特定键的第二部分而产生。
如果主机系统的处理装置确定(在操作340处)未在键值存储树数据结构的第二组层级的至少一个子节点中(第二组层级的至少一个子节点不包括特定键值对)找到特定键值对,那么方法300进行到操作345。替代地,如果主机系统的处理装置确定(在操作340处)在第二组层级的至少一个子节点中(第二组层级的至少一个子节点包括特定键值对)找到特定键值对,那么方法300进行到操作350。
在操作345处,主机系统的处理装置指示(例如,发送响应到在操作310处发送请求的请求器)未在KVS树中找到特定键值对(第二组层级的至少一个子节点不包括特定键值对)。替代地,在操作350处,主机系统的处理装置将特定键值对从所标识(通过操作320、330、340)的KVS树的节点提供到在操作310处发送请求的请求器。
图4为示出根据本公开的一些实施方案的实施键的一部分的选择性使用的实例KVS树400的图。如所示出,KVS树400包括根节点415、在KVS树400的层级1处的子节点、在KVS树400的层级2处的子节点,以及在KVS树400的层级3处及以下的额外的子节点(未完全示出)。根据一些实施例,在图4中,基于键的键前缀的位串表示(包括键的两个字符)浏览KVS树400的层级1和2,且基于键的整个部分的位串表示浏览KVS树400的层级3及以下。如表410中所示出,键前缀“AA”的位串表示包括0100,键前缀“AB”包括1110,且键前缀“AR”包括1100。相比而言,如在表410中所示出,整个键“AARON”的位串表示包括1101001100,整个键“AARDV”的位串表示包括1010001001,整个键“ABBLE”的位串表示包括0110111100,整个键“ARBY”的位串表示包括1110000011。在表410中,可通过将第一散列函数应用于相应的键前缀来产生键前缀的位表示,同时可通过将第二散列函数(不同于第一散列函数)应用于相应的整个键来产生整个键的位表示。
基于针对KVS树400的每一层级消耗位串的两个位而浏览KVS树400,针对具有共同键前缀“AA”的所有键浏览KVS树400将产生到子节点430的浏览路径;针对具有共同键前缀“AB”的所有键浏览KVS树400将产生到子节点440的浏览路径;以及针对具有共同键前缀“AR”的所有键浏览KVS树400将产生到子节点435的浏览路径。随后,根据一些实施例,从层级2浏览到层级3及以下将基于针对KVS树400的每一层级消耗整个键的位串表示的两个位。因此,基于具有共同前缀的两个不同键,从KVS树的层级2中的子节点向下浏览到KVS树400的层级3中及以下的一或多个子节点可产生两个不同的浏览路径。举例来说,基于键“AARON”(其具有1101001100的位串表示)从子节点430浏览到KVS树400的层级3中的另一子节点将产生与基于键“AARDV”(其具有1010001001的位串表示)从子节点430浏览到KVS树400的层级3中的另一子节点将产生的不同的浏览路径,这是由于“AARON”的位串表示以11开始,而“AARDV”的位串表示以10开始。
图5为示出根据本公开的一些实施方案的可实施键的一部分的选择性使用的实例KVS树500的框图。如在本文中所提及,KVS树500包括被组织为树的键值数据结构。作为键值数据结构,值连同参考所述值的对应键一起存储于KVS树500中。具体地说,键条目可用以含有键和额外信息两者,例如对值的参考。键自身可具有KVS树500内的总排序,且因此,键可在彼此当中分类。键还可分成子键,其中所述子键是键的不重叠部分。对于一些实施例,键的总排序基于比较多个键之间的类似子键(例如,将键的第一子键与另一键的第一子键相比较)。另外,对于一些实施例,键前缀可包括一或多个子键。
KVS树500包括一或多个节点,例如节点510,其中所述节点的每一个包含一或多个键值组(kvset)。对于一些实施例,一或多个节点(例如,节点510)各自包括kvset的时间排序序列。如所示出,kvset 515包括‘N’标记以指示其为最新序列,而kvset 520包括‘O’标记以指示其为最早序列。Kvset 525包括‘I’标记以指示其处于序列中间。这些标记始终用以标记kvset;然而,另一标记(例如‘X’)表示特定kvset而非其在序列中的位置(例如,新、中间、早等),除非其为波浪符‘~’,在此情况下其仅为不记名kvset。如下文更详细地解释,越早的kvset(具有越早的键块)出现在KVS树500越下方处。因此,将kvset沿树层级向下推动(例如,下降),例如从L1到L2,会使来自父节点的至少一个新kvset被添加到父节点的接收方子节点中的最新位置。
KVS树500包括给定节点(例如,节点510)的kvset中(由键块和值块存储)的键值对到给定节点的任何一个子节点(例如,表示为L1处的所有节点的节点510中的任一个子节点)的决定性映射。KVS树500的决定性映射可意味着鉴于键,外部实体可在不知道KVS树500的内容的情况下跟踪通过KVS树500的节点的路径到键的(键值对的)键块和值块。举例来说,这不同于B树,例如在B树中,树的内容将决定给定键的值将落在何处,以便维持树的搜索优化结构。相比而言,KVS树500的决定性映射可提供规则,使得例如基于键,可计算L3处的子节点,即使最大树层级(例如树深度)此时仅在L1处也将映射到所述键。对于一些实施例,决定性映射包括键的一部分的散列的一部分。子键可被散列以到达映射集,且映射集的一部分可用于树的任何给定层级。取决于实施例,键的部分可包括整个键。
对于一些实施例,散列包括包含所述散列的部分的多个不重叠部分。举例来说,多个不重叠部分中的每一个可对应于树的一层级。可以通过节点的层级根据多个不重叠部分确定散列的部分。因此,节点的子节点的最大数目可由散列的部分的大小限定,其中所述散列的部分的大小可以是一定数目的位。举例来说,关于产生八个位的键的散列,所述八个位可划分成三个组,包括前两个位、位三到六以及位七和八。可基于一组位对子节点进行编索引,使得处于第一层级(例如,L1)的子节点具有两位名(基于位一和二),第二层级(例如,L2)上的子节点具有四位名(基于位三到六),且第三层级(例如,L3)上的子节点具有两位名(基于位七和八)。
对于一些实施例,节点510表示KVS树500的根节点。KVS树500可存储于由存储器子系统(例如,110)实施的数据存储媒体上,其中KVS树500可存储于数据存储媒体的媒体块中。数据存储媒体的媒体块可以是可寻址的块。
图6A到6B提供示出在实例实施例的上下文中的计算环境100的组件之间的交互的交互图,在所述实例实施例中执行用于选择性地使用键的一部分的方法。方法的操作可由可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法由主机系统120执行。尽管以特定序列或次序展示操作,但除非另外规定,否则可修改过程的次序。因此,所示出的实施例应仅作为实例理解,且所示出的过程可以不同次序执行,且一些过程可并行地执行。另外,可在各种实施例中省略一或多个过程。因此,并非每一实施例中都需要所有过程。
在图6A到6B中示出的实例的上下文中,主机系统可包括主机系统120,且存储器子系统可包括存储器子系统110,其中存储器组件112A到112N中一或多个可实施用于存储由主机系统120操作的KVS树的数据存储媒体。
如所展示,在操作602处,主机系统120产生键值存储树数据结构(KVS树),主机系统120将其写入到存储器子系统110以供存储。作为响应,在操作610处,存储器子系统110将KVS树存储在数据存储媒体上。
在操作604处,主机系统120接收针对与特定键相关联的特定键值对搜索KVS树的请求。响应于请求,在操作606处,主机系统120针对特定键值对搜索KVS树的根节点。为实现这一点,主机系统120读取存储于存储器子系统110的数据存储媒体上的KVS树(例如,搜索存储于KVS树上的根节点),且存储器子系统110在操作612处提供对KVS树的存取。如果主机系统120确定根节点不包括特定键值对,那么主机系统120进行到操作616,且如果主机系统120确定根节点的确包括特定键值对,那么主机系统120进行到操作608。
在操作608处,主机系统120将键值对从根节点提供到发送/产生在操作604处所接收的请求的请求器。替代地,在操作616处,主机系统120基于特定键的第一部分(例如,基于由特定键的前缀的散列产生的位表示)针对特定键值对搜索KVS树的第一组层级(例如,第一系列层级)的一或多个子节点。为实现这一点,主机系统120读取存储于存储器子系统110的数据存储媒体上的KVS树(例如,搜索存储于KVS树中的第一组层级的一或多个子节点),且存储器子系统110在操作614处提供对KVS树的存取。如果主机系统120确定第一组层级中的至少一个子节点不包括特定键值对,那么主机系统120进行到操作622,且如果主机系统120确定第一组层级中的至少一个子节点的确包括特定键值对,那么主机系统120进行到操作620。
在操作620处,主机系统120将键值对从第一组层级的至少一个子节点提供到发送/产生在操作604处所接收的请求的请求器。替代地,在操作622处,主机系统120基于特定键的第二部分(例如,基于由特定键的整个部分的散列产生的位表示)针对特定键值对搜索KVS树的第二组层级(例如,第二系列层级)的一或多个子节点。为实现这一点,主机系统120读取存储于存储器子系统110的数据存储媒体上的KVS树(例如,搜索存储于KVS树中的第二组层级的一或多个子节点),且存储器子系统110在操作634处提供对KVS树的存取。如果主机系统120确定第二组层级中的至少一个子节点不包括特定键值对,那么主机系统120进行到操作626,且如果主机系统120确定第二组层级中的至少一个子节点的确包括特定键值对,那么主机系统120进行到操作626。
在操作624处,主机系统120将键值对从第二组层级的至少一个子节点提供到发送/产生在操作604处所接收的请求的请求器。替代地,在操作626处,主机系统120指示在KVS树中未找到特定键值对。
图7示出呈计算机系统700的形式的实例机器,在其内可执行指令集以使机器执行本文所论述的方法中的任何一或多个。在一些实施例中,计算机系统700可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,运行操作系统以执行对应于图1的键部分选择性使用组件122的操作)。在替代性实施例中,机器可连接(例如,联网)到局域网(Local Area Network,LAN)、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络设备、服务器、网络路由器、网络交换机或网桥,或能够(依序或以其它方式)执行指定待由机器采取的动作的指令集的任何机器。此外,虽然示出了单个机器,但还应认为术语“机器”包含单独地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任何一或多个的机器的任何集合。
实例计算机系统700包含经由总线730彼此通信的处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储装置718。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置702可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施其它指令集的处理器或实施指令集的组合的处理器。处理装置702还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702配置成执行指令726以用于执行本文所论述的操作和步骤。计算机系统700可进一步包含网络接口装置708以经由网络720通信。
数据存储装置718可包含机器可读存储媒体724(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多个指令集726或体现本文所描述的方法或功能中的任何一或多个的软件。指令726还可在由计算机系统700执行其期间完全或至少部分地驻存于主存储器704内和/或处理装置702内,所述主存储器704和所述处理装置702还构成机器可读存储媒体。机器可读存储媒体724、数据存储装置718和/或主存储器704可对应于图1的存储器子系统110。
在一个实施例中,指令726包含用以实施对应于具有部分计算跟踪的奇偶校验计算器(例如,图1的键部分选择性使用组件122)的功能的指令。虽然在实例实施例中将机器可读存储媒体724展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储由机器执行的指令集或对其进行编码且使机器执行本公开的方法中的任何一或多个的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已就计算机存储器内的数据位的操作的算法和符号表示而言呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。算法在本文中且一般被认为是产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。主要出于常用的原因,已证明将这些信号称为位、值、元素、符号、字符、术语、编号等有时是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标记。本公开可涉及将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操控且变换成类似地表示为计算机系统的存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及一种用于执行本文中的操作的设备。此设备可出于预期目的而专门构建,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储于计算机可读存储媒体中,例如但不限于各自耦合到计算机系统总线的任何类型的盘,包含软盘、光盘、只读光盘(Compact Disc Read-Only Memory,CD-ROM)和磁性光盘;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);EEPROM;磁卡或光卡或适合于存储电子指令的任何类型的媒体。
本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用系统可根据本文中的教示与程序一起使用,或其可证明构造更专用的设备来执行方法是方便的。将如上文描述中所阐述的那样呈现用于各种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开的实施例。应了解,可使用多种编程语言来实施如本文所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含其上存储有可用以对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于存储呈机器(例如,计算机)可读形式的信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器可读(例如,计算机可读)存储媒体,例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开具体实例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开更广泛实施例的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
实例
实例1为一种系统,其包括:一组存储器组件,其存储键值存储树数据结构,所述键值存储树数据结构包括一组节点,其中一组节点中的节点包括一组键值对;以及处理装置,其操作性地耦合到一组存储器组件,且配置成执行包括以下各项的操作:接收针对与特定键相关联的特定键值对搜索键值存储树数据结构的请求;响应于所述请求,针对与特定键相关联的特定键值对搜索键值存储树数据结构的根节点;以及响应于确定根节点不包括特定键值对,基于键针对包括特定键值对的子节点搜索键值存储树数据结构,所述搜索包括:基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点;以及响应于确定键值存储树数据结构的第一组层级的至少一个子节点不包括特定键值对,基于键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点,第二部分不同于第一部分。
在实例2中,实例1的标的物任选地包含特定键的第一部分包括键的前缀的情况。
在实例3中,实例1或实例2的标的物任选地包含特定键的前缀包括键的前N个字节的情况。
在实例4中,实例1到3中任一个的标的物任选地包含特定键的第二部分包括键的第二前缀的情况。
在实例5中,实例1到4中任一个的标的物任选地包含特定键的第二部分包括键的整个部分的情况。
在实例6中,实例1到5中任一个的标的物任选地包含第一组层级包括键值存储树数据结构的第一系列层级,第二组层级包括第二系列层级,且第一系列层级不与第二系列层级重叠的情况。
在实例7中,实例1到6中任一个的标的物任选地包含以下情况,其中基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点包括:基于特定键的第一部分而浏览到第一组层级的第一子节点;针对特定键值对搜索第一子节点;以及响应于确定第一子节点不包括特定键值对而:基于特定键的第一部分从第二组层级的第一子节点浏览到第二子节点;以及针对特定键值对搜索第二子节点。
在实例8中,实例1到7中任一个的标的物任选地包含以下情况,其中基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点包括:基于特定键的第一部分的散列搜索键值存储树数据结构的第一组层级的一或多个子节点。
在实例9中,实例1到8中任一个的标的物任选地包含以下情况,其中基于特定键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点包括:基于特定键的第二部分的散列搜索键值存储树数据结构的第二组层级的一或多个子节点。
在实例10中,实例1到9中任一个的标的物任选地包含特定键的第一部分包括特定键中从键的起点偏移的特定部分的情况。
实例11为一种方法,其包括:在一组存储器组件上产生键值存储树数据结构,所述键值存储树数据结构包括一组节点,其中一组节点中的节点包括一组键值对;接收针对与特定键相关联的特定键值对搜索键值存储树数据结构的请求;响应于所述请求,针对与特定键相关联的特定键值对搜索键值存储树数据结构的根节点;以及响应于确定根节点不包括特定键值对,基于键针对包括特定键值对的子节点搜索键值存储树数据结构,所述搜索包括:基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点;以及响应于确定键值存储树数据结构的第一组层级的至少一个子节点不包括特定键值对,基于键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点,第二部分不同于第一部分。
在实例12中,实例11的标的物任选地包含特定键的第一部分包括键的前缀的情况。
在实例13中,实例11或实例12的标的物任选地包含特定键的前缀包括键的前N个字节的情况。
在实例14中,实例11到13中任一个的标的物任选地包含特定键的第二部分包括键的第二前缀的情况。
在实例15中,实例11到14中任一个的标的物任选地包含特定键的第二部分包括键的整个部分的情况。
在实例16中,实例11到15中任一个的标的物任选地包含第一组层级包括键值存储树数据结构的第一系列层级,第二组层级包括第二系列层级,且第一系列层级不与第二系列层级重叠的情况。
在实例17中,实例11到16中任一个的标的物任选地包含以下情况,其中基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点包括:基于特定键的第一部分而浏览到第一组层级的第一子节点;针对特定键值对搜索第一子节点;以及响应于确定第一子节点不包括特定键值对而:基于特定键的第一部分从第二组层级的第一子节点浏览到第二子节点;以及针对特定键值对搜索第二子节点。
在实例18中,实例11到17中任一个的标的物任选地包含以下情况,其中基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点包括:基于特定键的第一部分的散列搜索键值存储树数据结构的第一组层级的一或多个子节点。
在实例19中,实例11到18中任一个的标的物任选地包含以下情况,其中基于特定键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点包括:基于特定键的第二部分的散列搜索键值存储树数据结构的第二组层级的一或多个子节点。
实例20为一种包括指令的非暂时性机器可读存储媒体,所述指令在由处理装置执行时使所述处理装置:在一组存储器组件上存取键值存储树数据结构,所述键值存储树数据结构包括一组节点,其中一组节点中的节点包括一组键值对;接收针对与特定键相关联的特定键值对搜索键值存储树数据结构的请求;响应于所述请求,针对与特定键相关联的特定键值对搜索键值存储树数据结构的根节点;以及响应于确定根节点不包括特定键值对,基于键针对包括特定键值对的子节点搜索键值存储树数据结构,所述搜索包括:基于特定键的第一部分搜索键值存储树数据结构的第一组层级的一或多个子节点;以及响应于确定键值存储树数据结构的第一组层级的至少一个子节点不包括特定键值对,基于特定键的第二部分搜索键值存储树数据结构的第二组层级的一或多个子节点,第二部分不同于第一部分。
Claims (15)
1.一种系统,其包括:
一组存储器组件,其存储键值存储树数据结构,所述键值存储树数据结构包括一组节点,其中所述一组节点中的节点包括一组键值对;以及
处理装置,其操作性地耦合到所述一组存储器组件,且配置成执行包括以下各项的操作:
接收针对与特定键相关联的特定键值对搜索所述键值存储树数据结构的请求;
响应于接收所述请求,针对与所述特定键相关联的所述特定键值对搜索所述键值存储树数据结构的根节点;以及
响应于确定所述根节点不包括所述特定键值对,基于键针对包括所述特定键值对的子节点搜索所述键值存储树数据结构,所述搜索包括:
基于所述特定键的第一部分搜索所述键值存储树数据结构的第一组层级的一或多个子节点;以及
响应于确定所述键值存储树数据结构的所述第一组层级的至少一个子节点不包括所述特定键值对,基于所述键的第二部分搜索所述键值存储树数据结构的第二组层级的一或多个子节点,所述第二部分不同于所述第一部分。
2.根据权利要求1所述的系统,其中所述特定键的所述第一部分包括所述键的前缀。
3.根据权利要求2所述的系统,其中所述特定键的所述前缀包括所述键的前N个字节。
4.根据权利要求2所述的系统,其中所述特定键的所述第二部分包括所述键的第二前缀。
5.根据权利要求1所述的系统,其中所述特定键的所述第二部分包括所述键的整个部分。
6.根据权利要求1所述的系统,其中所述第一组层级包括所述键值存储树数据结构的第一系列层级,所述第二组层级包括第二系列层级,且所述第一系列层级不与所述第二系列层级重叠。
7.根据权利要求1所述的系统,其中所述基于所述特定键的所述第一部分搜索所述键值存储树数据结构的所述第一组层级的所述一或多个子节点包括:
基于所述特定键的所述第一部分而浏览到所述第一组层级的第一子节点;
针对所述特定键值对搜索所述第一子节点;以及
响应于确定所述第一子节点不包括所述特定键值对而:
基于所述特定键的所述第一部分从所述第一组层级的所述第一子节点浏览到第二子节点;以及
针对所述特定键值对搜索所述第二子节点。
8.根据权利要求1所述的系统,其中所述基于所述特定键的所述第一部分搜索所述键值存储树数据结构的所述第一组层级的所述一或多个子节点包括:
基于所述特定键的所述第一部分的散列搜索所述键值存储树数据结构的所述第一组层级的所述一或多个子节点。
9.根据权利要求8所述的系统,其中所述基于所述特定键的所述第二部分搜索所述键值存储树数据结构的所述第二组层级的所述一或多个子节点包括:
基于所述特定键的所述第二部分的散列搜索所述键值存储树数据结构的所述第二组层级的所述一或多个子节点。
10.根据权利要求1所述的系统,其中所述特定键的所述第一部分包括所述特定键中从所述键的起点偏移的特定部分。
11.一种方法,其包括:
在一组存储器组件上产生键值存储树数据结构,所述键值存储树数据结构包括一组节点,其中所述一组节点中的节点包括一组键值对;
接收针对与特定键相关联的特定键值对搜索所述键值存储树数据结构的请求;
响应于接收所述请求,针对与所述特定键相关联的所述特定键值对搜索所述键值存储树数据结构的根节点;以及
响应于确定所述根节点不包括所述特定键值对,基于键针对包括所述特定键值对的子节点搜索所述键值存储树数据结构,所述搜索包括:
基于所述特定键的第一部分搜索所述键值存储树数据结构的第一组层级的一或多个子节点;以及
响应于确定所述键值存储树数据结构的所述第一组层级的至少一个子节点不包括所述特定键值对,基于所述键的第二部分搜索所述键值存储树数据结构的第二组层级的一或多个子节点,所述第二部分不同于所述第一部分。
12.根据权利要求11所述的方法,其中所述特定键的所述第一部分包括所述键的前缀。
13.根据权利要求11所述的方法,其中所述特定键的所述第二部分包括所述键的整个部分。
14.根据权利要求11所述的方法,其中所述第一组层级包括所述键值存储树数据结构的第一系列层级,所述第二组层级包括第二系列层级,且所述第一系列层级不与所述第二系列层级重叠。
15.一种包括指令的非暂时性机器可读存储媒体,所述指令在由处理装置执行时使所述处理装置:
在一组存储器组件上存取键值存储树数据结构,所述键值存储树数据结构包括一组节点,其中所述一组节点中的节点包括一组键值对;
接收针对与特定键相关联的特定键值对搜索所述键值存储树数据结构的请求;
响应于所述请求,针对与所述特定键相关联的所述特定键值对搜索所述键值存储树数据结构的根节点;以及
响应于确定所述根节点不包括所述特定键值对,基于键针对包括所述特定键值对的子节点搜索所述键值存储树数据结构,所述搜索包括:
基于所述特定键的第一部分搜索所述键值存储树数据结构的第一组层级的一或多个子节点;以及
响应于确定所述键值存储树数据结构的所述第一组层级的至少一个子节点不包括所述特定键值对,基于所述特定键的第二部分搜索所述键值存储树数据结构的第二组层级的一或多个子节点,所述第二部分不同于所述第一部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/220,729 US11048755B2 (en) | 2018-12-14 | 2018-12-14 | Key-value store tree with selective use of key portion |
US16/220,729 | 2018-12-14 | ||
PCT/US2019/065702 WO2020123632A1 (en) | 2018-12-14 | 2019-12-11 | Key-value store tree with selective use of key portion |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113196260A true CN113196260A (zh) | 2021-07-30 |
CN113196260B CN113196260B (zh) | 2022-06-17 |
Family
ID=71072587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980083131.1A Active CN113196260B (zh) | 2018-12-14 | 2019-12-11 | 能够选择性使用键部分的键值存储树 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11048755B2 (zh) |
CN (1) | CN113196260B (zh) |
WO (1) | WO2020123632A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
CN117539408A (zh) * | 2024-01-09 | 2024-02-09 | 华中科技大学 | 一种存算一体索引系统及键值对存储系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
JP2020167509A (ja) * | 2019-03-29 | 2020-10-08 | コベルコ建機株式会社 | 情報処理システム、情報処理方法、およびプログラム |
US11256717B2 (en) * | 2019-10-21 | 2022-02-22 | Vmware, Inc. | Storage of key-value entries in a distributed storage system |
US11474699B1 (en) * | 2021-06-07 | 2022-10-18 | The Florida International University Board Of Trustees | Systems and methods for optimizing data management within key value storage |
US11892980B2 (en) * | 2021-09-16 | 2024-02-06 | EMC IP Holding Company LLC | Memory optimized algorithm for evaluating deduplication hashes for large data sets |
CN116414828A (zh) * | 2021-12-31 | 2023-07-11 | 华为技术有限公司 | 一种数据管理方法及相关装置 |
US11971859B2 (en) | 2022-04-28 | 2024-04-30 | Netapp, Inc. | Defragmentation for log structured merge tree to improve read and write amplification |
US20230350810A1 (en) * | 2022-04-28 | 2023-11-02 | Netapp Inc. | In-memory hash entries and hashes used to improve key search operations for keys of a key value store |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102971732A (zh) * | 2010-07-02 | 2013-03-13 | 华为技术有限公司 | 键/值存储器的集成分级查询处理的系统结构 |
CN105814846A (zh) * | 2013-12-17 | 2016-07-27 | 华为技术有限公司 | 网络地址查询的前缀树阶段平衡 |
CN106021266A (zh) * | 2015-03-27 | 2016-10-12 | 国际商业机器公司 | 支持动态更新的快速多层索引 |
US20160335299A1 (en) * | 2015-05-11 | 2016-11-17 | Apple Inc. | Hierarchical Data Storage |
CN106970936A (zh) * | 2017-02-09 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置、数据查询方法及装置 |
CN107851102A (zh) * | 2015-04-14 | 2018-03-27 | 中兴飞流信息科技有限公司 | 用于键值存储的系统和方法 |
US20180225315A1 (en) * | 2017-02-09 | 2018-08-09 | Micron Technology, Inc. | Kvs tree |
Family Cites Families (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5204958A (en) | 1991-06-27 | 1993-04-20 | Digital Equipment Corporation | System and method for efficiently indexing and storing a large database with high data insertion frequency |
US5530850A (en) | 1993-10-25 | 1996-06-25 | International Business Machines Corporation | Data storage library array with log-structured file system which allows simultaneous write and garbage collection |
US6175835B1 (en) * | 1996-07-26 | 2001-01-16 | Ori Software Development, Ltd. | Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks |
US6597957B1 (en) | 1999-12-20 | 2003-07-22 | Cisco Technology, Inc. | System and method for consolidating and sorting event data |
US7308456B2 (en) | 2002-12-19 | 2007-12-11 | International Business Machines Corporation | Method and apparatus for building one or more indexes on data concurrent with manipulation of data |
US7690000B2 (en) | 2004-01-08 | 2010-03-30 | Microsoft Corporation | Metadata journal for information technology systems |
US7383276B2 (en) | 2004-01-30 | 2008-06-03 | Microsoft Corporation | Concurrency control for B-trees with node deletion |
CA2631197C (en) | 2005-11-28 | 2013-01-29 | Commvault Systems, Inc. | Systems and methods for data management |
EP1855285A2 (en) | 2006-05-10 | 2007-11-14 | Nero AG | Apparatus for writing data having a data amount on a storage medium |
CA2655011A1 (en) | 2006-06-30 | 2008-01-10 | Tsia Kuznetsov | Adaptive index with variable compression |
US20080165281A1 (en) | 2007-01-05 | 2008-07-10 | Microsoft Corporation | Optimizing Execution of HD-DVD Timing Markup |
US8706914B2 (en) | 2007-04-23 | 2014-04-22 | David D. Duchesneau | Computing infrastructure |
US8347059B2 (en) | 2008-08-15 | 2013-01-01 | International Business Machines Corporation | Management of recycling bin for thinly-provisioned logical volumes |
US20100146003A1 (en) | 2008-12-10 | 2010-06-10 | Unisys Corporation | Method and system for building a B-tree |
US9189472B2 (en) | 2009-03-30 | 2015-11-17 | Touchtype Limited | System and method for inputting text into small screen devices |
CN101515298B (zh) | 2009-03-30 | 2013-09-25 | 华为技术有限公司 | 基于树形数据结构节点的插入的方法和存储装置 |
US8996563B2 (en) | 2010-04-06 | 2015-03-31 | Tokutek, Inc. | High-performance streaming dictionary |
US9355109B2 (en) | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US9838242B2 (en) | 2011-04-13 | 2017-12-05 | Jetflow Technologies | Flowlet-based processing with key/value store checkpointing |
US8788505B2 (en) * | 2011-04-27 | 2014-07-22 | Verisign, Inc | Systems and methods for a cache-sensitive index using partial keys |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
WO2013001535A2 (en) | 2011-06-27 | 2013-01-03 | Jethrodata Ltd. | System, method and data structure for fast loading, storing and access to huge data sets in real time |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
JP5782948B2 (ja) | 2011-09-15 | 2015-09-24 | 富士通株式会社 | 情報管理方法及び情報管理装置 |
US8738657B2 (en) | 2011-09-27 | 2014-05-27 | Hewlett-Packard Development Company, L.P. | Distribution of key values |
US9053140B2 (en) | 2012-02-03 | 2015-06-09 | Apple Inc. | Enhanced B-trees with record merging |
US9613104B2 (en) | 2012-02-17 | 2017-04-04 | Netflix, Inc. | System and method for building a point-in-time snapshot of an eventually-consistent data store |
TWI475412B (zh) | 2012-04-02 | 2015-03-01 | Ind Tech Res Inst | 數位內容次序調整方法和數位內容匯流器 |
US20130265305A1 (en) | 2012-04-04 | 2013-10-10 | Jon N. Hasselgren | Compressed Depth Cache |
KR101341507B1 (ko) | 2012-04-13 | 2013-12-13 | 연세대학교 산학협력단 | 수정된 b+트리 노드 검색 방법 및 장치 |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
KR20140028342A (ko) | 2012-08-28 | 2014-03-10 | 삼성전자주식회사 | 브로드캐스트 암호화를 위한 키 관리 방법 및 브로드캐스트 암호화를 이용한 메시지 전송 방법 |
US8868531B2 (en) | 2012-09-10 | 2014-10-21 | Apple Inc. | Concurrent access methods for tree data structures |
US20140222870A1 (en) * | 2013-02-06 | 2014-08-07 | Lei Zhang | System, Method, Software, and Data Structure for Key-Value Mapping and Keys Sorting |
US9400816B1 (en) | 2013-02-28 | 2016-07-26 | Google Inc. | System for indexing collections of structured objects that provides strong multiversioning semantics |
US20140279944A1 (en) | 2013-03-15 | 2014-09-18 | University Of Southern California | Sql query to trigger translation for maintaining consistency of cache augmented sql systems |
JP6103037B2 (ja) | 2013-03-15 | 2017-03-29 | 日本電気株式会社 | 計算機システム |
EP2804114A1 (en) | 2013-05-16 | 2014-11-19 | Fujitsu Limited | Database controller, method, and program for managing a distributed data store |
US10402374B2 (en) | 2013-08-26 | 2019-09-03 | Vmware, Inc. | Log-structured storage device format |
JP6025149B2 (ja) | 2013-11-06 | 2016-11-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データを管理するシステムおよび方法 |
US9367260B1 (en) | 2013-12-13 | 2016-06-14 | Emc Corporation | Dynamic replication system |
JP5950285B2 (ja) | 2013-12-19 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム |
US9524302B2 (en) | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9411840B2 (en) | 2014-04-10 | 2016-08-09 | Facebook, Inc. | Scalable data structures |
CN105095287B (zh) | 2014-05-14 | 2018-09-28 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
US9590948B2 (en) | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
US9858301B1 (en) | 2015-01-20 | 2018-01-02 | Amazon Technologies, Inc. | Selective flushing of a database journal for an asymmetrically-encrypted database |
EP3238106B1 (en) | 2015-03-17 | 2020-10-07 | Cloudera, Inc. | Compaction policy |
US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
US9772906B2 (en) | 2015-07-30 | 2017-09-26 | Unitrends, Inc. | Disaster recovery systems and methods |
US10122380B2 (en) | 2015-11-16 | 2018-11-06 | International Business Machines Corporation | Compression of javascript object notation data using structure information |
CN107209644B (zh) | 2015-12-28 | 2020-04-28 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
US10649658B2 (en) | 2015-12-31 | 2020-05-12 | Vmware, Inc. | File system based key value service |
US10496283B2 (en) | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
US10719496B2 (en) | 2016-01-29 | 2020-07-21 | Hitachi, Ltd. | Computer system and data processing method |
US20180089074A1 (en) | 2016-09-28 | 2018-03-29 | Intel Corporation | Techniques to Manage Key-Value Storage at a Memory or Storage Device |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10719495B2 (en) | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10235257B1 (en) | 2017-07-19 | 2019-03-19 | EMC IP Holding Company LLC | Facilitation of replication progress tracking |
US10579633B2 (en) | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Reducing probabilistic filter query latency |
US20190034427A1 (en) | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
US11204905B2 (en) * | 2018-06-27 | 2021-12-21 | Datastax, Inc. | Trie-based indices for databases |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US10852978B2 (en) | 2018-12-14 | 2020-12-01 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
-
2018
- 2018-12-14 US US16/220,729 patent/US11048755B2/en active Active
-
2019
- 2019-12-11 WO PCT/US2019/065702 patent/WO2020123632A1/en active Application Filing
- 2019-12-11 CN CN201980083131.1A patent/CN113196260B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102971732A (zh) * | 2010-07-02 | 2013-03-13 | 华为技术有限公司 | 键/值存储器的集成分级查询处理的系统结构 |
CN105814846A (zh) * | 2013-12-17 | 2016-07-27 | 华为技术有限公司 | 网络地址查询的前缀树阶段平衡 |
CN106021266A (zh) * | 2015-03-27 | 2016-10-12 | 国际商业机器公司 | 支持动态更新的快速多层索引 |
CN107851102A (zh) * | 2015-04-14 | 2018-03-27 | 中兴飞流信息科技有限公司 | 用于键值存储的系统和方法 |
US20160335299A1 (en) * | 2015-05-11 | 2016-11-17 | Apple Inc. | Hierarchical Data Storage |
CN106970936A (zh) * | 2017-02-09 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置、数据查询方法及装置 |
US20180225315A1 (en) * | 2017-02-09 | 2018-08-09 | Micron Technology, Inc. | Kvs tree |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
CN117539408A (zh) * | 2024-01-09 | 2024-02-09 | 华中科技大学 | 一种存算一体索引系统及键值对存储系统 |
CN117539408B (zh) * | 2024-01-09 | 2024-03-12 | 华中科技大学 | 一种存算一体索引系统及键值对存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113196260B (zh) | 2022-06-17 |
US11048755B2 (en) | 2021-06-29 |
WO2020123632A1 (en) | 2020-06-18 |
US20200192940A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113196260B (zh) | 能够选择性使用键部分的键值存储树 | |
US11100071B2 (en) | Key-value store tree data block spill with compaction | |
US11599552B2 (en) | Counter-based compaction of key-value store tree data block | |
CN113196259B (zh) | 使用以选择性数据存储格式进行日志记录的键值存储 | |
US10725930B2 (en) | Logical to physical memory address mapping tree | |
US11657092B2 (en) | Data tree with order-based node traversal | |
CN110442529B (zh) | 可配置的存储器系统及配置和使用该存储器系统的方法 | |
KR20220159393A (ko) | 터너리 콘텐츠 어드레스가능한 메모리 검색을 위한 아키텍처 | |
CN113851166A (zh) | 存储器子系统中的加速读取转译路径 | |
CN117121107A (zh) | 使用内容可寻址存储器的用于经排序字符串表的密钥存储 | |
US11163489B2 (en) | Workload clusterization for memory system and method of executing the same | |
US20220050807A1 (en) | Prefix probe for cursor operations associated with a key-value database system | |
CN113126909B (zh) | 使用已删除记录跨度的光标查找操作 | |
US10782906B1 (en) | Memory subsystem interface to relate data and to retrieve related data | |
KR102691757B1 (ko) | Ssd 인-스토리지 프로세싱을 이용한 유전자 분석 가속 장치 및 방법 | |
US11630594B2 (en) | Storing data based on a probability of a data graph | |
CN116360681A (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 |