CN113196259B - 使用以选择性数据存储格式进行日志记录的键值存储 - Google Patents
使用以选择性数据存储格式进行日志记录的键值存储 Download PDFInfo
- Publication number
- CN113196259B CN113196259B CN201980082310.3A CN201980082310A CN113196259B CN 113196259 B CN113196259 B CN 113196259B CN 201980082310 A CN201980082310 A CN 201980082310A CN 113196259 B CN113196259 B CN 113196259B
- Authority
- CN
- China
- Prior art keywords
- data storage
- key
- value
- log data
- log
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的方面提供使用日志记录的键值存储KVS的操作,其中数据(例如,键值对的键数据或值数据)存储在基于一或多个准则选择的不同类型的数据存储对象(例如,数据存储格式)中。
Description
优先权申请
本申请要求于2018年12月14日申请的序列号为16/220,646的美国申请案的优先权的权益,所述申请案的全部内容以引用的方式并入本文中。
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体地说涉及用于使用日志记录的键值存储(KVS)的操作。
背景技术
存储器子系统可为存储系统(例如固态硬盘(SSD)),且可包含存储数据的一或多个存储器组件。举例来说,所述存储器组件可为非易失性存储器组件及易失性存储器组件。一般来说,主机系统可利用存储器子系统以将数据存储于存储器组件处及从存储器组件检索数据。
附图说明
将从下面给出的详细描述及从本公开的各种实施例的附图中更充分地理解本公开。
图1是说明根据本公开的一些实施例的包含存储器子系统的实例计算环境的框图。
图2是根据本公开的一些实施方案的实例键值存储(KVS)日志记录组件的框图。
图3及4是根据本公开的一些实施方案的用于使用日志记录的KVS的实例方法的流程图。
图5及6是说明根据本公开的一些实施方案的使用日志记录的实例KVS的操作的框图。
图7及8是说明根据本公开的一些实施方案的使用日志记录的实例KVS的框图。
图9A及9B提供说明在其中执行用于使用日志记录的KVS的方法的实例实施例的上下文中的计算环境的组件之间的交互的交互图。
图10是说明根据本公开的一些实施例的呈计算机系统形式的机器的图形表示的框图,在所述机器内可执行一组指令用于致使所述机器执行本文论述的方法中的任一或多者。
具体实施方式
本公开的方面涉及使用日志记录的键值存储(KVS),其中数据(例如,键值对的键数据或值数据)存储在基于一或多个准则选择的不同类型的数据存储对象(例如,数据存储格式)中。存储器子系统在下文中也被称为“存储器装置”。存储器子系统的实例是存储系统,例如SSD、非易失性双接口存储器模块(NVDIMM)或3D XPoint存储器。在一些实施例中,存储器子系统是混合存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供待存储在存储器子系统处的数据(例如,经由写入请求),并且可请求待从存储器子系统检索的数据(例如,经由读取请求)。
存储器子系统可包含多个存储器组件,其可存储来自主机系统的数据。存储器子系统可进一步包含存储器子系统控制器,其可响应于从主机系统接收的请求而与存储器组件中的每一者通信以在存储器组件处执行例如读取数据、写入数据或擦除数据的操作。存储器子系统的存储器组件中的任一或多者可包含媒体控制器以管理存储器组件的存储器单元、与存储器子系统控制器通信及执行从存储器子系统控制器接收的存储器请求(例如,读取或写入)。
在一些应用中,例如数据库存储及卷数据存储(例如,云存储),使用键值数据结构来将数据存储在数据存储媒体上,例如,由一或多个存储器装置实施并且呈现为包括一或多个媒体数据块(媒体块)的单个逻辑数据存储卷的数据存储媒体的池(媒体池)。键值存储(KVS)可包括一或多个键值数据结构以存储及搜索键值对。键值数据结构可允许有效地搜索键值对的所存储数据,允许有效地存储稀疏数据,或允许有效地存储可搜索数据。一般来说,键值数据结构接受用于存储的键值对,并且经配置以响应于基于键的值的查询。键值数据结构可包括例如树数据结构的结构,其实例包含记录结构化合并树(LSM树)及键值存储(KVS)树(本文也称为键值存储树数据结构或KVS树数据结构)。
本公开的方面提供使用日志记录的键值存储(KVS)的各种实施例,其中数据(例如,键值对的键数据或值数据)存储在基于一或多个准则选择的不同类型的数据存储对象(例如,数据存储格式)中。传统上,存储堆叠(例如企业级存储堆叠)可兑现保证的数据一致性及耐久性,这可能是使用存储堆叠的软件应用程序所需要的。为此,常规存储堆叠周期性地将其数据内容从易失性存储器(例如,随机存取存储器(RAM))同步到非易失性数据存储媒体(例如,媒体池),这可导致基于范围从几个到大量字节的变化数据有效载荷大小的频繁及次优的输入/输出操作(IO)。处置数据一致性及耐久性的一种常规技术是实施“日志记录”的机制,其可尝试在保证一致性及耐久性的同时减少次优数据存储媒体IO的不利影响。不幸的是,“日志记录”可致使将相同数据内容不止一次地写入到持久数据存储媒体上,这又可导致增加的写入操作(例如,写入放大),并且可进一步导致输入/输出数据带宽的低效利用。举例来说,使用日志记录的传统数据存储解决方案可能涉及将相同数据内容不止一次地写入到持久数据存储媒体,首先写入到日志数据存储空间,且随后写入到长期数据存储空间(例如,永久数据位置)。对于一些实施例,KVS的日志数据存储层使用持久注册表用于日志记录键值对的数据,其中持久注册表可驻留在数据存储媒体的池中的最佳可用数据存储媒体中。
各种实施例提供一种使用日志记录的键值存储(KVS),其中数据(例如,键值对的键数据或值数据)以选择性不同数据存储格式存储。通过以选择性不同数据存储格式(例如,自适应数据及元数据结构)进行日志记录,一些实施例可避免将数据不止一次地写入(例如,复制)到持久数据存储媒体的需要,而不损害耐久性及一致性要求(例如,其满足软件应用程序的需要)。特定来说,当满足一或多个准则时,一些实施例选择性地使用统一数据结构(例如,自适应或统一数据格式,例如媒体块)或元数据结构(例如,日志数据存储对象,例如元数据记录)用于将键数据或值数据存储在日志数据存储层(以下称为日志层)中。当键数据或值数据从日志层移动到长期数据存储层(以下称为长期层)时,可能需要很少或不需要数据变换。通过使用一些实施例,可避免不止一次地写入键数据或值数据(例如,首先写入到日志,且随后写入到长期永久数据存储位置),并且这又可减少写入操作(例如,减少写入放大)并改进KVS的数据性能。用于使用统一数据结构代替元数据结构来存储键值对的键数据或值数据的实例准则可包括(但不限于):选择键或具有某一数据大小的值的准则;以及选择(例如,基于过去观察到的输入/输出数据模式)导致写入操作增加的一组键或值的准则。例如,基于所观察到的指示对键的重复更新的数据模式,实施例可使用统一数据结构将与待选择用于存储的键相关联的键数据或值数据存储在日志层中。
根据一些实施例,使用日志记录的键值存储(KVS)包括存储器内数据存储层(下文称为存储器内层)、中间日志数据存储层(下文称为日志层)及长期存储数据存储层(下文称为长期层)。每一层可为由软件、硬件或两者的组合实施的逻辑层。存储器内层可包括用于在易失性存储器上一或多个键值对的临时数据存储的一或多个键值数据结构,日志层可包括用于日志记录(在非易失性存储器的持久数据存储空间上)来自存储器内层的一或多个键值对的一或多个键值数据结构,且长期层可包括用于来自日志层的一或多个键值对的长期数据存储(在非易失性存储器的持久数据存储空间上)的一或多个键值数据结构。
对于一些实施例,存储器内层作为存储键值组的序列(如本文描述)的存储器内节点来操作,长期层包括操作一或多个持久节点的键值存储(KVS)树数据结构(如本文描述),且日志层作为中间节点操作,所述中间节点将(日志层的)存储器内节点逻辑地耦合到(长期层的)KVS树数据结构的根节点。通过此布置(例如,存储堆叠),产生键值对(例如,新的键值对、修改的键值对或删除的键值对)的KVS操作可首先通过存储器内层的顶部节点进入KVS,从存储器内层的顶部节点流到日志层的中间节点(例如,以促进存储在存储器内层中的键对数据的一致性及耐久性),从日志层的中间层流到长期层的(KVS树数据结构的)根节点(例如,以促进存储在日志层中的键对数据的最终长期数据存储)。最终,键值对数据可从KVS树数据结构的根节点流到KVS树数据结构的一或多个子代节点。对于一些实施例,长期层包括多个异构KVS树数据结构(例如,不相交的KVS树数据结构),其中多个KVS树数据结构形成键值数据库(下文称为KVDB)。KVDB可包括连接到多个子代节点的根节点,所述多个子代节点每一者作为用于不同异构KVS树数据结构的根节点操作。根节点可从日志层接收异构键值对,并向下流到它们的相应KVS树数据结构。
取决于实施例,存储器内层可包括键值组(本文也称为kvset)序列,日志层可包括kvset序列,且长期层可包括kvset序列。每一kvset序列可在时间上排序,其中序列中的较后键值组可表示较旧键值组。每一kvset可包括一或多个键值对,其允许将值与引用所述值的对应键一起存储在kvset中。给定kvset内的键值对可依键分类。给定kvset内的每一个键可能对于kvset中的其它键是唯一的。每一kvset一旦写入就可能是不可变的,但kvset可被删除,或kvset的数据内容的一些或全部可被添加到新kvset。
对于一些实施例,存储器内层的每一kvset包括用于存储一或多个键值对的树数据结构,例如二叉树数据结构。实例二叉树数据结构可包含盆景树数据结构(在本文中也称为盆景数据树或盆景树),其可以是平衡的并且可支持RCU语义。利用例如盆景数据树的二叉树数据结构,存储器内层的kvset可用作用于键值对的放入或删除操作(例如,基于来自软件应用程序的请求)的容器,借此促进所述键值对的存储、所述键值对的可搜索性(例如,在记录时间中搜索),以及对所存储键值对的操作的高并发性(例如,利用RCU语义)。通过接收及存储关于键值对的放入或删除操作,盆景数据树可反映键值对随时间的突变。
对于一些实施例,日志层的每一kvset包括日志数据存储对象(例如,元数据记录)或非日志数据对象(例如,媒体块,例如键块或值块),用于存储键-值对的键数据及值数据。另外,对于一些实施例,单个日志数据存储对象存储比单个非日志数据对象更少量的数据。因此,非日志数据存储对象可能比日志数据存储对象更适合存储更大块的数据,且非日志数据存储对象可能较不适合用于存储少量数据的事务。
对于一些实施例,长期层包括KVS树,其包括一组节点,每一节点包括kvset的序列。如本文使用,KVS树包括树数据结构,其包括基于键的预定推导(例如,而不是树的内容)在父代节点与子代节点之间具有连接的节点。每一节点可包括键值组(本文也称为kvset)的排序(例如,在时间上排序)序列。如本文所述,在时间上排序的情况下,序列中的较后键值组可表示较旧键值组。kvset可包括一或多个键值对,其允许值与引用所述值的对应键一起存储在KVS树中。因此,在KVS树内,kvsets用作KVS树的节点中组织的个别键及值存储。给定kvset内的键值对可依键分类。给定kvset内的每一个键可能对于kvset中的其它键是唯一的;然而,KVS树内的键可能不是唯一的(例如,KVS树的单个节点内或不同节点中的两个不同kvset可包含相同键)。每一kvset一旦写入到节点就可能是不可变的(例如,一旦放置/存储在节点中,kvset不改变)。尽管节点内的kvset可能是不可变的,但kvset可被删除,或kvset的数据内容的一些或全部可被添加到新kvset。
对于一些实施例,存储在(长期层的)KVS树中的每一kvset包括用于存储kvset的键值对的键条目的键树,其中给定键条目可包括键及对值的引用两者。各种数据结构可用于有效地存储及检索键树中的唯一键(例如,其甚至可能不是数据树),例如二叉搜索树、B树等。举例来说,键存储在键树的叶节点中,其中键树的任何子树中的最大键可能在最右子代的最右条目中,键树的第一节点的最右边链接到键树的子节点,且以键树的子节点为根的子树中的所有键可大于键树的第一节点中的所有键。
对于一些实施例,对于存储在KVS树中的kvset,键条目存储在一组键数据块(也称为键块或kblock)中,所述键数据块可包括主键块及零个或多个扩展键块。所述组键块的成员可对应于由存储器装置(例如SSD、硬盘驱动器、NVDIMM、3D XPoint存储器等)实施的数据存储媒体的媒体数据块(媒体块)。每一键块可包括将其识别为键块的标头,且kvset的主键块可包括用于kvset的一或多个扩展键块的媒体块识别列表。
主键块可包括kvset的键树的标头。标头可包括数个值以辅助或促进与键或kvset的交互。举例来说,主键块或存储在其中的标头可包括kvset的键树中最低键的副本,或kvset的键树中最高键的副本。主键块可包括用于kvset的键树的媒体块识别列表。另外,主键块可包括用于kvset的布隆(bloom)过滤器的布隆过滤器标头,且主键块可包括用于kvset的布隆过滤器的媒体块识别列表。
对于一些实施例,对于存储在KVS树中的kvset,值存储在一组值数据块(本文也称为值块或vblock)中。KVS树中的每一特定值块可具有与其相关联的数据产生编号,其指示最初针对KVS树产生所述特定值块的序列顺序。以此方式,特定值块的数据产生编号可用作特定值块最初产生的时间戳。例如,对于产生并添加到KVS树的根节点(例如,kvset)的第一值块,数据产生编号可从值“1”开始,且产生并添加到KVS树的根节点(例如,kvset)的第二值块将具有数据产生编号“2”。数据产生编号随着通过根节点产生并添加到KVS树的每一新值块而增加。
所述组值块的成员可对应于由存储器装置实施的数据存储媒体的媒体数据块(媒体块),如本文所述,所述存储器装置可包括SSD、硬盘驱动器、NVDIMM、3D XPoint存储器等。每一值块可包括将其识别为值块的标头。值块可包括对一或多个值的存储区段,在其间没有间隔,其中第一值的位可进入到数据存储媒体上的第二值的位中,而其之间没有防护、容器或其它定界符。对于各种实施例,kvset的主键块包括用于kvset的所述组值块中的值块的媒体块识别列表。以此方式,主键块可管理对kvset内的值块的存储引用。
对于一些实施例,使用与键相关联的数据标志(以下称为墓碑(tombstone))来指示对应于所述键的值已被删除。墓碑可与键相关联地驻留在键条目中,且对于键值对可不消耗值块空间。根据一些实施例,墓碑对与键相关联的值的删除做标志,同时避免从KVS树清除所述值的可能昂贵的操作。对于一些实施例,当在针对给定键按时间顺序搜索KVS树期间遇到墓碑时,即使与给定键相关联的键值对的过期版本驻留在KVS树内较低(例如,较旧)的位置,搜索过程也知道对应于给定键的值已被删除。
对于一些实施例,主键块包含用于kvset的一组度量。举例来说,所述组度量可包括以下中的一或多者:存储在kvset中的键的总数目,或存储在kvset中的具有墓碑值的键的数目;存储在kvset中的键的所有键长度的总和;存储在kvset中的键的所有值长度的总和。最后两个度量可至少提供由kvset消耗的大致(如果非确切)存储量。所述组度量还可包括例如kvset的值块(例如,未引用值)中的未引用数据量。这个最后的度量可提供可在维护操作(例如,对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之间传输数据。主机系统120可进一步利用NVM快速(NVMe)接口以在存储器子系统110通过PCIe接口与主机系统120耦合时存取存储器组件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可包含可从存储器子系统控制器115接收地址并对所述地址进行解码以存取存储器组件112A到112N的高速缓存或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器)。
存储器组件112A到112N中的任一者可包含媒体控制器(例如,媒体控制器113A及媒体控制器113N),以管理存储器组件的存储器单元、与存储器子系统控制器115通信以及执行从存储器子系统控制器115接收的存储器请求(例如,读取或写入)。
主机系统120包含键值存储(KVS)日志记录组件122,其使得或以其它方式促进实例计算环境中的KVS使用日志记录而以基于一或多个准则选择的不同数据存储格式存储数据(例如,键值对的键数据或值数据)。取决于一些实施例,可在主机系统120(例如,主机系统120上的易失性存储器,例如本地存储器119)上实施如本文描述的存储器内层,且可在存储器子系统110上实施如本文描述的日志层及长期层。
对于一些实施例,存储器子系统110上的日志层从存储器内层接收一组键值对,这可能是对主机系统120上评估的满足一或多个各种条件的响应。例如,条件可包括(但不限于)主机系统120上的将键值对刷新或同步到日志层的客户端请求(例如,来自主机系统120上的软件应用程序的请求)、时间阈值(例如,主机系统120确定已达到预定时间间隔,例如50毫秒),或数据大小阈值(例如,主机系统120确定存储器内层中的键值对数据量达到或超过数据大小阈值)。对于一些实施例,时间阈值(例如,50毫秒)实施存储在存储器内层(例如,其易失性存储器)上的键对数据的一致性及耐久性要求,借此最小化或避免在意外断电情况下的数据丢失。基于键值对数据从存储器内层移动(例如,刷新)到日志层的频率(例如,预定时间间隔),从存储器内层流动的数据可为小粒度的,如果在没有日志层的情况下直接写入到长期层,将导致长期层上的写入操作增加且长期层上键值对的可搜索性降低。正被接收的键值对可包括来自存储在存储器内层上的kvset的一或多个键值对。例如,提供所述组键值对的kvset可包括存储在存储器内层中的kvset序列中的最旧kvset中的一或多者。如本文描述,存储器内层的kvset可包括树数据结构,例如盆景数据树,其促进在存储器内层中存储及搜索键值对。
在从存储器内层接收键值对之后,KVS日志记录组件122可将来自所述组键值对中的特定键值对的特定键的键数据存储在由所述组存储器组件112A及112N提供的日志数据存储空间上的第一日志数据存储对象中。对于一些实施例,第一日志数据存储对象包括日志元数据记录(本文也称为元数据记录),其可包括存储状态事务(例如,提供KVS的快照的元数据状态)及一或多个突变事务的元数据容器。日志数据存储空间可由通过所述组存储器组件112A及112N实施的数据存储媒体(例如,媒体池)提供,代表持久注册表,并且可驻留在媒体池中的最佳可用数据存储媒体上。
另外,在从存储器内层接收键值对之后,KVS日志记录组件122可确定与来自所述组键值对中的特定键值对的特定键相关联的特定值是否满足非日志数据存储对象准则。实例非日志数据存储对象准则可包括(但不限于)特定值超过值数据大小(例如,捕获超过某一数据大小的值)、(与特定值相关联的)特定键同与历史写入模式相关联的目标键相匹配(例如,历史写入模式指示目标键的写入操作的数目已超过写入阈值),或特定值同与历史写入模式相关联的目标值相匹配(例如,历史写入模式指示目标值的写入操作的数目已超过写入阈值)。
基于确定特定值是否满足非日志数据存储对象准则,KVS日志记录组件122可将特定值的值数据存储在日志数据存储空间上的非日志数据存储对象或日志数据存储空间上的第二日志数据存储对象中的至少一者中。对于一些实施例,非日志数据存储对象包括由通过所述组存储器组件112A及112N实施的数据存储媒体(例如,媒体池)用来存储数据的媒体块。取决于实施例,非日志数据存储对象包括值块,其可包括经配置用于或适于存储一或多个值的媒体块。对于一些实施例,第二日志数据存储对象包括元数据记录。对于一些实施例,响应于确定特定值满足非日志数据存储对象准则,KVS日志记录组件122将(特定值的)值数据存储在日志数据存储空间上的非日志数据存储对象中(例如,在值块中)。另外,对于一些实施例,响应于确定特定值不满足非日志数据存储对象准则,KVS日志记录组件122将(特定值的)值数据存储在日志数据存储空间上的(第二)日志数据存储对象(例如,元数据记录)中。
最终,KVS日志记录组件122可确定是否满足从日志数据存储空间移动键数据及值数据的条件。响应于确定满足所述条件,KVS日志记录组件122可将键数据及值数据从日志数据存储空间移动到添加到存储在长期数据存储空间上的键值存储(KVS)树数据结构的节点的新kvset。在将键数据及值数据从日志数据存储空间移动到新kvset时,一些实施例可促进键数据及值数据的长期批量持久数据存储。根据一些实施例,添加到KVS树数据结构的新kvset包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。另外,对于一些实施例,新kvset可被添加到由KVS树数据结构的根节点存储的kvset序列(例如,添加到其开头)。取决于实施例,第一组非日志数据存储对象可包括一组键块,其中的每一者包括经配置用于或适于存储一或多个键的媒体块。另外,取决于实施例,第二组非日志数据存储对象包括一组值块,其中的每一者包括经配置用于或适于存储一或多个值的媒体块。
KVS日志记录组件122可通过将键数据从日志数据存储空间上的第一日志数据存储对象写入到KVS树数据结构的一或多个非日志数据存储对象而将键数据从日志数据存储空间移动到KVS树数据结构。如本文所述,KVS树数据结构的根节点的新kvset可包括用于存储键值对的键的第一组非日志数据存储对象,且因而将键数据从日志数据存储空间上的第一日志数据存储对象写入到KVS树数据结构可包括将键数据写入到第一组非日志数据存储对象中的一或多个非日志数据存储对象(例如,键块)。
如本文所述,响应于确定特定值满足非日志数据存储对象准则,KVS日志记录组件122可将(特定值的)值数据存储在日志数据存储空间上的非日志数据存储对象中(例如,在值块中)。因此,当KVS日志记录组件122将值数据从日志数据存储空间移动到长期数据存储空间上的KVS树数据结构时,KVS日志记录组件122可通过将非日志数据对象的关联(例如,指派所有权)从日志数据存储空间改变到长期数据存储空间上的KVS树数据结构(例如,添加到根节点的新kvset)来移动值数据。这样做时,一些实施例可帮助避免将值数据从一种数据对象格式(例如,日志数据存储对象)写入到另一数据对象(由长期数据存储空间支持(例如,使用、兼容或接受)的非日志数据存储对象)的写入操作(并减少写入放大)。如本文所述,KVS树数据结构的根节点的新kvset可包括用于存储键值对的值的第二组非日志数据存储对象,且因而将非日志数据对象的关联从日志数据存储空间改变到KVS树数据结构可包括将非日志数据对象的关联改变到新kvset的第二组非日志数据存储对象。
替代地,如本文所述,响应于确定特定值不满足非日志数据存储对象准则,KVS日志记录组件122可将(特定值的)值数据存储在日志数据存储空间上的(第二)日志数据存储对象(例如,元数据记录)中。因此,当KVS日志记录组件122将值数据从日志数据存储空间移动到长期数据存储空间上的KVS树数据结构时,KVS日志记录组件122可通过将值数据从日志数据存储空间上的第二日志数据存储对象写入到KVS树数据结构的一或多个非日志数据存储对象来移动值数据。如本文所述,KVS树数据结构的根节点的新kvset可包括用于存储键值对的值的第二组非日志数据存储对象,且因而将值数据从日志数据存储空间上的第二日志数据存储对象写入到KVS树数据结构可包括将值数据写入到第二组非日志数据存储对象中的一或多个非日志数据存储对象(例如,值块)。
取决于实施例,可在主机系统120、存储器子系统110或两者的某一组合上执行本文中关于KVS日志记录组件122描述的操作。例如,取决于实施例,KVS日志记录组件122可包括逻辑(例如,一组机器指令,例如固件)或一或多个组件,其致使存储器子系统110(例如,存储器子系统控制器115)执行本文中关于KVS日志记录组件122描述的操作。KVS日志记录组件122可包括能够执行本文中描述的操作的有形部件。下面描述有关KVS日志记录组件122的操作的进一步细节。
图2是根据本公开的一些实施方案的实例键值存储(KVS)日志记录组件200(以下称为KVS日志记录组件200)的框图。如所说明,KVS日志记录组件200包括存储器内键值对接口210、键数据日志记录管理器220、值数据日志记录管理器230及键值数据移动器240。对于一些实施例,KVS日志记录组件200可在组件或布置上与图2中说明的不同(例如,更少或更多组件)。
存储器内键值对接口210接收一组键值对(例如,来自存储在存储器内层上的一或多个kvset),其可响应于在主机系统上评估的满足一或多个各种条件而被发送到存储器内键值对接口210。实例条件可包括(但不限于)主机系统上的将键值对刷新或同步到日志层的客户端请求、时间阈值或数据大小阈值。
键数据日志记录管理器220将所述组键值对中的特定键值对的特定键的键数据存储在日志数据存储空间上的第一日志数据存储对象中。举例来说,第一日志数据存储对象可包括日志元数据记录,其可包括存储状态事务及一或多个突变事务的元数据容器。
值数据日志记录管理器230确定特定键值对的特定值是否满足非日志数据存储对象准则。实例非日志数据存储对象准则不限于:选择键或具有某一数据大小的值的准则,以及选择(例如,基于过去观察到的输入/输出数据模式)导致写入操作增加的一组键或值的准则。例如,基于所观察到的指示对键的重复更新的数据模式,实施例可使用非日志数据存储对象将与待选择用于存储的键相关联的键数据或值数据存储在日志层中。基于值数据日志记录管理器230确定特定值是否满足非日志数据存储对象准则,值数据日志记录管理器230将特定值的值数据存储在日志数据存储空间上的非日志数据存储对象或日志数据存储空间上的第二日志数据存储对象中的至少一者中。
键值数据移动器240将键数据及值数据从日志数据存储空间移动到添加到键值存储树数据结构的节点的新键值组,所述键值存储树被存储在由所述组存储器组件提供的长期数据存储空间上,且新键值组包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。在值数据日志记录管理器230将(特定值的)值数据存储在日志数据存储空间上的非日志数据存储对象中(例如,在值块中)的情况下,键值数据移动器240通过将非日志数据对象的关联(例如,指派所有权)从日志数据存储空间改变到长期数据存储空间上的KVS树数据结构(例如,添加到根节点的新kvset)来移动值数据。在值数据日志记录管理器230将(特定值的)值数据存储在日志数据存储空间上的(第二)日志数据存储对象(例如,元数据记录)中的情况下,键值数据移动器240通过将值数据从日志数据存储空间上的第二日志数据存储对象写入到KVS树数据结构的一或多个非日志数据存储对象来移动值数据。
图3及4是根据本公开的一些实施方案的使用日志记录的键值存储(KVS)的实例方法的流程图。图3及4的方法300、400中的任一者可通过处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图3及4的一或多种方法300、400由图1的主机系统120执行。在这些实施例中,方法300、400可至少部分地由键值存储日志记录组件122执行。替代地,图3及4的一或多种方法由图1的存储器子系统110(例如,存储器子系统控制器115的处理器117)执行。尽管以特定序列或顺序展示所述过程,但除非另有指定,否则可修改过程的顺序。因此,所说明的实施例应仅被理解为实例,且所说明的过程可以不同顺序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。关于KVS存储可同时执行图3及4的方法300、400的操作。
现在参考图3的方法300,在操作305处,主机系统(例如,120)的处理装置从主机系统的易失性存储器接收(或以其它方式检索)一组键值对,这可能是对主机系统上评估的满足一或多个各种条件的响应。如本文所述,正被接收的键值对可包括来自存储在存储器内层上的kvset的一或多个键值对。例如,提供所述组键值对的kvset可包括存储在存储器内层中的kvset序列中的最旧kvset中的一或多者。存储器内层的kvset可包括树数据结构,例如盆景数据树,其促进在存储器内层中存储及搜索键值对。
在操作310处,主机系统的处理装置将在操作305处接收的所述组键值对中的特定键值对的特定键的键数据存储在由一组存储器组件(例如,所实施的数据存储媒体上)提供的日志数据存储空间上的第一日志数据存储对象(例如,元数据记录)中。
在操作315处,主机系统的处理装置确定特定键值对(与特定键的特定键值对相同)的特定值是否满足非日志数据存储对象准则。如本文所述,实例非日志数据存储对象准则可包括(但不限于)特定值超过值数据大小(例如,捕获超过某一数据大小的值)、(与特定值相关联的)特定键同与历史写入模式相关联的目标键相匹配(例如,历史写入模式指示目标键的写入操作的数目已超过写入阈值),或特定值同与历史写入模式相关联的目标值相匹配(例如,历史写入模式指示目标值的写入操作的数目已超过写入阈值)。
在操作320处,基于确定特定值是否满足非日志数据存储对象准则,主机系统的处理装置将特定值的值数据存储在日志数据存储空间上的非日志数据存储对象(例如,值块)或日志数据存储空间上的第二日志数据存储对象(例如,元数据记录)中的至少一者中。特定来说,响应于确定特定值满足非日志数据存储对象准则,主机系统的处理装置可将值数据存储在日志数据存储空间上的非日志数据存储对象中,且响应于以其它方式确定,主机系统的处理装置可将值数据存储在日志数据存储空间上的第二日志数据存储对象中。
在操作325处,主机系统的处理装置确定是否满足从日志数据存储空间移动键数据及值数据的条件。在操作330处,如果主机系统的处理装置确定满足从日志数据存储空间移动键数据及值数据的条件,那么方法300进行到操作335;否则,方法300返回到操作325。
在操作335处,主机系统的处理装置将键数据及值数据从日志数据存储空间移动到被添加到键值存储树数据结构的节点的新kvset,所述键值存储树数据结构存储在由所述组存储器组件(例如,所实施的数据存储媒体上)提供的长期数据存储空间上。根据一些实施例,新kvset包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。对于一些实施例,将键数据及值数据从日志数据存储空间移动到长期数据存储空间包括主机系统的处理装置执行图4的方法400。
现在参考图4的方法400,在操作405处,如果主机系统的处理装置确定(来自特定键值对的)特定值满足非日志数据存储对象准则,那么方法400进行到操作410,否则方法400进行到操作425。
在操作410处,主机系统的处理装置将值数据存储在日志数据存储空间上的非日志数据存储对象中。随后,在操作415处,主机系统的处理装置通过将非日志数据存储对象的关联(例如,所有权)从日志数据存储空间改变到长期数据存储空间(例如到KVS树数据结构的新kvset的第二组非日志数据存储对象(用于存储键值对的值))而将值数据从日志数据存储空间移动到长期数据存储空间。
在操作425处,主机系统的处理装置将值数据存储在日志数据存储空间上的日志数据存储对象中。随后,在操作430处,主机系统的处理装置通过将值数据从日志数据存储空间上的第二日志数据存储对象写入到长期数据存储空间上的一或多个非日志数据存储对象(例如KVS树数据结构的新kvset的第二组非日志数据存储对象(用于存储键值对的值)中的非日志数据存储对象)而将值数据从日志数据存储空间移动到长期数据存储空间。
方法400从操作415或操作430进行到操作435,在操作435中主机系统的处理装置将键数据从日志数据存储空间上的第一日志数据存储对象移动到长期数据存储空间上的一或多个非日志数据存储对象,例如KVS树数据结构的新kvset的第一组非日志数据存储对象(用于存储键值对的键)中的非日志数据存储对象。
图5及6是说明根据本公开的一些实施方案的使用日志记录的实例键值存储(KVS)的操作的框图。现在参考图5,如所展示,KVS 500包括存储器内层505(本文也称为KVS 500的节点c0)、日志层515(本文也称为KVS 500的节点c1)及长期层520(本文也称为KVS 500的节点cN)。在存储器内层505上所存储的每一kvset包括用于存储键值对的二叉树数据结构(例如,盆景数据树)(例如,作为使键值对突变的放入及删除操作而输入)。如所说明,c0的数据树1存储键1、2、3(分别为K1、K2及K3)的键值对的突变;c0的数据树2存储键A、B、C(分别为KA、KB及KC)的键值对的突变;且c0的数据树3存储键X及Y(分别为KX及KY)的键值对的突变。
最终,为了耐久性及持久性,由存储器内层505(的二叉树数据树结构)存储的键值对的键及值数据510被移动(例如,提交)到日志层515。移动可响应于例如满足将键值对的键数据及值数据510从存储器内层505移动到日志层515的条件(例如,耐久性间隔,例如50毫秒)。当将键值对的键及值数据从存储器内层505移动到日志层515时,键(K1、K2、K3、KA、KB、KC、KX、KY)中的每一者存储在日志层515上的日志数据对象(例如元数据记录)中。特定来说,如所展示,键K1、K2、K3中的每一者存储在元数据记录1(Mlog1)(535)中,键KA、KB、KC中的每一者存储在元数据记录2(Mlog2)(545)中,且键KX、KY中的每一者存储在元数据记录3(Mlog3)(555)中。
另外,值V1、V2、V3、VA、VB、VC、VX、VY(分别对应于键K1、K2、K3、KA、KB、KC、KX、KY)中的每一者基于非日志数据存储对象准则(如本文描述)存储在日志层515上的非日志数据对象(例如,媒体块,例如值块)或日志数据对象(例如,元数据记录)中。特定来说,如所展示,值V2基于非日志数据存储对象准则(例如,值V2满足所述准则)而存储到日志层515上的Mlog1(535);值VC基于非日志数据存储对象准则(例如,值VC满足所述准则)而存储到日志层515上的Mlog2(545);且值VY基于非日志数据存储对象准则(例如,值VY满足所述准则)而存储到日志层515上的Mlog3(555)。相比之下,值V1及V3中的每一者基于非日志数据存储对象准则(例如,值V1及V3中的每一者不满足所述准则)而存储到日志层515上的值块1(vblock 1)(530);值VA及VB中的每一者基于非日志数据存储对象准则(例如,值VA及VB中的每一者不满足所述准则)而存储到日志层515上的值块2(vblock 2)(540);且值VX基于非日志数据存储对象准则(例如,值VX不满足所述准则)而存储到日志层515上的值块3(vblock 3)(550)。因此,对于键K1、K3、KA、KB、KX,对应的元数据记录1、2、3(535、545、555)包括存储对应值V1、V3、VA、VB、VX的值块的引用位置,这些对应值是基于非日志数据存储对象准则而存储到值块。根据一些实施例,用于将值存储在日志层515上的非日志数据存储对象对应于由长期层520用来存储值的数据存储对象的类型(例如,与之兼容或类似)。
如本文所述,这可使得一些实施例能够在将值数据从日志层515上的非日志数据存储对象移动到长期层520时避免写入(例如,复制)操作,这可减少写入放大并改进耐用性。因此,如在图5中所说明,当键数据及值数据从日志层515移动到长期层520时,存储值V1、V3、VA、VB、VX的值数据的值块1、2、3(即,非日志数据存储对象)的所有权从日志层515移动到存储在长期层520上的一或多个kvset(例如,新kvset)的部分。尽管未展示,但根据一些实施例,当键数据及值数据从日志层515移动到长期层520时,存储在元数据记录1、2、3(即,日志数据存储对象)中的键数据被写入到存储在长期层520上的一或多个kvset(例如,新kvset)的一或多个新键块,且存储在元数据记录1、2、3中的值数据被写入到存储在长期层520上的一或多个kvset(例如,新kvset)的一或多个新值块。
现在参考图6,如所展示,KVS 600包括存储器内层605(本文也称为KVS 600的节点c0)、日志层610(本文也称为KVS 600的节点c1)及长期层615(本文也称为KVS 600的节点cN)。如所展示,由日志层610从存储器内层605接收键值对620。作为响应,日志层610将来自键值对620的所有键存储到元数据记录(Mlogs)630。对于键值对620中不满足准则(非日志数据存储对象准则)的值,例如值V2及V4,这些值与其相应键(例如,分别针对值V2及V4的键K2及K4)相关联地存储到Mlogs 630。对于键值对620中满足准则(非日志数据存储对象准则)的值,例如值V1、V3、V5、V6,这些值被存储到值块1(vblock 1)(635)。因此,关于键K1、K3、K5、K6,Mlogs630存储对应于值V1、V3、V5、V6的vblock 1(635)的引用。
如所展示,当键K1、K2、K3、K4、K5、K6的键及值数据从日志层610移动到长期层615时,来自Mlogs 630的键数据被写入到存储在长期层615上的键块(kblock)(650),来自Mlogs 630的值数据被写入到存储在长期层615上的值块2(vblock 2)(655),且vblock 1(635)的所有权从日志层610移动到长期层615。如本文所述,对于一些实施例,kblock 650、vblock 2(655)及vblock 1(635)是由存储在长期层615上的键值存储(KVS)树数据结构的根节点添加(例如,引入)的新kvset的部分。
图7及8是说明根据本公开的一些实施方案使用日志记录的实例键值存储(KVS)的框图。现在参照图7,如所说明的实例KVS 700组织为树,其包含包括第一根节点702的存储器内层、包括第二根节点704的日志层及包括键值存储(KVS)树数据结构706(KVS树706)的长期层,KVS树706包括级L0、L1、L2、L3的节点且其从级L0中的第三根节点710开始,并向下流到连接到第三根节点710的级L1、L2、L3中的多个子代节点。根据各种实施例,第一根节点702存储在(例如,主机系统的)易失性存储器上,第二根节点704存储在由持久数据存储媒体(例如,由存储器子系统110实施的)提供的日志数据存储空间上,且KVS树706及其对应节点存储在由持久数据存储媒体提供的长期数据存储空间(不同于日志数据存储空间)上。
关于KVS树706,值与引用所述值的对应键(例如,在键块中)一起存储在KVS树706中(例如,在值块中)。具体地说,键条目可用于容纳键及额外信息(例如对值的引用)两者。键本身可在KVS树706内具有总排序,且因而,键可在彼此之间分类。键还可被划分为子键,其中子键是键的非重叠部分。对于一些实施例,键的总排序是基于比较多个键之间的类似子键(例如,将键的第一子键与另一键的第一子键进行比较)。另外,对于一些实施例,键前缀包括键的开头部分。当使用时,键前缀可由一或多个子键组成。
KVS 700的节点(例如节点710)各自包含一或多个键值组(kvset)。对于一些实施例,一或多个节点(例如节点710)各自包括kvset的时间排序序列。如所说明,kvset 715包括‘N’标记以指示其是序列中的最新者,而kvset 720包括‘O’标记以指示其是序列中的最旧者。kvset 725包括‘I’标记以指示其是序列中的中间者。这些标记自始至终用于标识kvset;然而,另一标记(例如‘X’)表示特定kvset,而不是其在序列中的位置(例如,新的、中间的、旧的等),除非其是波浪号‘~’(在此情况下,其只是匿名kvset)。如下面更详细地解释,较旧kvset(具有较旧键块)出现在KVS树706的较低处。因此,将kvset向下推(例如,溢出)树级,例如从L1到L2,导致来自父代节点的至少一个新kvset被添加到父代节点的接收子代节点中的最新位置。
KVS树706包括给定节点(例如,节点710)的kvset中的(由键块及值块存储的)键值对到所述给定节点的任一个子代节点(例如,节点710的子代节点中的任一者,其由在L1处的所有节点表示)的确定性映射。KVS树706的确定性映射可意味着,在给定键的情况下,外部实体可在不知道KVS树706的内容的情况下跟踪通过KVS树706的节点的路径到键的(键值对的)键块及值块。举例来说,这不同于B树,例如在B树中树的内容将确定给定键的值将落在何处,以便维持树的搜索优化结构。相比之下,KVS树706的确定性映射可提供规则,例如,所述规则使得在给定键的情况下,即使此时最大树级(例如,树深度)仅在L1处,也可计算键将映射到的L3处的子代节点。对于一些实施例,确定性映射包括键的一部分的散列的一部分。子键可经散列以到达映射集,且映射集的一部分可用于树的任何给定级。取决于实施例,键的部分可包括整个键。
对于一些实施例,散列包括包含散列的部分的多个非重叠部分。例如,多个非重叠部分中的每一者可对应于树的级。散列的部分可由节点的级从多个非重叠部分来确定。因此,可通过散列的部分的大小来定义节点的子代节点的最大数目,其中散列的部分的大小可为一定数目个位。举例来说,关于产生八个位的键的散列,八个位可被划分为包括前两个位、位三到六以及位七及八的三个组。子代节点可基于所述组位进行索引,使得第一级(例如,L1)的子代节点具有两位名称(基于位一及二),第二级(例如,L2)上的子代节点具有四位名称(基于位三到六),且第三级(例如,L3)上的子代节点具有两位名称(基于位七及八)。
现在参考图8,与图7的KVS 700类似,实例KVS 800被组织为树,但支持异构键值组(kvset)。如所展示,KVS 800包含包括第一根节点802的存储器内层、包括第二根节点804的日志层,以及包括键值存储(KVS)树数据结构806(KVS树806)的长期层,KVS树806包括节点的级L0、L1、L2且其从级L0中的第三根节点810开始并向下流到连接到第三根节点810的级L1、L2中的多个子代节点。
KVS树806包括多个KVS树(被指定为T1、T2、T3及T4),其在公共基本级(L0)处共享第三根节点810,且接着在后续级(例如,L1及L2)处不相交。根据一些实施例,KVS 800的根节点802、804、810可包括异构kvset(包含来自多个KVS树的条目的kvset),而在KVS 800的后续级(例如,KVS树806前面的级L1)处的节点可包括同构kvset(包含仅来自一个KVS树的条目的kvset)。以此方式,KVS树806可实施多个不同KVS树的键值数据库(KVDB)。在图8中,为说明后续级节点属于单个KVS树,节点在左下角包含表示其树从属关系的标记(例如,T1或T2)。
根据一些实施例,KVS 800包括KVS树806的级L0到级L1之间的条目的第一确定性映射,以及后续级(例如,L1到L2、L2到L3,以此类推)之间的条目的第二确定性映射。为促进树识别符(TID)在第一确定性映射(从级L0到L1)中的使用,根节点802、804、810中的一或多者中的异构kvset中的条目可包括TID作为键或值条目的部分。同构kvset可从条目省略TID。以此方式,在使用的情况下,TID可容易地获得,且在不使用的情况下,可通过从条目省略TID来节省空间。
图9A及9B提供说明在其中执行用于使用日志记录的KVS的方法的实例实施例的上下文中的计算环境100的组件之间的交互的交互图。方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,所述方法由主机系统120执行。尽管以特定序列或顺序展示所述操作,但除非另有指定,否则可修改过程的顺序。因此,所说明的实施例应仅被理解为实例,并且所说明的过程可以不同顺序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。
在图9A及9B所说明实例的上下文中,主机系统可包括主机系统120,且存储器子系统可包括存储器子系统110,其中存储器组件112A到112N中的一或多者可实施用于提供如本文描述的日志数据存储空间及长期数据存储空间的数据存储媒体。
如所展示,在操作902处,主机系统120从(例如,主机系统120的)易失性存储器接收一组键值对。在操作904处,主机系统120将(在操作902处接收的所述组键值对中的)特定键值对的特定键的键数据存储在日志数据存储空间上的第一日志数据存储对象(例如元数据记录)中。因此,在操作920处,存储器子系统110将第一日志数据存储对象存储在日志数据存储空间上。
在操作906处,主机系统120确定(在操作902处接收的所述组键值对中的)键值对的特定值是否满足非日志数据存储对象准则。
如果(在操作906处)确定特定值不满足非日志数据存储对象准则,那么在操作908处,主机系统120将特定值的值数据存储在日志数据存储空间上的第二日志数据存储对象(例如元数据记录)中。因此,在操作922处,存储器子系统110将第二日志数据存储对象存储在日志数据存储空间上。现在参考图9B,最终,当(通过操作904及908存储在日志数据存储空间上的)键数据及值数据从日志数据存储空间移动到长期数据存储空间时,在操作932处,主机系统120将值数据从日志数据存储空间上的第二日志数据存储对象写入到待添加到存储在长期数据存储空间上的KVS树(例如,KVS树的根节点)的新kvset的非日志数据存储对象(例如,值块)。为促进此,在操作942处,存储器子系统110向主机系统120提供对存储在日志数据存储空间上的第二数据存储对象的存取。
再次继续图9A,如果(在操作906处)确定特定值满足非日志数据存储对象准则,那么在操作910处,主机系统120将特定值的值数据存储在日志数据存储空间上的非日志数据存储对象(例如值块)中。因此,在操作924处,存储器子系统110将非日志数据存储对象存储在日志数据存储空间上。再次参考图9B,最终当(通过操作904及910存储在日志数据存储空间上的)键数据及值数据从日志数据存储空间移动到长期数据存储空间时,在操作930处,主机系统120将日志数据存储空间上的第二日志数据存储对象的关联(例如,所有权)从日志数据存储空间改变到待添加到存储在长期数据存储空间上的KVS树(例如,KVS树的根节点)的新kvset。为促进此,在操作940处,存储器子系统110向主机系统120提供对存储在日志数据存储空间上的非日志数据存储对象的存取。
在操作930或操作932之后,在操作934处,主机系统120在操作934中通过将键数据从日志数据存储空间上的第一日志数据存储对象写入到待添加到存储在长期数据存储空间上的KVS树(例如,KVS树的根节点)的新kvset的非日志数据存储对象(例如,键块)而将键数据从日志数据存储空间移动到长期数据存储空间。为促进此,在操作944处,存储器子系统110向主机系统120提供对存储在日志数据存储空间上的第一日志数据存储对象的存取。最终,在操作946处,存储器子系统110将新键值组添加到存储在长期数据存储空间上的KVS树。
图10说明呈计算机系统1000的形式的实例机器,在所述机器内可执行用于致使所述机器执行本文所论述的方法中的任一或多者的一组指令。在一些实施例中,计算机系统1000可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或者可用于执行控制器的操作(例如,用于执行操作系统以执行对应于图1的KVS日志记录组件122的操作)。在替代实施例中,所述机器可连接(例如,联网)到局域网(LAN)、内联网、外联网及/或因特网中的其它机器。所述机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设施、服务器、网络路由器、网络交换机或网桥或能够(循序或以其它方式)执行指定待由所述机器采取的动作的一组指令的任何机器。此外,虽然说明单个机器,但是术语“机器”也应被认为包含个别地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任一者或多者的机器的任何集合。
实例计算机系统1000包含处理装置1002、主存储器1004(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器1006(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储装置1018,它们经由总线1030彼此通信。
处理装置1002表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更特定来说,处理装置1002可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置1002也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似者。处理装置1002经配置以执行用于执行本文所论述的操作及步骤的指令1026。计算机系统1000可进一步包含用于通过网络1020进行通信的网络接口装置1008。
数据存储装置1018可包含机器可读存储媒体1024(也称为计算机可读媒体),在其上存储体现本文所描述的方法或功能中的任一者或多者的一或多组指令1026或软件。在由计算机系统1000执行指令1026期间,指令1026也可全部或至少部分地驻留在主存储器1004内及/或处理装置1002内,主存储器1004及处理装置1002也构成机器可读存储媒体。机器可读存储媒体1024、数据存储装置1018及/或主存储器1004可对应于图1的存储器子系统110。
在一个实施例中,指令1026包含用于实施对应于具有部分计算跟踪的奇偶校验计算器(例如,图1的KVS日志记录组件122)的功能性的指令。尽管在实例实施例中将机器可读存储媒体1024展示为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”也应被认为包含能够存储或编码一组指令以供机器执行并且致使机器执行本公开的方法中的任一者或多者的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已经根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的某些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其他技术人员传达其工作实质的方式。此处,算法通常被认为是导致所需结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常但不是必须的,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。有时已经证明,主要出于通用的原因将这些信号称为位、值、元素、符号、字符、项、数字或类似者是方便的。
然而,应牢记,所有这些及类似术语均应与适当物理量相关联且仅为应用于这些量的方便标签。本公开可指代计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量。
本公开还涉及用于执行本文的操作的设备。此设备可经特定构造用于预期目的,或者其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、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中,实例1到12中任一者的主题任选地包含其中所述非日志数据存储对象准则包括所述特定值超过值数据大小。
在实例14中,实例1到13中任一者的主题任选地包含其中所述非日志数据存储对象准则包括所述特定键同与历史写入模式相关联的目标键相匹配,所述历史写入模式指示所述目标键的写入操作的数目已超过写入阈值。
在实例15中,实例1到14中任一者的主题任选地包含其中所述非日志数据存储对象准则包括所述特定值同与历史写入模式相关联的目标值相匹配,所述历史写入模式指示所述目标值的写入操作的数目已超过写入阈值。
在实例16中,实例1到15中任一者的主题任选地包含其中所述条件包括以下中的至少一者:接收将数据从所述易失性存储器刷新到所述日志数据存储空间的请求、达到预定时间间隔或满足与所述易失性存储器相关的数据大小准则。
在实例17中,实例1到16中任一者的主题任选地包含其中所述系统是存储器子系统。
实例18是一种方法,其包括:从易失性存储器接收一组键值对;通过处理装置将所述组键值对中的特定键值对的特定键的键数据存储在由一组存储器组件提供的日志数据存储空间上的第一日志数据存储对象中;通过所述处理装置确定所述特定键值对的特定值是否满足非日志数据存储对象准则;基于所述确定所述特定值是否满足所述非日志数据存储对象准则,通过所述处理装置将所述特定值的值数据存储在所述日志数据存储空间上的非日志数据存储对象或所述日志数据存储空间上的第二日志数据存储对象中的至少一者中;通过所述处理装置确定是否满足从所述日志数据存储空间移动所述键数据及所述值数据的条件;及响应于确定满足所述条件,通过所述处理装置将所述键数据及所述值数据从所述日志数据存储空间移动到添加到键值存储树数据结构的节点的新键值组,所述键值存储树被存储在由所述组存储器组件提供的长期数据存储空间上,且所述新键值组包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。
在实例19中,实例18的主题任选地包含其中所述日志数据存储对象包括元数据记录,所述非日志数据存储对象包括值块,所述第一组非日志数据存储对象包括一组键块,且所述第二组非日志数据存储对象包括一组值块。
实例20是一种非暂时性机器可读存储媒体,其包括指令,当所述指令由处理装置执行时致使所述处理装置:从易失性存储器接收一组键值对;确定所述特定键值对的特定值是否满足非日志数据存储对象准则;基于所述确定所述特定值是否满足所述非日志数据存储对象准则,将所述特定值的值数据存储在日志数据存储空间上的非日志数据存储对象或所述日志数据存储空间上的第二日志数据存储对象中的至少一者中;确定是否满足从所述日志数据存储空间移动键数据及所述值数据的条件;及响应于确定满足所述条件,将所述值数据从所述日志数据存储空间移动到添加到键值存储树数据结构的节点的新键值组,所述键值存储树被存储在由一组存储器组件提供的长期数据存储空间上,且所述新键值组包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。
Claims (20)
1.一种系统,其包括:
一组存储器组件,其提供日志数据存储空间及长期数据存储空间;及
处理装置,其可操作地耦合到所述组存储器组件,所述处理装置经配置以执行包括下列的操作:
从易失性存储器接收一组键值对;
将所述组键值对中的特定键值对的特定键的键数据存储在所述日志数据存储空间上的第一日志数据存储对象中;
确定所述特定键值对的特定值是否满足非日志数据存储对象准则;
基于所述确定所述特定值是否满足所述非日志数据存储对象准则,将所述特定值的值数据存储在所述日志数据存储空间上的非日志数据存储对象或所述日志数据存储空间上的第二日志数据存储对象中的至少一者中;
确定是否满足从所述日志数据存储空间移动所述键数据及所述值数据的条件;及
响应于确定满足所述条件,将所述键数据及所述值数据从所述日志数据存储空间移动到添加到键值存储树数据结构的节点的新键值组,所述键值存储树被存储在所述长期数据存储空间上,且所述新键值组包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。
2.根据权利要求1所述的系统,其中所述第一日志数据存储对象包括元数据记录。
3.根据权利要求1所述的系统,其中所述非日志数据存储对象包括值块,且所述第二组非日志数据存储对象包括一组值块。
4.根据权利要求1所述的系统,其中所述第一组非日志数据存储对象包括一组键块。
5.根据权利要求1所述的系统,其中所述操作进一步包括:
响应于确定所述特定值满足所述非日志数据存储对象准则,将所述值数据存储在所述日志数据存储空间上的所述非日志数据存储对象中。
6.根据权利要求5所述的系统,其中所述将所述键数据及所述值数据从所述日志数据存储空间移动到所述键值存储树数据结构包括:
通过将所述键数据从所述日志数据存储空间上的所述第一日志数据存储对象写入到所述第一组非日志数据存储对象中的一或多个非日志数据存储对象,将所述键数据从所述日志数据存储空间移动到所述键值存储树数据结构;及
通过将所述非日志数据存储对象的关联从所述日志数据存储空间改变到所述键值存储树数据结构,使得所述第二组非日志数据存储对象包含所述非日志数据存储对象,将所述值数据从所述日志数据存储空间移动到所述键值存储树数据结构。
7.根据权利要求5所述的系统,其中所述第一日志数据存储对象及所述非日志数据存储对象与所述日志数据存储空间上的键值组的序列中的第二键值组相关联。
8.根据权利要求1所述的系统,其中所述操作进一步包括:
响应于确定所述特定值不满足所述非日志数据存储对象准则,将所述值数据存储在所述日志数据存储空间上的所述第二日志数据存储对象中。
9.根据权利要求8所述的系统,其中将所述键数据及所述值数据从所述日志数据存储空间移动到所述键值存储树数据结构包括:
通过将所述键数据从所述日志数据存储空间上的所述第一日志数据存储对象写入到所述第一组非日志数据存储对象中的一或多个非日志数据存储对象,而将所述键数据从所述日志数据存储空间移动到所述键值存储树数据结构;以及
通过将所述值数据从所述日志数据存储空间上的所述第二日志数据存储对象写入到所述第二组非日志数据存储对象中的一或多个非日志数据存储对象,而将所述值数据从所述日志数据存储空间移动到所述键值存储树数据结构。
10.根据权利要求8所述的系统,其中所述第一日志数据存储对象和所述第二日志数据存储对象与所述日志数据存储空间上的键值组的序列中的第二键值组相关联。
11.根据权利要求1所述的系统,其中所述组键值对是从所述易失性存储器上的键值组的序列中的第二键值组接收。
12.根据权利要求1所述的系统,其中所述组键值对是从所述易失性存储器上的第二键值组接收,所述第二键值组合包括用于存储所述组键值对的二叉树数据结构。
13.根据权利要求1所述的系统,其中所述非日志数据存储对象准则包括所述特定值超过值数据大小。
14.根据权利要求1所述的系统,其中所述非日志数据存储对象准则包括所述特定键同与历史写入模式相关联的目标键相匹配,所述历史写入模式指示所述目标键的写入操作的数目已超过写入阈值。
15.根据权利要求1所述的系统,其中所述非日志数据存储对象准则包括所述特定值同与历史写入模式相关联的目标值相匹配,所述历史写入模式指示所述目标值的写入操作的数目已超过写入阈值。
16.根据权利要求1所述的系统,其中所述条件包括以下中的至少一者:接收将数据从所述易失性存储器刷新到所述日志数据存储空间的请求、达到预定时间间隔或满足与所述易失性存储器相关的数据大小准则。
17.根据权利要求1所述的系统,其中所述系统是存储器子系统。
18.一种方法,其包括:
从易失性存储器接收一组键值对;
通过处理装置将所述组键值对中的特定键值对的特定键的键数据存储在由一组存储器组件提供的日志数据存储空间上的第一日志数据存储对象中;
通过所述处理装置确定所述特定键值对的特定值是否满足非日志数据存储对象准则;
基于所述确定所述特定值是否满足所述非日志数据存储对象准则,通过所述处理装置将所述特定值的值数据存储在所述日志数据存储空间上的非日志数据存储对象或所述日志数据存储空间上的第二日志数据存储对象中的至少一者中;
通过所述处理装置确定是否满足从所述日志数据存储空间移动所述键数据及所述值数据的条件;及
响应于确定满足所述条件,通过所述处理装置将所述键数据及所述值数据从所述日志数据存储空间移动到添加到键值存储树数据结构的节点的新键值组,所述键值存储树被存储在由所述组存储器组件提供的长期数据存储空间上,且所述新键值组包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。
19.根据权利要求18所述的方法,其中所述日志数据存储对象包括元数据记录,所述非日志数据存储对象包括值块,所述第一组非日志数据存储对象包括一组键块,且所述第二组非日志数据存储对象包括一组值块。
20.一种非暂时性机器可读存储媒体,其包括指令,当所述指令由处理装置执行时致使所述处理装置:
从易失性存储器接收一组键值对;
确定所述特定键值对的特定值是否满足非日志数据存储对象准则;
基于所述确定所述特定值是否满足所述非日志数据存储对象准则,将所述特定值的值数据存储在日志数据存储空间上的非日志数据存储对象或所述日志数据存储空间上的第二日志数据存储对象中的至少一者中;
确定是否满足从所述日志数据存储空间移动键数据及所述值数据的条件;及
响应于确定满足所述条件,将所述值数据从所述日志数据存储空间移动到添加到键值存储树数据结构的节点的新键值组,所述键值存储树被存储在由一组存储器组件提供的长期数据存储空间上,且所述新键值组包括用于存储一或多个键的第一组非日志数据存储对象及用于存储一或多个值的第二组非日志数据存储对象。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/220,646 | 2018-12-14 | ||
US16/220,646 US10852978B2 (en) | 2018-12-14 | 2018-12-14 | Key-value store using journaling with selective data storage format |
PCT/US2019/065692 WO2020123628A1 (en) | 2018-12-14 | 2019-12-11 | Key-value store using journaling with selective data storage format |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113196259A CN113196259A (zh) | 2021-07-30 |
CN113196259B true CN113196259B (zh) | 2022-08-05 |
Family
ID=71070952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980082310.3A Active CN113196259B (zh) | 2018-12-14 | 2019-12-11 | 使用以选择性数据存储格式进行日志记录的键值存储 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10852978B2 (zh) |
CN (1) | CN113196259B (zh) |
WO (1) | WO2020123628A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10609172B1 (en) | 2017-04-27 | 2020-03-31 | Chicago Mercantile Exchange Inc. | Adaptive compression of stored data |
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 |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US10852978B2 (en) | 2018-12-14 | 2020-12-01 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
JP7180769B2 (ja) * | 2019-05-27 | 2022-11-30 | 日本電気株式会社 | データ管理装置、制御方法、及び記憶媒体 |
CN112905684A (zh) * | 2021-02-22 | 2021-06-04 | 杭州海兴泽科信息技术有限公司 | 一种电力数据入库方法、装置和计算机可读存储介质 |
US11940911B2 (en) | 2021-12-17 | 2024-03-26 | Netapp, Inc. | Persistent key-value store and journaling system |
CN114490540B (zh) * | 2022-02-14 | 2024-05-28 | 杭州网易数之帆科技有限公司 | 数据存储方法、介质、装置和计算设备 |
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 |
---|---|---|---|---|
US9367260B1 (en) * | 2013-12-13 | 2016-06-14 | Emc Corporation | Dynamic replication system |
CN107533507A (zh) * | 2015-02-23 | 2018-01-02 | 国际商业机器公司 | 根据日志结构管理存储装置中的数据 |
US9858301B1 (en) * | 2015-01-20 | 2018-01-02 | Amazon Technologies, Inc. | Selective flushing of a database journal for an asymmetrically-encrypted database |
CN107851102A (zh) * | 2015-04-14 | 2018-03-27 | 中兴飞流信息科技有限公司 | 用于键值存储的系统和方法 |
Family Cites Families (86)
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 |
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 |
US20070071243A1 (en) | 2005-09-23 | 2007-03-29 | Microsoft Corporation | Key validation service |
US7725671B2 (en) | 2005-11-28 | 2010-05-25 | Comm Vault Systems, Inc. | System and method for providing redundant access to metadata over a network |
EP1855281B1 (en) | 2006-05-10 | 2019-06-12 | Nero Ag | Apparatus for writing data to a medium |
BRPI0712824A2 (pt) | 2006-06-30 | 2012-07-24 | Tele Atlas North America Inc | busca mais pràxima em Índice adaptativo com compressço variÁvel |
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 |
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 | 华为技术有限公司 | 基于树形数据结构节点的插入的方法和存储装置 |
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 |
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 |
US8745014B2 (en) | 2011-10-19 | 2014-06-03 | Pivotal Software, Inc. | Time series data mapping into a key-value database |
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 |
US10146818B2 (en) | 2013-03-15 | 2018-12-04 | Nec Corporation | Computing system |
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 | データを管理するシステムおよび方法 |
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 | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム |
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数据合并排序方法和装置 |
CN104156278B (zh) | 2014-08-01 | 2017-06-27 | 江苏大学 | 一种文件版本控制系统及其方法 |
US9590948B2 (en) | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
US10346432B2 (en) | 2015-03-17 | 2019-07-09 | Cloudera, Inc. | Compaction policy |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
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 |
EP3916536A1 (en) | 2015-12-28 | 2021-12-01 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage device |
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 |
JP6360634B2 (ja) | 2016-01-29 | 2018-07-18 | 株式会社日立製作所 | 計算機システム、及び、データ処理方法 |
US20180089074A1 (en) | 2016-09-28 | 2018-03-29 | Intel Corporation | Techniques to Manage Key-Value Storage at a Memory or Storage Device |
CN106970936B (zh) | 2017-02-09 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置、数据查询方法及装置 |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
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 |
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 |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
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 |
WO2020190558A1 (en) * | 2019-03-15 | 2020-09-24 | Fungible, Inc. | Providing scalable and concurrent file systems |
-
2018
- 2018-12-14 US US16/220,646 patent/US10852978B2/en active Active
-
2019
- 2019-12-11 CN CN201980082310.3A patent/CN113196259B/zh active Active
- 2019-12-11 WO PCT/US2019/065692 patent/WO2020123628A1/en active Application Filing
-
2020
- 2020-11-10 US US17/094,532 patent/US11334270B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367260B1 (en) * | 2013-12-13 | 2016-06-14 | Emc Corporation | Dynamic replication system |
US9858301B1 (en) * | 2015-01-20 | 2018-01-02 | Amazon Technologies, Inc. | Selective flushing of a database journal for an asymmetrically-encrypted database |
CN107533507A (zh) * | 2015-02-23 | 2018-01-02 | 国际商业机器公司 | 根据日志结构管理存储装置中的数据 |
CN107851102A (zh) * | 2015-04-14 | 2018-03-27 | 中兴飞流信息科技有限公司 | 用于键值存储的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210081128A1 (en) | 2021-03-18 |
US20200192590A1 (en) | 2020-06-18 |
US11334270B2 (en) | 2022-05-17 |
WO2020123628A1 (en) | 2020-06-18 |
US10852978B2 (en) | 2020-12-01 |
CN113196259A (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113196259B (zh) | 使用以选择性数据存储格式进行日志记录的键值存储 | |
US11100071B2 (en) | Key-value store tree data block spill with compaction | |
US11599552B2 (en) | Counter-based compaction of key-value store tree data block | |
CN113196260B (zh) | 能够选择性使用键部分的键值存储树 | |
US11657092B2 (en) | Data tree with order-based node traversal | |
US10725930B2 (en) | Logical to physical memory address mapping tree | |
US20220319597A1 (en) | Key storage for sorted string tables using content addressable memory | |
KR20210024189A (ko) | 마모 레벨링을 위한 바이어싱된 샘플링 방법 | |
CN115309584A (zh) | 键值存储故障后的分区存储器装置恢复 | |
US11681706B2 (en) | System and method for accelerated data search of database storage system | |
US20220050807A1 (en) | Prefix probe for cursor operations associated with a key-value database system | |
US10782906B1 (en) | Memory subsystem interface to relate data and to retrieve related data | |
US11762913B2 (en) | Cursor seek operations using deleted record spans | |
US11714577B2 (en) | Snap read optimization for media management for a memory sub-system | |
US20240193144A1 (en) | Database management |
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 |