CN113039547A - 键值存储树数据块的基于计数器的压缩 - Google Patents
键值存储树数据块的基于计数器的压缩 Download PDFInfo
- Publication number
- CN113039547A CN113039547A CN201980074795.1A CN201980074795A CN113039547A CN 113039547 A CN113039547 A CN 113039547A CN 201980074795 A CN201980074795 A CN 201980074795A CN 113039547 A CN113039547 A CN 113039547A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- sequence
- sub
- blocks
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/22—Indexing scheme relating to groups G06F7/22 - G06F7/36
- G06F2207/222—Binary data tree
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的方面提供键值树数据结构的操作,所述操作在键值树数据结构中使用计数器值合并节点的键值对数据。
Description
优先权申请
本申请案主张2018年10月10日提交的美国申请案序号16/156,400的优先权益,所述美国申请案以全文引用的方式并入本文中。
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及键值存储(key-value store,KVS)树数据结构的操作。
背景技术
存储器子系统可以是存储系统,例如固态驱动器(SSD),且可包含存储数据的一或多个存储器组件。存储器组件可以例如是非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。
附图说明
根据下文提供的具体实施方式和本公开的各种实施例的附图将更加充分地理解本公开。
图1是说明根据本公开的一些实施例的包含存储器子系统的实例计算环境的框图。
图2是根据本公开的一些实施方案的用于键值存储(KVS)树的实例基于计数器的合并的框图。
图3到5是根据本公开的一些实施方案的用于基于计数器的合并操作的实例方法的流程图。
图6是说明根据本公开的一些实施方案的可通过基于计数器的合并操作进行操作的实例KVS树的框图。
图7A和7B示出说明根据本公开的一些实施方案的相对于实例KVS树数据结构的节点执行的实例基于计数器的合并操作的流程图。
图8A和8B提供说明在其中执行用于基于计数器的合并的方法的实例实施例的上下文中的计算环境的组件之间的交互的交互图式。
图9是说明根据本公开的一些实施例的呈计算机系统形式的机器的图形表示的框图,在所述计算机系统内可执行指令集以引起机器执行本文中所论述的方法中的任何一或多种。
具体实施方式
本公开的方面针对于合并键值树数据结构中的键值集,所述可供使用或结合存储器子系统使用。存储器子系统在下文也称为“存储器装置”。存储器子系统的实例是存储系统,例如SSD。在一些实施例中,存储器子系统是混合式存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供将存储于存储器子系统处的数据(例如,经由写入请求)并且可请求从存储器子系统检索数据(例如,经由读取请求)。
存储器子系统可包含可存储来自主机系统的数据的多个存储器组件。存储器子系统可另外包含存储器子系统控制器,所述存储器子系统控制器可与存储器组件中的每一个通信以在存储器组件处响应于从主机系统接收到的请求而执行例如读取数据、写入数据或擦除数据的操作。存储器子系统的存储器组件中的任何一或多个可包含执行以下操作的媒体控制器:管理存储器组件的存储器单元,与存储器子系统控制器通信,以及执行从存储器子系统控制器接收的存储器请求(例如,读取或写入)。
在例如数据库存储和体数据存储(例如,云存储)的一些应用中,键值数据结构用以将数据存储于数据存储媒体上,所述数据存储媒体如由一或多个存储器装置实施并且呈现为包括一或多个媒体数据块(媒体块)的单一逻辑数据存储体的数据存储媒体池(媒体池)。键值存储(KVS)可包括存储和搜索键值对的一或多个键值数据结构。键值数据结构可准许所存储的键值对数据的高效搜索,准许稀疏数据的高效存储,或准许可搜索数据的高效存储。一般来说,键值数据结构接受键值对进行存储并且被配置成对基于键查询值作出响应。键值数据结构可包括作为树数据结构的此类结构,其实例包含日志结构合并树(LSM树)和键值存储(KVS)树(在本文中也称为键值存储树数据结构或KVS树数据结构)。
本公开的方面提供用于在键值树数据结构(KVS树)中使用计数器值合并(例如,压缩)节点的键值对数据的各种实施例。取决于实施例,存储KVS树的数据存储媒体可使用包括一或多个日志结构索引的日志结构系统(例如,基于日记的系统)实施,其中数据可批处理成群组(例如,日志),这相对于数据存储媒体可提供更好的数据性能。对于一些实施例,日志结构数据存储媒体的基于数据批处理的操作非常适合于KVS树,所述KVS树可将键值对存储为索引,可通过键查询索引以将值(与键配对)返回,且其中可分批更新索引。特定来说,对于一些实施例,对KVS树的索引的每次更新包括索引本身(在本文中也称为索引的子索引)。
举例来说,相对于最初为空的索引S,对S的第一、第二、第三、……、第N次更新可分别包括子索引S(1)、S(2)、S(3)、……、S(N),其中S(1)、S(2)、S(3)、……、S(N)中的每一个包括索引本身。以此方式,索引S可被视为从最新到最旧排序的子索引序列(S=(S(N)、……、S(2)、S(1))),其中更新前置到所述序列(或替代地,从最旧到最新-S=(S(1)、S(2)、S(3)、……、S(N)),其中更新后置到所述序列)。
根据一些实施例,为搜索索引S,搜索操作(例如,搜索与受关注键配对的值)首先在子索引S(3)中进行搜索,原因是S(3)是对S的最新更新且因此具有最新数据;如果在S(3)中什么也没发现,那么搜索操作在S(2)中进行搜索;如果在S(2)中什么也没发现,那么搜索操作在S(1)中进行搜索。在将更多更新应用于索引S时,子索引序列可保持增加,且更多垃圾数据可呈含于先前更新(例如,S(2)和S(1))中的旧数据或过时数据形式累积,这继而可降低搜索效率(例如,可需要读取和搜索更多数据以查找与特定键配对的值)。
因此,本文所描述的各种实施例可通过将子索引子序列、子索引序列合并(例如,压缩)为经合并子索引并且将(子索引序列内的)子索引子序列替换为经合并子索引,恢复包括子索引序列的索引S的搜索效率。特定来说,对于一些实施例,索引S包括如本文所描述的键值存储树数据结构(KVS树),其中KVS树的一或多个节点用以存储子索引序列,且其中每一子索引S(i)包括用于存储一或多个键值对的键值集。因而,KVS树(例如,通过根节点)接收到的键值集可充当对索引S的键值对更新。
根据本文中描述的一些实施例,子索引子序列(例如,键值集)的合并操作可消除累积的垃圾数据(例如,旧的或过时的键或值数据)并且可缩短包括子序列的子索引序列的总长度(较小长度可更利于查询执行)。取决于实施例,子索引子序列(例如,键值集)可包括整个子索引序列,或小于整个的子索引序列(例如,子序列包括序列的开头、中间或结尾部分)。经合并子索引(例如,经合并键值集)与序列中的每一个子索引相比可更大(例如,存储更多需要搜索的数据)但与保持子索引序列原样相比更小(例如,存储比需要搜索的数据少的数据)。如本文中所使用,经合并子索引(例如,键值集)可表示为S(i,j),其中i>j且其中S(i,j)指示经合并子索引S(i,j)是合并所有子索引S(k)的结果,其中i<=k<=j(例如,合并键值集i到j)。
本文所描述的各种实施例合并索引S的子索引子序列(例如,键值集),同时管理索引S的长度之间的平衡,并且相对于用以存储索引S的数据存储媒体减少写入操作(例如,写入放大)。在实施数据存储媒体的一或多个存储器装置包括某些类型的与其它类型的存储器装置(例如,TLC NAND单元存储器装置)相比具有较低写入性能和耐久性特性的存储器装置(例如,QLC NAND单元存储器装置)的情况下,相对于数据存储媒体减少(例如,最少化)写入操作可改进数据存储媒体的数据性能特性。举例来说,考虑索引S的子索引序列(例如,更新)包括子索引S(1)、S(2)、……、S(N)的情况,每一子索引S(i)(例如,更新)含有M字节的数据的情况,以及更新序列不在索引S中产生垃圾数据(例如,旧的或过时的键或值数据)的情况。更新序列包括N*M数据,且因而,当更新序列写入到数据存储媒体时,至少N*M字节将写入到数据存储媒体(假设不使用压缩)。举例来说,各自为大小M字节编索引的两个子索引的合并操作将导致从数据存储媒体读取2*M字节,以及2*M字节写入到数据存储媒体。根据一些实施例将子索引序列合并为经合并子索引相对于子索引序列可有效地减少读取和写入的数据量。这继而可改进使用用于存储数据(例如,用户数据)的KVS树作为键值对的数据存储媒体(由存储器组件集,例如NAND型存储器装置集实施)的总体性能。
根据一些实施例,如下相对于可存储子索引序列的索引S执行合并(例如,压缩)操作。合并操作可包括参数r,所述参数r必须大于1(例如,r=4)。可为索引S中的每一子索引S(i)指配合并计数值(例如,压缩计数),所述合并计数值在本文中指定为mc。当接收到索引S的第N更新(包括子索引S(N))时,合并操作可为S(N)指配mc值0(或某一其它默认初始值),并且接着将S(N)附加到索引S中的当前子索引序列(例如,S=(S(N)……),其中最新更新前置到索引S。此后,在索引S含有子索引子序列,其中所述子序列包括共享相同mc值(例如,0、1、2等)的r数目的子索引(例如,4个子索引,其中r=4)时,可如下执行合并操作:将x设置为被子序列中的每一子索引共享的mc值;将子索引子序列合并成新(经合并)子索引;为经合并子索引指配mc值x+1(或某一其它默认递增值);和将序列中的子索引子序列替换为经合并子索引。
为了说明上述合并操作的实例,假设实例参数r设置为4,实例索引SEG最初为空,且通过将子索引SEG(k)前置到索引SEG,将第k更新应用于索引SEG。在对索引SEG的前三个更新之后,索引SEG具有各自具有mc值0的三个子索引(例如,S=(SEG(3)、SEG(2)、SEG(1)))。此时,索引SEG的mc值的状态可表示为[0,0,0]。当第四更新应用于索引SEG时,在实例合并操作通过第四更新已更新索引SEG(例如,S=(SEG(4)、SEG(3)、SEG(2)、SEG(1))之后,状态可表示为[0,0,0,0]。基于状态[0,0,0,0],实例合并操作检测具有mc值0的四个子索引的子序列(例如,索引SEG中的SEG(4)、SEG(3)、SEG(2)、SEG(1)子序列),将x设置为值0,将所检测到的子序列合并在一起以产生新的经合并子索引SEG(1,4),并且为经合并子索引SEG(1,4)指配mc值x+1(即,1)。实例合并操作接着将索引SEG中的所检测到的子序列(例如,S=(SEG(1,4)))替换为经合并子索引SEG(1,4)且因此,索引SEG的mc值的状态现在包括[1]。假设另外三个更新(即,SEG(7)、SEG(6)、SEG(5))应用于索引SEG(例如,S=(SEG(7)、SEG(6)、SEG(5)、SEG(1,4)),索引SEG的mc值的状态包括[0,0,0,1],且因而,实例合并操作将不检测具有相同mc值的四个子索引的子序列。在接收和应用下一更新(例如,S=(SEG(8)、SEG(7)、SEG(6)、SEG(5)、SEG(1,4))后,索引SEG的mc值的状态将包括[0,0,0,0,1],且实例合并操作将检测具有mc值0的四个子索引的子序列(例如,索引SEG中的SEG(8)、SEG(7)、SEG(6)、SEG(5)子序列)。如前所述,实例合并操作将x设置为值0,将所检测到的子序列合并在一起以产生新的经合并子索引SEG(5,8),并且为经合并子索引SEG(5,8)指配mc值x+1(即,1)。实例合并操作接着将索引SEG中的所检测到的子序列(例如,S=(SEG(5,8)、SEG(1,4)))替换为经合并子索引SEG(5,8),且因此,索引SEG的mc值的状态现在包括[1,1]。
假设对索引SEG的额外后续更新,索引SEG的mc值的状态可最终包括[0,0,0,0,1,1,1],这将引起实例合并操作:检测(在索引SEG的开头)具有mc值0的四个子索引的子序列;将x设置为值0;将所检测到的子序列合并在一起以产生新的经合并子索引;为经合并子索引指配mc值x+1(即,1);和将索引SEG中的所检测到的子序列替换为经合并子索引SEG。索引SEG的mc值的所得状态将包括[1,1,1,1]。基于此状态,在甚至将另一更新应用于索引SEG之前,实例合并操作可能检测到具有mc值1的四个子索引的另一子序列。因此,实例合并操作可为:将x设置为值1;将所检测到的子序列合并在一起以产生新的经合并子索引;为经合并子索引指配mc值x+1(即,2);和将索引SEG中的所检测到的子序列替换为经合并子索引SEG,进而产生新状态[2]。实例合并操作可针对索引SEG的后续更新继续以此方式执行。下表1说明基于索引SEG上的实例合并操作的操作的mc值的实例状态。
如本文中所使用,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的布隆过滤器的布隆过滤器标头,且主键块可包括kvset的布隆过滤器的媒体块标识的列表。
对于一些实施例,kvset的值存储于值数据块(在本文中也称为值块或vblock)集中。KVS树中的每一特定值块可具有与其相关联的数据产生编号以指示最初产生KVS树的特定值块的序列次序。以此方式,特定值块的数据产生编号可充当最初产生特定值块的时间戳。举例来说,数据产生编号可开始为值“1”,其针对经产生并且添加到KVS树的根节点(例如,所述根节点的kvset)的第一值块,且经产生并添加到KVS树的根节点(例如,所述根节点的kvset)的第二值块将具有数据产生编号“2”。随着经产生并通过根节点添加到KVS树的每一新值块而增加
值块集的成员可对应于由存储器装置实施的数据存储媒体的媒体数据块(媒体块),所述存储器装置如在本文中所提及可包括SSD、硬盘驱动器等。每一值块可包括将其标识为值块的标头。值块可包括一或多个值的存储区段且中间无间隔,其中第一值的位可延伸到数据存储装置媒体上的第二值的位中且中间无防护、容器或其它分隔符。对于各种实施例,kvset的主键块包括kvset的值块集中的值块的媒体块标识的列表。以此方式,主键块可管理对kvset内的值块的存储引用。
对于一些实施例,与键相关联的标记符(下文被称为铭碑(tombstone))用以指示与键对应的值已并删除。铭碑可与键相关联地驻存于键条目中,且键值对可不耗用值块空间。根据一些实施例,铭碑标记与键相关联的值的删除,同时避免从KVS树清除值的可能昂贵的操作。对于一些实施例,当在KVS树中针对给定键的按时间排序的搜索期间遇到铭碑时,即使与给定键相关联的键值对的过期版本驻存于KVS树内的较低(例如,较旧)位置处,搜索过程仍知道与给定键对应的值已被删除。
对于一些实施例,主键块包含kvset的度量集。举例来说,度量集可包括以下中的一个或多个:存储于kvset中的键总数目,或与铭碑值一起存储于kvset中的键的数目;存储于kvset中的键的所有键长度的总和;存储于kvset中的键的所有值长度的总和。最后两个度量可至少提供被kvset耗用的大致(如果不够精确的话)存储量。度量集也可包括例如kvset的值块中的未引用数据(例如,未引用值)的量。此最后一个度量可提供可在维护操作(例如,对KVS树执行的垃圾收集操作)中回收的空间的估计。
可响应于多种触发条件执行各种实施例的合并操作,所述触发条件例如与给定节点中的一或多个kvset满足指定的或计算的准则有关的条件。举例来说,取决于实施例,响应于正在对KVS树的给定节点执行更新,例如通过给定节点添加(例如,获取)新kvset(例如,由于将kvset从给定节点的父级节点移动(例如,溢出)到给定节点),可相对于所述给定节点执行(例如,触发)本文中所描述的合并操作。替代地,可相对于整个KVS树或针对KVS树的个别节点连续地执行合并操作(例如,在后台进程中运行)。相对于KVS树的一或多个节点的合并操作的连续执行(例如,响应于触发条件或作为后台进程)可引起KVS树的操作的连续改进,尤其是对于基于键搜索值的操作。
可触发本文中所描述的合并操作的kvset相关准则的其它实例非限制性地包括给定节点内的kvset数目、针对给定节点的资源(例如,媒体块)的释放、给定节点内的一或多个kvset的总大小,或可用于垃圾收集的一或多个kvset中的数据量。可用于kvset中的垃圾收集的数据的一个实例包括kvset中的例如通过较新kvset中的键值对或铭碑呈现为过时的一或多个键值对或铭碑,或已违反约束(例如,存留时间约束)的键值对。另一实例包括对KVS树执行维护(例如,垃圾收集)的条件。又一实例包括接收相对于KVS树的一或多个节点起始合并操作的请求(例如,来自主机系统的软件应用程序或操作系统),其中所述请求也可指定整个kvset序列或kvset子序列是否将通过合并操作进行操作。
对于一些实施例,本文中所描述的合并操作通过在使kvset的值块保持原样时合并kvset的键块,将给定节点的kvset序列中的kvset子序列合并成(给定节点的)经合并kvset。这样一来,合并操作可写入用于经合并kvset的一或多个新键块(基于kvset的现有键块),同时避免写入用于所得经合并kvset的新值块(例如,kvset的现有值块原样移动到经合并kvset),进而减少在合并操作期间相对于KVS树执行的写入操作的量。
举例来说,合并操作可合并给定节点的kvset序列(例如,时间子序列)中的子序列以产生经合并kvset,其中所得经合并kvset包括引用kvset子序列的现有值块集的新键块集。新键块集可基于kvset子序列的现有键块集产生(例如,从所述现有键块集复制)。举例来说,可基于kvset子序列的现有键块集通过将现有键块集的值(例如,键值和对现有值块的引用)复制到新键块集,产生新键块集。保持(例如,不删除)kvset子序列的那些不被新键值块集引用的现有值块但不视为未被引用。
在已产生新键块集之后,合并操作可从给定节点删除键值集子序列中的每一特定键值集,并且删除每一特定键值集的一或多个(例如,所有)键块,同时保留每一特定键值集的一或多个(例如,所有)值块(例如,原样保留)。保留的值块可包括被新键块集引用的值块、不被新键块集中的任一个引用的值块,或这两者。kvset子序列的所有值块(原样保留)可移动到经合并kvset。所得经合并kvset接着可替换kvset序列中的kvset子序列。上述操作可在本文中统称为键压缩(k压缩),其可被视为移除过时的键块和被那些过时的键块占用的空闲资源(例如,数据存储媒体的媒体块)的垃圾收集的一种形式。
替代地,对于一些实施例,本文中所描述的合并操作包括通过合并kvset的键块并且合并kvset的值块,将给定节点的kvset序列中的kvset子序列合并成(给定节点的)经合并kvset。这样一来,合并操作可写入用于经合并kvset的新一或多个键块(基于kvset的现有键块),并且可写入用于经合并kvset的新值块(基于kvset的现有值块)。举例来说,合并操作可合并给定节点的kvset序列(例如,时间子序列)中的子序列以产生经合并kvset,其中所得经合并kvset包括引用新值块集的新键块集,其中基于kvset子序列的现有键块集产生新键块集,且其中基于kvset子序列的现有值块集产生新值块集。
举例来说,可基于kvset子序列的现有键块集,通过以下操作产生新键块集:将现有键块集的值(例如,键值)复制到新键块集,且使得(新键块集中的)新键块分别引用与现有键块集引用的现有块对应的新值块集中的)新值块。可基于kvset子序列现有值块集,通过将现有值块集的值复制到新值块集而产生新值块集。在已经产生新键块集和新值块集之后,合并操作可从给定节点删除kvset子序列中的每一特定kvset,并且删除每一特定kvset的一或多个键块。另外,在已经产生新键块集和新值块集之后,可删除kvset子序列的一或多个现有值块(例如,所有现有值块)。所得经合并kvset接着可替换kvset序列中的kvset子序列。上述的操作可在本文中统称为键值压缩(kv压缩),其可被视为移除过时的键块和值块以及被那些过时的键块和值块占用的空闲资源(例如,数据存储媒体的媒体块)的垃圾收集的一种形式。
根据一些实施例,KVS树产生并存储于由存储器子系统实施的数据存储媒体上,其中KVS树可用以将数据作为一或多个键值对存储于数据存储媒体上。取决于实施例,可对主机系统、存储器子系统、或这两者的某一组合执行本文中所描述的操作。
本文中所公开的是执行与如本文中所描述的使用计数器值合并(例如,压缩)索引的子索引(例如KVS树的节点的键值集)有关的操作的系统的一些实例。
图1说明根据本公开的一些实例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如存储器组件112A到112N。存储器组件112A到112N可为易失性存储器装置、非易失性存储器装置,或这类装置的组合。在一些实施例中,存储器子系统110是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合式存储器/存储装置系统。一般来说,计算环境100可包含使用存储器子系统110的主机系统120。举例来说,主机系统120可将数据写入到存储器子系统110以及从存储器子系统110读取数据。
主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110使得主机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道接口、串行连接的SCSI(SAS)接口等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120还可利用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,且可改为依靠(例如由外部主机或由与存储器子系统分离的处理器或控制器提供的)外部控制。
一般来说,存储器子系统控制器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(基于计数器的合并组件122),其可用以相对于存储于由存储器组件112A到112N中的一或多个实施的数据存储媒体(例如,媒体池)上的KVS树,执行如本文中所描述的基于计数器的合并操作。存储于数据存储媒体上的KVS树可由主机系统120产生、由存储器子系统110产生(例如,由存储器子系统控制器115应主机系统120的请求产生),由或其某一组合产生。取决于实施例,基于计数器的合并组件122可为主机系统120上的应用程序或操作系统(例如,用于存储器子系统110的操作系统软件驱动器)的部分。在一些实施例中,存储器子系统110包含基于计数器的合并组件122的至少一部分。举例来说,存储器子系统控制器115可包含处理器117(处理装置),其被配置成执行存储于本地存储器119中的指令以用于执行本文中所描述的操作。如在本文中所提及,合并操作可基于kvset的计数器值合并KVS树给定节点内的kvset。
基于计数器的合并组件122可响应于检测到一条件(例如,触发条件)而执行合并操作,所述条件可包含与给定节点中的一或多个kvset满足指定的或计算的准则有关的条件。举例来说,取决于实施例,基于计数器的合并组件122可响应于正在对KVS树的给定节点执行更新,例如通过给定节点添加(例如,获取)新kvset(例如,由于将kvset从给定节点的父级节点移动(例如,溢出)到给定节点),相对于所述给定节点执行合并。此类kvse相关准则的其它实例非限制性地包括给定节点内的kvset数目、针对给定节点的资源(例如,媒体块)的释放、给定节点内的一或多个kvset的总大小,或可用于垃圾收集的一或多个kvset中的数据量。基于计数器的合并组件122可操作为连续检测kvset子序列以相对于整个KVS树或针对KVS树的个别节点进行合并的后台进程。
取决于实施例,基于计数器的合并组件122可包括致使存储器子系统110(例如,存储器子系统控制器115)相对于基于计数器的合并组件122执行本文中所描述的操作的逻辑(例如,机器指令集,例如固件)或一或多个组件。基于计数器的合并组件122可包括能够执行本文中所描述的操作的有形单元。下文描述关于基于计数器的合并组件122的操作的另外细节。
图2是根据本公开的一些实施方案的用于KVS树200的实例基于计数器的合并(下文为基于计数器的合并组件200)的框图。如所说明,基于计数器的合并组件200包括键值集更新器210、基于计数器的键值集子序列检测器220和键值集合并器230。对于一些实施例,基于计数器的合并组件200可在组件或布置上与图2中所说明的有所不同(例如,更少或更多组件)。
如在本文中所提及,通过基于计数器的合并组件200进行操作的KVS树可存储于存储器子系统(例如,110)上以促进数据(例如,用户数据)作为键值对的存储。KVS树可为形成键值存储(KVS)数据库的多个KVS树的部分,所述KVS树可包括多层级树,其具有包括不均匀kvset的基底层级和包括两个或更多个KVS子树的根节点(且因此起点)的第二层级,所述两个或更多个KVS子树各自分别包括均匀kvset。KVS树可由主机系统(例如,110)、存储器子系统(例如,110)、或其某一组合产生。KVS树可在存储器组件集上产生,使得KVS树包括节点集,其中所述节点集中的每一节点包括kvset序列,且其中kvset序列中的kvset包括用于存储一或多个键的键块集和用于存储一或多个值的值块集。kvset序列可按时间排序,使得在序列中较早添加的kvset相对于最近添加的kvset表示较旧数据(例如,键值对)。
键值集更新器210使个别计数值(例如,合并计数值或合并计数器值)与添加到KVS树的给定节点的kvset序列的每一kvset相关联(例如,指配给所述每一kvset)。当最初相关联(例如,最初指配)时,键值集更新器210可将每一个别计数值设置为默认初始值,例如0。另外,取决于实施例,键值集更新器210可负责用kvset更新给定节点,或替代地,键值集更新器210可仅检测kvset何时添加到给定节点。举例来说,对于一些实施例,键值集更新器210接收kvset,且作为响应,使用kvset通过将kvset附加到给定节点的kvset序列来更新给定节点,并且使添加的kvset与初始计数值(例如,设置为0或某一其它默认初始值)相关联(例如,指配给所述初始计数值)。键值集更新器210可通过将kvset集前置到序列(例如,其中节点中的最新kvset前置到键值集序列)或将kvset后置到序列(例如,其中节点中的最新kvset后置到键值集序列),将kvset附加到序列。替代地,对于一些实施例,键值集更新器210通过正在对KVS树执行的另一操作来检测kvset何时添加到给定节点,并且作为响应,键值集更新器210使添加的kvset与初始计数值(例如,设置为0或某一其它默认初始值)相关联(例如,指配给所述初始计数值)。致使kvset添加到给定节点的其它操作可包括例如将kvset从另一节点移动到给定节点的移动操作(例如,溢出操作)。对于一些实施例,在将kvset添加到给定节点(或检测到kvset添加到给定节点)后,键值集更新器210即刻可致使(例如,触发)基于计数器的键值集子序列检测器220开始执行其相应操作,如下文所描述。
基于计数器的键值集子序列检测器220检测给定节点的子索引序列是否包括kvset子序列,其中子序列包括特定(例如,预定)数目的kvset(例如,4个kvset),其中每一kvset与类似计数值(例如,0、1、2等)相关联。响应于检测到键值集序列包括键值集子序列,基于计数器的键值集子序列检测器220可致使(例如,触发)键值集合并器230合并所检测到的kvset子序列并且替换为经合并kvset。
键值集合并器230合并基于计数器的键值集子序列检测器220检测到的特定kvset子序列以产生经合并kvset,并且使经合并kvset与基于类似计数值产生的新计数值相关联(例如,指配给所述新计数值),所述类似计数值供基于计数器的键值集子序列检测器220用以检测特定kvset子序列。举例来说,产生基于类似计数值的新计数值可包括将新计数值设置为等于类似计数值递增特定值(例如,1)。键值集合并器230接着可将给定节点的kvset序列中的特定kvset子序列替换为经合并kvset,进而产生给定节点的经更新kvset序列。随后,基于计数器的键值集子序列检测器220可检测给定节点的经更新序列是否包括另一kvset子序列,其中子序列包括特定(例如,预定)数目的kvset(例如,4个kvset),其中每一kvset与类似计数值(例如,0、1、2等)相关联。如果检测到另一kvset子序列,那么键值集合并器230可对其它kvset子序列再次执行其操作;否则,键值集更新器210可等待下一kvset添加到给定节点。
对于一些实施例,键值集合并器230合并特定kvset子序列以使得经合并kvset包括引用kvset子序列的现有值块集的新键块集,并且基于键值集子序列的现有键块集产生新键块集(例如,从现有键块复制到新键块的键值和值块)。对于这类实施例,kvset子序列的现有值块可从其相应kvset移动到经合并kvset。键值集合并器230可写入用于经合并kvset的一或多个新键块(基于kvset的现有键块),同时避免写入用于所得经合并kvset的新值块(例如,kvset的现有值块按原样移动到经合并kvset),进而减少在合并操作期间相对于KVS树执行的写入操作的量。
对于各种实施例,键值集合并器230合并特定kvset子序列以使得经合并kvset包括新值块集和引用新值块集的新键块集,其中新值块集是基于键值集子序列的现有值块集产生的,且其中新键块集是基于键值集序列的现有键块集产生的。对于这类实施例,键值集合并器230可写入用于经合并kvset的一或多个新键块(基于kvset的现有键块),并且可写入用于经合并kvset的一或多个新值块(基于kvset的现有值块),但随后可删除现有键块和现有值块,进而回收被那些现有键块和现有值块占用的资源(例如,数据存储媒体上的媒体块)。
图3到5是根据本公开的一些实施方案的用于基于计数器的合并操作的实例方法的流程图。图3到5的方法300、400、500中的任一个可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,图3到5的一或多种方法300、400、500由图1的主机系统120执行。在这些实施例中,方法300、400、500可至少部分地由基于计数器的合并组件122执行。替代地,图3到5的一或多种方法由图1的存储器子系统110(例如,存储器子系统控制器115的处理器)执行。虽然过程以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。图3-5的方法300、400、500的操作可相对于KVS树的两个或更多个节点并行执行。
现参考图3的方法300,在操作305处,主机系统(例如,120)的处理装置在存储器子系统(例如,110)上产生包括节点集的键值存储树数据结构(KVS树),其中每一节点包括键值集(kvset)序列,其中kvset序列中的每一kvset与个别计数值相关联,且其中kvset序列中的至少一个kvset包括用于存储一或多个键的键块集和用于存储一或多个值的值块集。替代地,可已经产生(例如,通过另一过程)KVS树,且对于一些实施例,在操作305处存取KVS树,其中存取KVS树可辅助方法300的后续操作(例如,操作310)。
在操作310处,主机系统的处理装置检测kvset序列是否包括kvset子序列,所述kvset子序列包括预定数目的kvset(例如,4个kvset),其中(子序列中的)每一kvset与类似计数值(例如,0、1、2等)相关联。在操作315处,如果主机系统的处理装置检测到(在操作310处)kvset子序列包括预定数目的kvset,其中(子序列中的)每一kvset与类似计数值相关联,那么方法300转到操作320;否则,方法300返回到操作310。
在操作320处,主机系统的处理装置合并kvset子序列以产生经合并kvset。根据一些实施例,由合并kvset子序列产生的经合并kvset与关联于子序列中的任何kvset的最大数目(例如,最大kvset数目)相关联(例如,继承所述最大数目)。在操作325处,主机系统的处理装置使经合并kvset与基于类似计数值产生的新计数值相关联(例如,指配给经合并kvset)。举例来说,如在本文中所提及,产生基于类似计数值的新计数值可包括将新计数值设置为等于类似计数值递增特定值(例如,1)。随后,在操作330处,主机系统的处理装置将kvset序列内的kvset子序列替换为经合并kvset以产生经更新kvset序列。
现参考图4的方法400,在操作405处,主机系统(例如,120)的处理装置在存储器子系统(例如,110)上产生包括节点集的键值存储树数据结构(KVS树),其中每一节点包括键值集(kvset)序列,其中kvset序列中的每一kvset与个别计数值相关联,且其中kvset序列中的至少一个kvset包括用于存储一或多个键的键块集和用于存储一或多个值的值块集。替代地,可已经产生(例如,通过另一过程)KVS树,且对于一些实施例,在操作405处存取KVS树,其中存取KVS树可辅助方法400的后续操作(例如,操作410)。
在操作410处,主机系统的处理装置通过将新kvset附加到kvset序列来更新节点。如在本文中所提及,取决于实施例,新kvset可前置到节点的kvset序列(例如,其中节点中的最新kvset前置到kvset序列)或新kvset可后置到序列(例如,其中节点中的最新kvset后置到kvset序列)。在操作415处,主机系统的处理装置使新kvset与初始计数值相关联(例如,指配给初始计数值),所述初始计数值可设置为默认初始值(例如,0)。
替代地,在操作410处,主机系统的处理装置可检测对节点的更新是否引起新kvset附加到kvset序列,且作为响应,方法400将转到执行操作415到435中的一或多个。
对于一些实施例,方法400的操作420到440分别类似于上文关于图3所描述的方法300的操作310到330。
现参考图5的方法500,在操作505处,主机系统(例如,120)的处理装置在存储器子系统(例如,110)上产生包括子索引集的索引数据结构,其中子索引序列中的每一子索引与个别计数值相关联。替代地,可已经产生(例如,通过另一过程)数据结构,且对于一些实施例,在操作505处存取索引数据结构,其中存取索引数据结构可辅助方法500的后续操作(例如,操作510)。实例索引数据结构可非限制性地包含本文中所描述的键值存储树数据结构,且子索引的实例可非限制性地包含如本文中所描述的键值集。因此,取决于实施例,索引数据结构可包括除KVS树以外的某物,且子索引可包括除键值集以外的某物。
在操作510处,主机系统的处理装置通过将新子索引附加到kvset序列来更新节点。取决于实施例,新子索引可前置到节点的子索引序列(例如,其中最新子索引前置到子索引序列)或新子索引可后置到序列(例如,其中最新子索引后置到子索引序列)。在操作515处,主机系统的处理装置使新子索引与初始计数值相关联(例如,指配给初始计数值),所述初始计数值可设置为默认初始值(例如,0)。
替代地,在操作510处,主机系统的处理装置可检测是否通过新子索引附加到子索引序列更新索引数据结构,且作为响应,方法500将转到执行操作515到535中的一或多个。
在操作520处,主机系统的处理装置检测子索引序列是否包括子索引子序列,所述子索引子序列包括预定数目的子索引(例如,4个子索引),其中(子序列中的)每一子索引与类似计数值(例如,0、1、2等)相关联。在操作525处,如果主机系统的处理装置检测到(在操作520)处子索引子序列包括预定数目的子索引,其中(子序列中的)每一子索引与类似计数值相关联,那么方法500转到操作530;否则,方法500返回到操作520。
在操作530处,主机系统的处理装置合并子索引子序列以产生经合并子索引。在操作535处,主机系统的处理装置使经合并子索引与基于类似计数值产生的新计数值相关联(例如,指配给所述新计数值)。举例来说,如在本文中所提及,产生基于类似计数值的新计数值可包括将新计数值设置为等于类似计数值递增特定值(例如,1)。随后,在操作540处,主机系统的处理装置将kvset序列内的子索引子序列替换为经合并子索引以产生经更新子索引序列。
图6是说明根据本公开的一些实施方案的可通过基于计数器的合并操作进行操作的实例KVS树600的框图。如在本文中所提及,KVS树600包括被组织为树的键值数据结构。作为键值数据结构,值与引用所述值的对应键一起存储于KVS树600中。具体地,键条目可用于含有键和额外信息两者,例如对值的引用。键本身可具有KVS树600内的总排序,且因而,键可相对于彼此分类。键也可划分成子键,其中子键是键的不重叠部分。对于一些实施例,键的总排序是基于将多个键之间的相似子键进行比较(例如,将键的第一子键与另一键的第一子键进行比较)。另外,对于一些实施例,键首码包括键的开头部分。当使用时,键首码可由一或多个子键组成。
KVS树600包括一或多个节点,例如节点610,所述节点中的每一个包含一或多个键值集(kvset)。对于一些实施例一或多个节点(例如节点610)各自包括按时间排序的kvset序列。如所说明,kvset 615包括指示其在序列为最新的‘N’标志,而kvset 620包括指示其在序列中为最旧的‘O’标志。Kvset 625包括指示其在序列中的中间的‘I’标志。这些标志在全篇用于标记kvset;然而,另一标志(例如‘X’)标示特定kvset而非kvset在序列中的位置(例如,新、中间、旧等),除非所述标志为波浪符‘~’(在此情况下,所述标志仅表示匿名kvset)。如下文更详细地解释,较旧kvset(具有较旧键块)在KVS树600中的下部。因此,将kvset沿树层级向下推动(例如,溢出)(例如从L1到L2)引起来自父级节点的至少一个新kvset添加到父级节点的接收方子级节点中的最新位置。
KVS树600包括用于给定节点(例如,节点610)的kvset中的键值对(由键块和值块存储)到给定节点的任何一个子级节点(例如,节点610的子级节点中的任一个,其由L1处的所有节点表示)决定性映射。KVS树600的决定性映射可意味着给定键,外部实体可在不知道KVS树600的内容的情况下跟踪键的穿过KVS树600的节点到(键值对的)键块和值块的路径。举例来说,这不同于B树,举例来说,在所述B树中,树的内容将确定给定键的值将落在何处以便维持树的搜索优化结构。相比之下,KVS树600的决定性映射可提供一规则以使得例如给定键,可计算L3处的键将映射到的子级节点,即使最大树层级(例如,树深度)此刻仅在L1处。对于一些实施例,决定性映射包括键的一部分的散列的一部分。子键可散列以到达映射集,且映射集的一部分可用于树的任何给定层级。取决于实施例,键的部分可包括整个键。
对于一些实施例,散列包括多个不重叠部分,其包含散列的部分。举例来说,多个不重叠部分中的每一个可对应于树的层级。可通过节点的层级从多个不重叠部分确定散列的部分。因此,节点的子级节点的最大数目可由散列的部分的大小定义,其中散列的部分的大小可为某一位数。举例来说,相对于产生八个位的键的散列,所述八个位可划分成三个集,其包括前两个位、位三到六以及位七和八。可基于位集为子级节点编索引,使得第一电平(例如,L1)处的子级节点具有两位名称(基于位一和二),第二层级(例如,L2)上的子级节点具有四位名称(基于位三到六),且第三层级(例如,L3)上的子级节点具有两位名称(基于位七和八)。
对于一些实施例,节点610表示KVS树600的根节点。KVS树600可存储于由存储器子系统(例如,110)实施的数据存储媒体上,其中KVS树600可存储于数据存储媒体的媒体块中。数据存储媒体的媒体块可为可块寻址的。
图7A和7B示出说明根据本公开的一些实施方案的相对于实例KVS树的节点705执行的实例基于计数器的合并操作的流程图。出于说明性目的,将假设受关注的子序列包括键值集(kvset)子序列,其包括三个kvset,其中的每一kvset与类似计数值(MC)相关联。特定来说,图7A说明在阶段710处,初始kvset序列包括kvset序列,其包括KVSET2和KVSET1,其中每一kvset与MC 0相关联。在阶段715处,KVSET 3添加到节点705,且因而,在阶段720处,节点705包括经更新kvset序列,其包括KVSET 3、KVSET2和KVSET 1,其中每一kvset与MC 0相关联。在阶段725处,基于计数器的合并操作检测到受关注子序列,其包括各自与类似MC0相关联的三个kvset(KVSET 3、KVSET 2和KVSET 1),如在阶段730处所示。响应于检测到子序列,在阶段735处,基于计数器的合并操作合并所检测到的子序列,且如在阶段740处所示,节点705包括kvset序列,其包括与MC 1相关联的经合并(KVSET 3(以反映其合并器数目)。如在本文中所提及,对于一些实施例,由合并kvset子序列产生的经合并kvset与关联于子序列中的任何kvset的最大数目(例如,最大kvset数目)相关联(例如,继承所述最大数目)。
在阶段745处,KVSET 4添加到节点705,且因而,在阶段750处,节点705包括经更新kvset序列,其包括KVSET 4和经合并KVSET 3,其中4与MC 0相关联且经合并KVSET 3与MC 1相关联。在阶段755处,KVSET 5添加到节点705,且因而在阶段760处,节点705包括经更新kvset序列,其包括KVSET 5、KVSET 4和经合并KVSET3,其中KVSET 5和KVSET 4与MC 0相关联,且经合并KVSET 3与MC 1相关联。接着,在阶段765处,KVSET 6添加到节点705,且因而,在阶段770处,节点705包括经更新kvset序列,其包括KVSET 6、KVSET 5、KVSET 4和经合并KVSET 3,其中KVSET 6、KVSET 5和KVSET 4中的每一个与MC 0相关联,且经合并KVSET 3与MC 1相关联。
在阶段775处,基于计数器的合并操作检测到受关注子序列,其包括三个各自与类似MC 0相关联的kvset(KVSET 6、KVSET 5和KVSET4),如在图7B的阶段780处所示。现参考图7B,响应于检测到子序列,在阶段785处,基于计数器的合并操作合并所检测到的子序列,且如在阶段790处所示,节点705包括kvset序列,其包括经合并KVSET 6和经合并KVSET 3,其中的每一个与MC 1相关联(以反映其相应的合并器数目)。
图8A到8B提供说明在其中执行用于基于计数器的合并的方法的实例实施例的上下文中的计算环境100的组件之间的交互的交互图式。所述方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,所述方法由主机系统120执行。虽然操作以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。
在图8A到8B中说明的实例的上下文中,主机系统可包括主机系统120,且存储器子系统可包括存储器子系统110,其中存储器组件112A到112N中的一或多个可实施用于存储由主机系统120操作的KVS树的数据存储媒体。
如图8A中所示,在操作802处,主机系统120产生键值存储树数据结构(KVS树),主机系统120将所述KVS树写入到存储器子系统110以进行存储。作为响应,在操作810处,存储器子系统110将KVS树存储于数据存储媒体上。
在操作804处,主机系统120检测KVS树的给定节点的子索引序列是否包括键值集(kvset)子序列,其中所述子序列满足合并计数准则,例如子序列包括特定(例如,预定)数目的kvset(例如,4个kvset),其中每一kvset与类似计数值(例如,0、1、2等)相关联。在主机系统120检测到子序列后,在操作806处,主机系统120即刻合并(例如,k压缩或kv压缩)所检测到的kvset子序列以产生经合并KVSET。为合并给定节点的kvset序列,主机系统120读取存储于存储器子系统110的数据存储媒体上的KVS树(例如,读取子序列的键值集),且存储器子系统110在操作812处提供对KVS树的存取。在操作808处,主机系统120使经合并kvset与新计数器值相关联,所述新计数器值可初始化为值0(或某一其它默认初始值)。
现参考图8B,在操作808之后,在操作820处,主机系统120将kvset序列中的kvset子序列替换为经合并kvset,所述经合并kvset与新计数器值相关联。主机系统120将这些改变写入到存储于存储器子系统110的数据存储媒体上的KVS树,所述数据存储媒体在操作830处将这些改变呈递给存储的KVS树。
图9说明呈计算机系统900形式的机器的实例机器,在所述计算机系统内可执行指令集以引起机器执行本文中所论述的方法中的任何一或多种。在一些实施例中,计算机系统900可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,以执行操作系统从而执行与图1的基于计数器的合并组件122对应的操作)。在替代实施例中,机器可连接(例如,联网)到局域网(LAN)、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂巢式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的一组指令的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
实例计算机系统900包含处理装置902、主存储器904(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器906(例如,闪存存储器、静态随机存取存储器(SRAM)等),以及数据存储装置918,其经由总线930彼此通信。
处理装置902表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置902可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置902也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置902被配置成执行指令926以用于执行本文中所论述的操作和步骤。计算机系统900可进一步包含网络接口装置908以经由网络920通信。
数据存储装置918可包含机器可读存储媒体924(也称为计算机可读媒体),其上存储有一或多个指令集926或体现本文中所描述的方法或功能中的任一或多种的软件。指令926还可在由计算机系统900执行期间完全或至少部分地驻存在主存储器904内和/或处理装置902内,主存储器904和处理装置902也构成机器可读存储媒体。机器可读存储媒体924、数据存储装置918和/或主存储器904可对应于图1的存储器子系统110。
在一个实施例中,指令926包含实施与如本文中所描述基于计数器(例如,图1的基于计数器的合并组件122)的合并操作对应的功能性。尽管在实例实施例中机器可读存储媒体924展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘);只读存储器(ROM);随机存取存储器(RAM);可擦除可编程只读存储器(EPROM)、EEPROM、磁卡或光卡;或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或所述通用系统可以证明为便于构造以用以执行所述方法更加专用的设备。将如上文描述中所阐述的那样呈现用于各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
实例
实例1是一种系统,其包括:存储器组件集,其存储键值存储树数据结构,所述键值存储树数据结构包括节点集,其中所述节点集中的节点包括键值集序列,且所述键值集序列中的每一键值集与个别计数值相关联;和处理装置,其以操作方式耦合到所述存储器组件集,并且被配置成执行包括以下操作的操作:在所述存储器组件集上存取所述键值存储树数据结构;检测所述键值集序列是否包括键值集子序列,所述键值集子序列包括预定数目的键值集,其中每一键值集与类似计数值相关联;和响应于检测到所述键值集序列包括所述键值集子序列:合并所述键值集子序列以产生经合并键值集;使所述经合并键值集与基于所述类似计数值产生的新计数值相关联;和将所述键值集序列内的所述键值集子序列替换为所述经合并键值集以产生经更新键值集序列。
在实例2中,根据实例1所述的标的物,其任选地包含其中产生基于所述类似计数值产生的所述新计数值包括将所述新计数值设置为等于所述类似计数值递增特定值。
在实例3中,根据实例1或实例2所述的标的物,其任选地包含其中所述特定值包括值一。
在实例4中,根据实例1到3中的任一个所述的标的物,其任选地包含其中所述经合并键值集包括引用所述键值集子序列的现有值块集的新键块集,且所述新键块集是基于所述键值集子序列的现有键块集产生的。
在实例5中,根据实例1到4中的任一个所述的标的物,其任选地包含其中所述新键块集是基于所述键值集子序列的所述现有键块集通过以下操作产生的:将所述现有键块集的值复制到所述新键块集,使得所述新键块集包括对所述现有值块集的一或多个引用。
在实例6中,根据实例1到5中的任一个所述的标的物,其任选地包含其中所述经合并键值集包括新值块集和引用所述新值块集的新键块集,所述新值块集是基于所述键值集子序列的现有值块集产生的,且所述新键块集是基于所述键值集序列的现有键块集产生的。
在实例7中,根据实例1到6中的任一个所述的标的物,其任选地包含其中所述新值块集是基于所述键值集子序列的所述值键块集通过将所述现有值块集的值复制到所述新值块集产生的,且所述新键块集是基于所述键值集子序列的所述现有键块集通过将所述现有键块集的值复制到所述新键块集产生的。
在实例8中,根据实例1到7中的任一个所述的标的物,其任选地包含其中所述将所述键值集序列中的所述键值集子序列替换为所述经合并键值集以产生所述经更新键值集序列包括:从所述节点删除所述键值集子序列中的每一特定键值集。
在实例9中,根据实例1到8中的任一个所述的标的物,其任选地包含其中所述将所述键值集序列中的所述键值集子序列替换为所述经合并键值集以产生所述经更新键值集序列包括:删除所述键值集子序列中的每一特定键值集的一或多个键块。
在实例10中,根据实例1到9中的任一个所述的标的物,其任选地包含其中所述将所述键值集序列中的所述键值集子序列替换为所述经合并键值集以产生所述经更新键值集序列包括:删除所述键值集子序列中的每一特定键值集的一或多个值块。
在实例11中,根据实例1到10中的任一个所述的标的物,其任选地包含其中所述操作另外包括:检测所述经更新键值集序列中的第二键值集子序列是否包括所述预定数目的键值集,其中每一键值集与第二类似计数值相关联;响应于检测到所述经更新键值集序列中的所述第二键值集子序列:合并所述第二键值集子序列以产生第二经合并键值集;使所述第二经合并键值集与基于所述第二类似计数值产生的第二新计数值相关联;和将所述经更新键值集序列内的所述第二键值集子序列替换为所述经合并键值集以产生第二经更新键值集序列。
在实例12中,根据实例1到11中的任一个所述的标的物,其任选地包含其中所述键值集子序列包括所述节点内的一或多个键值集。
实例13是一种方法,其包括:在存储器组件集上产生键值存储树数据结构,所述键值存储树数据结构包括节点集,其中所述节点集中的节点包括键值集序列,且所述键值集序列中的每一键值集与个别计数值相关联;通过处理装置检测所述键值集序列是否包括键值集子序列,所述键值集子序列包括预定数目的键值集,其中每一键值集与类似计数值相关联;和响应于检测到所述键值集序列包括所述键值集子序列:通过所述处理装置合并所述键值集子序列以产生经合并键值集;通过所述处理装置使所述经合并键值集与基于所述类似计数值产生的新计数值相关联;和通过所述处理装置将所述键值集序列内的所述键值集子序列替换为所述经合并键值集以产生经更新键值集序列。
在实例14中,根据实例13所述的标的物,其任选地包含其中产生基于所述类似计数值产生的所述新计数值包括将所述新计数值设置为等于所述类似计数值递增特定值。
在实例15中,根据实例13或实例14所述的标的物,其任选地包含其中所述特定值包括值一。
在实例16中,根据实例13到15中的任一个所述的标的物,其任选地包含其中所述键值集的所述子序列包括所述键值集序列中的最后一个键值集。
在实例17中,根据实例13到16中的任一个所述的标的物,其任选地包含其中所述方法另外包括:通过将新键值集附加到所述键值集的所述序列来更新所述节点;和使所述新键值集与初始计数值相关联。
在实例18中,根据实例13到17中的任一个所述的标的物,其任选地包含其中所述方法另外包括:检测对所述节点的更新是否引起新键值集附加到所述键值集序列;和响应于检测到对所述节点的所述更新,使所述新键值集与初始计数值相关联。
实例19是一种包括指令的非暂时性机器可读存储媒体,所述指令当由处理装置执行时致使所述处理装置:在存储器组件集上产生包括存储子索引序列的索引的索引数据结构,所述序列中的每一子索引存储键值对集;通过将新子索引附加到所述子索引序列来更新所述索引,所述新子索引包括新键值对集;使所述新子索引与初始计数值相关联;检测所述子索引序列是否包括子索引子序列,所述子索引子序列包括预定数目的子索引,其中每一子索引与类似计数值相关联;响应于检测到所述子索引序列包括所述子索引子序列:合并所述子索引子序列以产生经合并子索引;使所述经合并子索引与基于所述类似计数值产生的新计数值相关联;和将所述子索引序列内的所述子索引子序列替换为所述经合并子索引集以产生经更新子索引序列。
在实例20中,根据实例19所述的标的物,其任选地包含其中所述索引数据结构包括键值存储树数据结构,且所述序列中的每一子索引包括键值集,所述键值集包括用于存储所述键值对集的一或多个键的键块集和用于存储所述键值对集的一或多个值的值块集。
Claims (15)
1.一种系统,其包括:
存储器组件集,其存储键值存储树数据结构,所述键值存储树数据结构包括节点集,其中所述节点集中的节点包括键值集序列,且所述键值集序列中的每一键值集与个别计数值相关联;和
处理装置,其以操作方式耦合到所述存储器组件集,并且被配置成执行包括以下操作的操作:
在所述存储器组件集上存取所述键值存储树数据结构;
检测所述键值集序列是否包括键值集子序列,所述键值集子序列包括预定数目的键值集,其中每一键值集与类似计数值相关联;和
响应于检测到所述键值集序列包括所述键值集子序列:
合并所述键值集子序列以产生经合并键值集;
使所述经合并键值集与基于所述类似计数值产生的新计数值相关联;和
将所述键值集序列内的所述键值集子序列替换为所述经合并键值集以产生经更新键值集序列。
2.根据权利要求1所述的系统,其中产生基于所述类似计数值产生的所述新计数值包括将所述新计数值设置为等于所述类似计数值递增特定值。
3.根据权利要求1所述的系统,其中所述经合并键值集包括引用所述键值集子序列的现有值块集的新键块集,且所述新键块集是基于所述键值集子序列的现有键块集产生的。
4.根据权利要求3所述的系统,其中所述新键块集是基于所述键值集子序列的所述现有键块集通过以下操作产生的:将所述现有键块集的值复制到所述新键块集,使得所述新键块集包括对所述现有值块集的一或多个引用。
5.根据权利要求1所述的系统,其中所述经合并键值集包括新值块集和引用所述新值块集的新键块集,所述新值块集是基于所述键值集子序列的现有值块集产生的,且所述新键块集是基于所述键值集序列的现有键块集产生的。
6.根据权利要求5所述的系统,其中所述新值块集是基于所述键值集子序列的所述值键块集通过将所述现有值块集的值复制到所述新值块集产生的,且所述新键块集是基于所述键值集子序列的所述现有键块集通过将所述现有键块集的值复制到所述新键块集产生的。
7.根据权利要求1所述的系统,其中所述将所述键值集序列中的所述键值集子序列替换为所述经合并键值集以产生所述经更新键值集序列包括:
从所述节点删除所述键值集子序列中的每一特定键值集。
8.根据权利要求1所述的系统,其中所述将所述键值集序列中的所述键值集子序列替换为所述经合并键值集以产生所述经更新键值集序列包括:
删除所述键值集子序列中的每一特定键值集的一或多个键块。
9.根据权利要求1所述的系统,其中所述将所述键值集序列中的所述键值集子序列替换为所述经合并键值集以产生所述经更新键值集序列包括:
删除所述键值集子序列中的每一特定键值集的一或多个值块。
10.根据权利要求1所述的系统,其中所述操作另外包括:
检测所述经更新键值集序列中的第二键值集子序列是否包括所述预定数目的键值集,其中每一键值集与第二类似计数值相关联;
响应于检测到所述经更新键值集序列中的所述第二键值集子序列:
合并所述第二键值集子序列以产生第二经合并键值集;
使所述第二经合并键值集与基于所述第二类似计数值产生的第二新计数值相关联;和
将所述经更新键值集序列内的所述第二键值集子序列替换为所述经合并键值集以产生第二经更新键值集序列。
11.根据权利要求1所述的系统,其中所述键值集子序列包括所述节点内的一或多个键值集。
12.一种方法,其包括:
在存储器组件集上产生键值存储树数据结构,所述键值存储树数据结构包括节点集,其中所述节点集中的节点包括键值集序列,且所述键值集序列中的每一键值集与个别计数值相关联;
通过处理装置检测所述键值集序列是否包括键值集子序列,所述键值集子序列包括预定数目的键值集,其中每一键值集与类似计数值相关联;和
响应于检测到所述键值集序列包括所述键值集子序列:
通过所述处理装置合并所述键值集子序列以产生经合并键值集;
通过所述处理装置使所述经合并键值集与基于所述类似计数值产生的新计数值相关联;和
通过所述处理装置将所述键值集序列内的所述键值集子序列替换为所述经合并键值集以产生经更新键值集序列。
13.根据权利要求12所述的方法,其另外包括:
通过将新键值集附加到所述键值集的所述序列来更新所述节点;和
使所述新键值集与初始计数值相关联。
14.根据权利要求12所述的方法,其另外包括:
检测对所述节点的更新是否引起新键值集附加到所述键值集序列;和
响应于检测到对所述节点的所述更新,使所述新键值集与初始计数值相关联。
15.一种包括指令的非暂时性机器可读存储媒体,所述指令当由处理装置执行时致使所述处理装置:
在存储器组件集上产生包括存储子索引序列的索引的索引数据结构,所述序列中的每一子索引存储键值对集;
通过将新子索引附加到所述子索引序列来更新所述索引,所述新子索引包括新键值对集;
使所述新子索引与初始计数值相关联;
检测所述子索引序列是否包括子索引子序列,所述子索引子序列包括预定数目的子索引,其中每一子索引与类似计数值相关联;
响应于检测到所述子索引序列包括所述子索引子序列:
合并所述子索引子序列以产生经合并子索引;
使所述经合并子索引与基于所述类似计数值产生的新计数值相关联;和
将所述子索引序列内的所述子索引子序列替换为所述经合并子索引集以产生经更新子索引序列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/156,400 | 2018-10-10 | ||
US16/156,400 US10915546B2 (en) | 2018-10-10 | 2018-10-10 | Counter-based compaction of key-value store tree data block |
PCT/US2019/054254 WO2020076581A1 (en) | 2018-10-10 | 2019-10-02 | Counter-based compaction of key-value store tree data block |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113039547A true CN113039547A (zh) | 2021-06-25 |
CN113039547B CN113039547B (zh) | 2022-06-28 |
Family
ID=70160756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980074795.1A Active CN113039547B (zh) | 2018-10-10 | 2019-10-02 | 键值存储存储器系统、方法及相关存储媒体 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10915546B2 (zh) |
EP (1) | EP3864553A4 (zh) |
KR (1) | KR20210058988A (zh) |
CN (1) | CN113039547B (zh) |
WO (1) | WO2020076581A1 (zh) |
Cited By (3)
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 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
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 |
CN111625523B (zh) * | 2020-04-20 | 2023-08-08 | 沈阳派客动力科技有限公司 | 数据合成的方法、装置和设备 |
US11461299B2 (en) * | 2020-06-30 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Key-value index with node buffers |
US11514020B2 (en) * | 2020-11-13 | 2022-11-29 | International Business Machines Corporation | Tracking change data capture log history |
US11954345B2 (en) * | 2021-12-03 | 2024-04-09 | Samsung Electronics Co., Ltd. | Two-level indexing for key-value persistent storage device |
CN114281823B (zh) * | 2021-12-17 | 2023-08-29 | 北京百度网讯科技有限公司 | 表格处理方法、装置、设备、存储介质及产品 |
EP4375823A1 (en) | 2022-07-27 | 2024-05-29 | Beijing Superstring Academy of Memory Technology | Object computing and storage system, data processing method, and client and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070071243A1 (en) * | 2005-09-23 | 2007-03-29 | Microsoft Corporation | Key validation service |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
CN104156278A (zh) * | 2014-08-01 | 2014-11-19 | 江苏大学 | 一种文件版本控制系统及其方法 |
CN107092659A (zh) * | 2017-03-28 | 2017-08-25 | 成都优易数据有限公司 | 一种通用的树形结构存储解析方法 |
Family Cites Families (97)
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 |
KR100488414B1 (ko) | 2000-12-30 | 2005-05-11 | 한국전자통신연구원 | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법 |
US7451065B2 (en) | 2002-03-11 | 2008-11-11 | International Business Machines Corporation | Method for constructing segmentation-based predictive models |
US7324120B2 (en) | 2002-07-01 | 2008-01-29 | Xerox Corporation | Segmentation method and system for scanned documents |
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 |
US7120637B2 (en) | 2003-05-30 | 2006-10-10 | Microsoft Corporation | Positional access using a b-tree |
US7904487B2 (en) | 2003-10-09 | 2011-03-08 | Oracle International Corporation | Translating data access requests |
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 |
US7734593B2 (en) | 2005-11-28 | 2010-06-08 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
EP1855284A2 (en) | 2006-05-10 | 2007-11-14 | Nero AG | Apparatus for writing data and redundancy data on a storage medium |
US20080040384A1 (en) | 2006-06-30 | 2008-02-14 | Tele Atlas North America, Inc. | Nearest search on 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 |
JP4498409B2 (ja) | 2007-12-28 | 2010-07-07 | 株式会社エスグランツ | データベースのインデックスキー更新方法及びプログラム |
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 |
CN101515298B (zh) | 2009-03-30 | 2013-09-25 | 华为技术有限公司 | 基于树形数据结构节点的插入的方法和存储装置 |
GB0905457D0 (en) | 2009-03-30 | 2009-05-13 | Touchtype Ltd | System and method for inputting text into electronic devices |
US9189472B2 (en) | 2009-03-30 | 2015-11-17 | Touchtype Limited | System and method for inputting text into small screen devices |
US9298761B2 (en) | 2009-04-30 | 2016-03-29 | Hewlett Packard Enterprise Development Lp | Adaptive merging in database indexes |
US8996563B2 (en) * | 2010-04-06 | 2015-03-31 | Tokutek, Inc. | High-performance streaming dictionary |
JP5488178B2 (ja) | 2010-04-30 | 2014-05-14 | 富士通株式会社 | データ管理プログラム及び方法、並びにノード装置 |
US9355109B2 (en) | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US8433695B2 (en) | 2010-07-02 | 2013-04-30 | Futurewei Technologies, Inc. | System architecture for integrated hierarchical query processing for key/value stores |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
EP2659369B1 (en) * | 2010-12-27 | 2014-10-15 | Amplidata NV | A distributed object storage system comprising performance optimizations |
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 |
US9251197B2 (en) * | 2011-06-27 | 2016-02-02 | Jethrodata Ltd. | System, method and data structure for fast loading, storing and access to huge data sets in real time |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
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 |
US8745014B2 (en) | 2011-10-19 | 2014-06-03 | Pivotal Software, Inc. | Time series data mapping into a key-value database |
US9069827B1 (en) | 2012-01-17 | 2015-06-30 | Amazon Technologies, Inc. | System and method for adjusting membership of a data replication group |
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 |
US20130279503A1 (en) | 2012-02-17 | 2013-10-24 | Rockstar Consortium Us Lp | Next Hop Computation Functions for Equal Cost Multi-Path Packet Switching Networks |
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 |
JP6103037B2 (ja) | 2013-03-15 | 2017-03-29 | 日本電気株式会社 | 計算機システム |
US8927846B2 (en) * | 2013-03-15 | 2015-01-06 | Exomens | System and method for analysis and creation of music |
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 |
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 |
US9602407B2 (en) | 2013-12-17 | 2017-03-21 | Huawei Technologies Co., Ltd. | Trie stage balancing for network address lookup |
JP5950285B2 (ja) | 2013-12-19 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム |
US10366070B2 (en) | 2015-02-20 | 2019-07-30 | Scality S.A. | Locking and I/O improvements of systems built with distributed consistent database implementations within an object store |
US9524302B2 (en) | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US8935257B1 (en) * | 2014-03-17 | 2015-01-13 | Linkedin Corporation | Organizing, joining, and performing statistical calculations on massive sets of data |
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数据合并排序方法和装置 |
US10990288B2 (en) | 2014-08-01 | 2021-04-27 | Software Ag Usa, Inc. | Systems and/or methods for leveraging in-memory storage in connection with the shuffle phase of MapReduce |
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 |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US10740290B2 (en) | 2015-04-14 | 2020-08-11 | Jetflow Technologies | Systems and methods for key-value stores |
US10303673B2 (en) | 2015-05-11 | 2019-05-28 | Apple Inc. | Hierarchical data storage |
JP6408433B2 (ja) | 2015-07-08 | 2018-10-17 | 日本電信電話株式会社 | 負荷分散プログラムおよびサーバ |
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 |
CN111427517A (zh) | 2015-12-28 | 2020-07-17 | 华为技术有限公司 | 一种数据处理方法以及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 |
US11182365B2 (en) | 2016-03-21 | 2021-11-23 | Mellanox Technologies Tlv Ltd. | Systems and methods for distributed storage of data across multiple hash tables |
US20180089074A1 (en) | 2016-09-28 | 2018-03-29 | Intel Corporation | Techniques to Manage Key-Value Storage at a Memory or Storage Device |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
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 |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
CN106970936B (zh) | 2017-02-09 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置、数据查询方法及装置 |
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 |
US10387426B2 (en) | 2017-10-27 | 2019-08-20 | Streamsimple, Inc. | Streaming microservices for stream processing applications |
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 |
US11971861B2 (en) | 2019-03-15 | 2024-04-30 | Microsoft Technology Licensing, Llc | Providing scalable and concurrent file systems |
-
2018
- 2018-10-10 US US16/156,400 patent/US10915546B2/en active Active
-
2019
- 2019-10-02 CN CN201980074795.1A patent/CN113039547B/zh active Active
- 2019-10-02 KR KR1020217013687A patent/KR20210058988A/ko active IP Right Grant
- 2019-10-02 WO PCT/US2019/054254 patent/WO2020076581A1/en unknown
- 2019-10-02 EP EP19870984.2A patent/EP3864553A4/en not_active Withdrawn
-
2021
- 2021-01-11 US US17/146,222 patent/US11599552B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070071243A1 (en) * | 2005-09-23 | 2007-03-29 | Microsoft Corporation | Key validation service |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
CN104156278A (zh) * | 2014-08-01 | 2014-11-19 | 江苏大学 | 一种文件版本控制系统及其方法 |
CN107092659A (zh) * | 2017-03-28 | 2017-08-25 | 成都优易数据有限公司 | 一种通用的树形结构存储解析方法 |
Cited By (3)
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 |
Also Published As
Publication number | Publication date |
---|---|
WO2020076581A1 (en) | 2020-04-16 |
US20210133208A1 (en) | 2021-05-06 |
EP3864553A1 (en) | 2021-08-18 |
US11599552B2 (en) | 2023-03-07 |
CN113039547B (zh) | 2022-06-28 |
EP3864553A4 (en) | 2022-07-06 |
US20200117744A1 (en) | 2020-04-16 |
KR20210058988A (ko) | 2021-05-24 |
US10915546B2 (en) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113039547B (zh) | 键值存储存储器系统、方法及相关存储媒体 | |
CN113168408B (zh) | 利用压缩的键值存储树数据块溢出 | |
CN113196260B (zh) | 能够选择性使用键部分的键值存储树 | |
CN113196259B (zh) | 使用以选择性数据存储格式进行日志记录的键值存储 | |
US10725930B2 (en) | Logical to physical memory address mapping tree | |
US11657092B2 (en) | Data tree with order-based node traversal | |
US20140006898A1 (en) | Flash memory with random partition | |
KR20170009706A (ko) | 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법 | |
JP2015512604A (ja) | 暗号ハッシュ・データベース | |
KR20210024189A (ko) | 마모 레벨링을 위한 바이어싱된 샘플링 방법 | |
CN115309584A (zh) | 键值存储故障后的分区存储器装置恢复 | |
US20230333988A1 (en) | Namespace level valid translation unit count | |
US20220050807A1 (en) | Prefix probe for cursor operations associated with a key-value database system | |
KR102665979B1 (ko) | 압축한 키-값 저장소 트리 데이터 블록 유출 | |
US11762913B2 (en) | Cursor seek operations using deleted record spans | |
US10782906B1 (en) | Memory subsystem interface to relate data and to retrieve related data | |
US20240176511A1 (en) | Associating key-value pair sets with leaf nodes | |
US20240176512A1 (en) | Replacing key-value pair sets with new key-value pair sets | |
CN113010447A (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 |