CN116910019A - 用于具有计算存储设备的跨层键-值存储库的系统和方法 - Google Patents
用于具有计算存储设备的跨层键-值存储库的系统和方法 Download PDFInfo
- Publication number
- CN116910019A CN116910019A CN202310397876.3A CN202310397876A CN116910019A CN 116910019 A CN116910019 A CN 116910019A CN 202310397876 A CN202310397876 A CN 202310397876A CN 116910019 A CN116910019 A CN 116910019A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- data node
- host
- storage device
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000013500 data storage Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 92
- 230000008569 process Effects 0.000 claims description 18
- 230000002085 persistent effect Effects 0.000 claims description 9
- 230000008901 benefit Effects 0.000 description 15
- 238000012546 transfer Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 235000008694 Humulus lupulus Nutrition 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013075 data extraction Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种数据存储的方法,该方法包括在键‑值储存库的主机处接收访问存储在键‑值储存库的存储设备上的数据节点的请求,在主机上的主机高速缓存中定位与数据节点相对应的地址,以及确定数据节点在存储设备上的内核高速缓存中。
Description
相关申请的交叉引用
本申请要求于2022年4月14日提交的题为″具有计算存储设备的跨层键-值存储库″的第63/331,032序列号的美国临时申请的优先权和权益,其全部内容通过引用并入本文。
技术领域
根据本公开的实施例的一个或多个方面涉及用于数据存储的系统和方法。
背景技术
本背景技术部分旨在仅提供上下文,并且本部分中的任何实施例或构思的公开并不构成对所述实施例或构思是现有技术的承认。
在计算机存储领域中,键-值存储库(store)可以在包括主机(例如,主机计算机)和存储设备(例如,包括用于存储数据的存储介质的设备)的存储系统(例如,系统)上实现。系统可以将数据节点存储在存储设备的存储器(例如,非易失性存储器)处。数据节点可以由系统的用户访问。系统可以基于来自用户的请求在数据节点处执行各种操作。系统可以识别数据节点的数据节点位置和数据节点中的键-值位置,基于键-值对来对其执行操作。例如,系统可以处理与键相关联的请求,以(i)搜索并找到对应于键的值(例如,数据对象)的位置,以及(ii)相对于该值执行与请求相关联的操作。
因此,需要一种用于有效地处理关于键-值存储库的请求的方法、设备和系统。
发明内容
本公开的实施例的各方面涉及计算机存储系统,并且提供对键-值存储库的改进。
根据本公开的一些实施例,提供一种数据存储的方法,所述方法包括在键-值存储库的主机处接收访问存储在键-值存储库的存储设备上的数据节点的请求,在主机上的主机高速缓存中定位与数据节点相对应的地址,以及确定数据节点在存储设备上的内核高速缓存中。
存储对应于数据节点的元数据的主机高速缓存的条目的偏移可以与存储数据节点的内核高速缓存的条目的偏移相同。
所述方法还可以包括:由主机在主机上的搜索层中定位地址,引起内核调用以用于将处理请求的控制从主机转移到存储设备的处理电路,由处理电路处理数据节点上的数据,将数据节点写入内核高速缓存作为更新的数据节点,以及由主机引起更新的数据节点从内核高速缓存到存储设备的存贮器(storage)的对等写入。
搜索层可以包括树结构,存储设备上的数据层包括数据节点,数据节点对应于与树结构相对应的叶节点的双链表内的叶节点,并且在搜索层中定位地址可以包括在树结构的内部节点中查找部分键。
该方法还可以包括确定数据节点中的可用空间量小于用于容纳与请求相对应的键的空间量,以及更新数据节点的元数据以指向扩展节点,数据节点的元数据可以指示第一版本号,并且扩展节点的元数据可以指示第一版本号。
该方法还可以包括由板块分配器(slab allocator)将扩展节点分配给来自不同大小的数据页的池的数据节点。
该方法还可以包括更新扩展节点,更新数据节点的元数据以指示第二版本号,更新扩展节点的元数据以指示第二版本号,其中,第二版本号将数据节点标识为更新的数据节点,并且将扩展节点标识为更新的扩展节点;以及更新所述更新的数据节点的元数据以指向更新的扩展节点。
该方法还可以包括以非原地(out-of-place)的方式将更新的扩展节点写入存储设备的存贮器,以及以原地(in-place)的方式将更新的数据节点写入存贮器。
所述方法还可以包括由主机获取数据节点上的读取锁,或由主机获取数据节点上的写入锁。
根据本公开的其他实施例,提供一种用于数据存储的系统,包括主机和存储设备,其中,主机被配置为接收访问存储在存储设备上的数据节点的请求,在主机上的主机高速缓存中定位与数据节点相对应的地址,并且确定数据节点在存储设备上的内核高速缓存中。
存储对应于数据节点的元数据的主机高速缓存的条目的偏移可以与存储数据节点的内核高速缓存的条目的偏移相同。
主机可以被配置为在主机上的搜索层中定位地址,确定数据节点在内核高速缓存中,引起内核调用以用于将处理请求的控制从主机转移到存储设备的处理电路,以及引起更新的数据节点从内核高速缓存到存储设备的存贮器的对等写入,并且存储设备的处理电路可以被配置为处理数据节点上的数据,并且将数据节点写入内核高速缓存作为更新的数据节点。
搜索层可以包括树结构,存储设备上的数据层可以包括数据节点,数据节点可以对应于与树结构相对应的叶节点的双链表内的叶节点,并且主机可以被配置为基于在树结构的内部节点中定位部分键来搜索地址。
该系统可以被配置为确定数据节点中的可用空间量小于用于容纳与请求相对应的键的空间量,并且更新数据节点的元数据以指向扩展节点,数据节点的元数据可以指示第一版本号,并且扩展节点的元数据可以指示第一版本号。
该系统可以被配置为更新扩展节点,更新数据节点的元数据以指示第二版本号,更新扩展节点的元数据以指示第二版本号,第二版本号可以将数据节点标识为更新的数据节点,并且可以将扩展节点标识为更新的扩展节点,并且更新所述更新的数据节点的元数据以指向更新的扩展节点。
根据本公开的其他实施例,提供一种存储设备,包括处理电路、持久性存储器和链接到处理电路和持久性存储器的公共存储器区域,其中处理电路被配置为通过从公共存储器区域上的内核高速缓存的条目读取数据节点来处理访问存储在存储设备上的所述数据节点的请求。
处理电路可以被配置为通过对数据节点执行数据操作来处理请求,并且将数据节点写入内核高速缓存作为更新的数据节点。
处理电路可以被配置为更新指向数据节点的扩展节点,扩展节点和数据节点可以指示第一版本号,更新数据节点的元数据以指示第二版本号,更新扩展节点的元数据以指示第二版本号,第二版本号可以将数据节点标识为更新的数据节点,并且可以将扩展节点标识为更新的扩展节点,并且更新所述更新的数据节点的元数据以指向更新的扩展节点。
处理电路可以被配置为以原地的方式将更新的扩展节点写入存储设备的存贮器。
处理电路可以被配置为以原地的方式将更新的数据节点写入存储设备的存贮器。
附图说明
参考以下附图描述本公开的非限制性和非穷举性实施例,其中除非另有说明,否则相同的附图标记在各个视图中指代相同的部分。
图1是描绘根据本公开的一些实施例的包括搜索层和数据层的数据存储系统的系统图;
图2是描绘根据本公开的一些实施例的包括主机高速缓存和内核高速缓存的数据存储系统的系统图;
图3A是描绘根据本公开的一些实施例的数据存储系统内的数据存储方法的操作的组合流程图和系统图;
图3B是描绘根据本公开的一些实施例的对应于图3A的操作的数据存储方法的流程图;
图4是描绘根据本公开的一些实施例的提供可变长度键-值支持的数据存储系统内的数据存储方法的操作的组合流程图和系统图;
图5是描绘根据本公开的一些实施例的提供可变键-值支持和基于版本的崩溃一致性(crash consistency)的数据存储系统内的数据存储方法的操作的组合流程图和系统图;
图6是描绘根据本公开的一些实施例的用于读取(或查找)请求(包括主机侧并发控制)的数据存储方法的流程图;以及
图7是描绘根据本公开的一些实施例的用于写入请求(包括主机侧并发控制)的数据存储方法的流程图。
贯穿附图的若干视图,对应的附图标记指示对应的组件。本领域技术人员将理解,附图中的元件是为了简单和清楚而示出的,并且不一定按比例绘制。例如,附图中的一些元件、层和区域的尺寸可以相对于其他元件、层和区域被夸大,以帮助提高清楚性和对各种实施例的理解。此外,可能未示出与实施例的描述无关的常见但很好理解的元件和部件,以便于更少地阻碍这些各种实施例的视图并使描述清楚。
具体实施方式
通过参考实施例的详细描述和附图,可以更容易地理解本发明构思的特征和实现本发明构思的方法。在下文中,将参考附图更详细地描述实施例。然而,所描述的实施例可以以各种不同的形式体现,并且不应被解释为仅限于本文所示的实施例。相反,提供这些实施例作为示例,使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达本发明构思的各方面和特征。因此,可以不描述对于本领域普通技术人员完全理解本发明构思的方面和特征而言不必要的过程、元件和技术。
除非另有说明,否则贯穿附图和书面描述,相同的附图标记、字符或其组合表示相同的元件,因此,将不重复其描述。此外,为了使描述清楚,可能未示出与实施例的描述无关的部分。在附图中,为了清楚起见,元件、层和区域的相对尺寸可以被夸大。
在详细描述中,出于解释的目的,阐述了许多具体细节以提供对各种实施例的透彻理解。然而,显而易见的是,可以在没有这些具体细节或具有一个或多个等同布置的情况下实践各种实施例。
应当理解,尽管本文可以使用术语″第零″、″第一″、″第二″、″第三″等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语用于将一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分区分开。因此,在不脱离本公开的精神和范围的情况下,下面描述的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
应当理解,当元件或组件被称为″在另一元件或组件上″、“连接到″或“耦接到″另一元件或组件时,它能够直接在另一元件或组件上、连接到或耦接到另一元件或组件,或者可以存在一个或多个中间元件或组件。然而,“直接连接/直接耦接″是指一个组件直接连接或耦接另一组件而没有中间组件。同时,可以类似地解释描述组件之间的关系的其他表达,诸如“在……之间″、“直接在……之间″或“邻近于″和“直接邻近于″。另外,还应当理解,当元件或组件被称为在两个元件或组件“之间″时,它能够是两个元件或组件之间的唯一元件或组件,或者也可以存在一个或多个中间元件或组件。
本文使用的术语仅用于描述特定实施例的目的,并不旨在限制本公开。如本文所使用的,单数形式“一″和“一个″旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”、“正包括”、″具有”、″正具有”、″包含”和″正包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。如本文所使用的,术语″和/或″包括一个或多个相关联的所列项目的任何和所有组合。
如本文所用,术语″基本上″、″约″、″大约″和类似术语用作近似术语而不是程度术语,并且旨在考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。如这里所使用的,″约″或″大约″包括所描述值并意味着落入考虑所提及的测量以及与特定量的测量相关联的误差(即,测量系统的限制)而如本领域普通技术人员确定的特定值的偏离可接受范围内。例如,″约″可以表示在一个或多个标准偏差内,或在所描述值的±30%、20%、10%、5%内。此外,当描述本公开的实施例时,“可以″的使用是指“本公开的一个或多个实施例″。
当可以不同地实现一个或多个实施例时,可以与所描述的顺序不同地执行特定的处理顺序。例如,两个连续描述的过程可以基本上同时执行或者以与所描述的顺序相反的顺序执行。
所描述的(例如,在本文包括的任何系统图中)任何组件或组件的任何组合可以用于执行本文包括的任何流程图的一个或多个操作。此外,(i)操作仅仅是示例,并且可以涉及未明确覆盖的各种附加操作,以及(ii)可以改变操作的时间顺序。
可以利用任何合适的硬件、固件(例如,专用集成电路)、软件、或软件、固件和硬件的组合来实现根据本文描述的本公开的实施例的电子或电气设备和/或任何其他相关设备或组件。例如,这些设备的各种组件可以形成于一个集成电路(IC)芯片上或分开的IC芯片上。此外,这些设备的各种组件可以在柔性印刷电路膜、带载封装(TCP)、印刷电路板(PCB)上实现,或者形成在一个基板上。
此外,这些设备的各种组件可以是在一个或多个计算设备中运行在一个或多个处理器上的进程或线程,其执行计算机程序指令并与其他系统组件交互以用于执行本文描述的各种功能。计算机程序指令存储在存储器中,该存储器可以在使用标准存储器设备(诸如例如随机存取存储器(RAM))的计算设备中实现。计算机程序指令还可以存储在其他非暂时性计算机可读介质中,例如CD-ROM、闪存驱动器等。此外,本领域技术人员应当认识到,在不脱离本公开的实施例的精神和范围的情况下,各种计算设备的功能可以组合或集成到单个计算设备中,或者特定计算设备的功能可以分布在一个或多个其他计算设备上。
除非另有定义,否则本文使用的所有术语(包括技术和科学术语)具有与本发明构思所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解,除非在本文中明确地如此定义,否则诸如在常用词典中定义的那些术语的术语应被解释为具有与其在相关领域和/或本说明书的上下文中的含义一致的含义,并且不应以理想化或过度正式的意义来解释。
如上所述,在计算机存储领域中,键-值存储库可以在存储系统(例如,系统)上实现。该系统可以包括主机(例如,主机计算机)和存储设备(例如,包括用于存储数据的存储介质的设备)。存储设备可以将数据节点存储在存储设备的存储器(例如,非易失性或持久性存储器)处。系统的用户可以请求访问数据节点。例如,用户可以使数据访问请求(例如,写入请求、读取请求等)被系统接收。系统可以基于数据访问请求找到数据节点并执行关于数据节点的操作(例如,写入操作、读取操作等)。
数据节点可以包括对应于相同部分键的键-值对集合。部分键可以存储在系统的搜索层中。数据节点可以包括元数据部分和键-值对的范围。例如,每个数据节点可以保存某个范围的键-值对,使得当前数据节点(例如,第一数据节点)中的最大值键可以小于下一数据节点(例如,与第一数据节点相邻的第二数据节点)的最小值键。因此,可以维持(例如,提供)相邻数据节点之间的键范围的升序。
系统可以被配置为执行关于数据节点的各种操作。例如,系统可以基于来自用户的请求对数据节点执行插入(键,值)、更新(键,值)、移除(键)、查找(键)或扫描(键,范围)操作。基于接收到键-值对,系统可以识别数据节点,然后可以识别数据节点内要执行操作的精确位置。然后,系统可以执行与接收的键-值对相关联的操作。例如,系统可以处理与键-值对中的键相关联的请求,以(i)定位对应于键的值(例如,对象),并且(ii)关于数据节点处的值执行与请求相关联的操作。
因此,开发用于更有效地处理关于键-值存储库的请求的方法、设备和系统会是合适的。
一些键-值存储库可以被设计为仅使用主机的计算资源或仅使用存储设备(例如,固态驱动器(SSD))的计算资源。例如,一些键-值存储库可以使用主机计算资源来执行控制平面操作和数据操纵(例如,数据处理)操作两者。在这样的键-值存储库中,主机处理器(例如,中央处理单元(CPU))可以从用户(例如,从对应于用户的应用)接收请求以查找(例如,定位)键并将请求的数据提取(fetch)到主机动态随机存取存储器(DRAM)。CPU可以使用数据来处置计算。
一些键-值存储库可以具有计算存储能力。也就是说,键-值存储库可以使用包括处理电路(例如,加速器,诸如现场可编程门阵列(FPGA))的存储设备来实现。FPGA可以用于仅作为“服务”来操纵数据层(例如,以执行纯计算,诸如编码或解码)。
实现有计算存储能力的一些键-值存储库可以使用存储设备资源来执行控制平面操作和数据操纵(例如,数据处理)操作两者。也就是说,键-值存储库可以完全在存储设备上实现。在这样的键-值存储库中,存储设备的处理电路可以从用户应用接收请求以查找(例如,定位)键并将请求的数据提取到存储设备DRAM以供处理电路处置计算。
为了提供数据持久性和操作原子性(operation atomicity),诸如为了防止由于设备故障导致的数据丢失,可以根据用于数据恢复的崩溃一致性策略来实现键-值存储库。
一些键-值存储库可以实现有包含写入前日志记录(WAL)(例如,撤销(UNDO)日志记录和重做(REDO)日志记录)的崩溃一致性策略。例如,在WAL中,在对应的数据位置可以根据写入操作被修改之前,可以将对键-值存储库进行的任何写入存储在存留在存储设备的非易失性存储器上的日志文件(例如,写入前日志)中。
随着数据存储的快速进步,仅使用主机或存储设备的计算资源的键-值存储库设计会遭受计算瓶颈和/或网络瓶颈(例如,CPU瓶颈)。也就是说,尽管存储设备已经变得更快和更智能,但是由于例如CPU不能足够有效地处理和传送数据,它们的性能可能无法完全实现。在利用具有计算存储能力的存储设备(下文中,计算存储设备)实现的键-值存储库中,传统的基于主机的高速缓存可能未充分利用由计算存储设备的处理电路(例如,FPGA)与存储设备的存储器(例如,非易失性存储器或存贮器)之间的对等(P2P)传送提供的优点。因此,FPGA的计算能力可能未被充分利用。
关于崩溃一致性策略,实现有基于日志记录的一致性策略的键-值存储库会导致各种问题,诸如增加的写入放大、输入/输出(I/O)相互依赖性和缓慢的请求处理。
为了提高键-值存储库性能,本公开的实施例的各方面提供一种键-值存储库,其可以被逻辑地划分以利用主机的主机处理器和计算存储设备的处理电路两者。例如,根据本公开的键-值存储库可以在预处理流水线(例如,用于人工智能(AI)和机器学习(ML)应用的预处理流水线)中减少CPU瓶颈问题并且减少数据提取停滞。
在一些实施例中,数据平面计算可以从主机处理器卸载到计算存储设备,以利用计算存储设备的高速带宽。
在一些实施例中,键-值存储库可以划分成两部分:(1)由主机处理器处理的搜索层(例如,B树中的内部节点);以及(2)由计算存储设备上的处理电路处理的数据层(例如,B树中的叶节点)。尽管本文公开的搜索层和数据层的示例可以指B树索引结构,但是应当理解,本公开不限于此。例如,根据本公开的实施例的各方面的搜索层和数据层可以经由任何合适的排序索引结构(例如,B+树、特里树或自适应基数树)来实现。
搜索层可以存储部分键。数据层可以存储与属于特定数据节点的键相对应的键指纹。因此,键指纹可以识别对应于键-值对的值在数据存储库内的精确位置。
如下面参考附图进一步详细讨论的,根据一个或多个实施例的键-值存储库(例如,跨层键-值存储库)可以使用跨层方法来在控制平面中使用主机处理器,并且将数据平面计算卸载到计算存储设备的处理电路上。因此,键-值存储库可以利用计算存储设备的高带宽。
键-值存储库还可以包括下面进一步详细讨论的以下特征中的一个或多个:(1)用于提高的吞吐量和可伸缩性的跨层方法;(2)用于改进的数据局部性的跨层高速缓存(例如,镜像高速缓存)(例如,以减少或消除不必要的(例如,冗余的)数据移动);以及(3)用于简化的崩溃一致性的基于版本的崩溃一致性(例如,基于版本编号而不是写入前日志记录的崩溃一致性策略)。
除了具有提高的效率之外,键-值存储库可以被集成到计算流水线中以显著减少数据提取停滞,并且实现将预处理卸载到计算存储设备上的优点。
另外,尽管本公开涉及耦接到一个计算存储设备的主机,但是本公开不限于此。例如,在一些实施例中,根据本公开的键-值存储库可以利用具有连接在服务器中的多个存储设备和加速器的异构系统。
用于具有计算存储设备的跨层键-值存储库的系统和方法可以提供具有减少的瓶颈(例如,更大的总体系统带宽)、改进的吞吐量、可伸缩性和数据局部性的键-值存储库。这样的改进可以通过将键-值存储库逻辑地划分为以下各项来实现:(1)存储在主机存储器上并由主机处理器操纵(例如,处理)的搜索层;以及(2)存储在计算存储设备上并由计算存储设备的处理电路处理的数据层。此外,在一些实施例中,跨层键-值存储库可以通过实现有基于版本的崩溃一致性而不是基于日志记录的崩溃一致性来提供简化的崩溃一致性。
例如,键-值存储库可以被实现为系统或在系统上实现,该系统包括主机和存储设备,该存储设备包括持久性存储器(例如,存储设备的固态驱动器(SSD)或其他非易失性存储器部分)、处理电路(例如,FPGA)、以及链接到持久性存储器和处理电路(例如,经由P2P存储器)的公共存储器区域(CMA)。
主机可以存储和操纵(例如,处理)包括排序索引(例如,树结构)的搜索层。主机还可以存储和操纵(例如,处理)键-值存储库的“镜像高速缓存″的主机-高速缓存部分。存储设备可以存储和处理包括树结构的叶节点(例如,数据节点)的数据层。存储设备还可以存储和处理镜像高速缓存的内核高速缓存部分。
主机高速缓存可以被实现为二维(2D)阵列。存储对应于数据节点的元数据的主机高速缓存的每个条目可以存储在存储设备处。
内核高速缓存可以被实现为存储在CMA中的数据节点的一维(1D)阵列。主机可以以与存储在内核高速缓存内的数据节点的偏移相同的偏移将主机高速缓存的每个条目存储在主机高速缓存内(例如,以减少系统内的数据移动量)。
键-值存储库可以在主机处理器(例如,CPU)与存储设备的处理电路(例如,FPGA)之间分配责任。例如,键-值存储库可以拆分对访问存储在存储设备上的数据节点的处理请求的控制。因此,主机处理器(host processor)可以在控制平面中起作用以触发(例如,引起或发出)内核调用、发出去往或来自持久性存储器(下文中,存贮器)的数据传送、以及管理崩溃一致性。存储设备的处理电路可以处置数据平面操作,使得键-值存储库可以利用计算存储设备的相对较高的访问吞吐量。
另外,键-值存储库可以被实现为利用基于版本的崩溃一致性机制来提供可变长度键-值支持,该机制维护版本元数据以避免日志记录技术(例如,WAL)的开销。
因此,与其他键-值存储库设计相比,根据本公开的实施例的各方面的键-值存储库可以提供若干改进和优点,包括:(1)通过在逻辑上拆分成搜索层和数据层以仅使用主机处理器作为控制平面并将数据平面任务卸载到处理电路来减少瓶颈;(2)通过经由P2P存储器将数据传送到处理电路来改进I/O带宽利用率,并且因此减少网络跳跃(hop)(例如,减少存贮器与主机之间的数据传送的数量),从而增加总吞吐量;(3)通过利用原子更新(例如,4KB大小的更新)实现基于版本的崩溃一致性来避免日志记录(例如,计算上昂贵/数据密集的基于日志记录的恢复);以及(4)由于搜索层和数据层在主机处理器与处理电路之间在逻辑上和物理上拆分,允许可伸缩性而没有同步问题。
图1是描绘根据本公开的一些实施例的包括搜索层和数据层的数据存储系统的系统图。
参考图1,系统1可以包括主机100,主机100可以耦接到存储设备200(例如,计算存储设备)。主机100可以包括主机处理器110(例如,主机CPU)和主机存储器120(例如,主机DRAM)。
存储设备200可以包括(例如,可以是)计算存储设备,其包括存贮器210(例如,持久性或非易失性存储器)、存储控制器212(例如,非易失性快速存储器(NVMe)辅助控制器)、处理电路220(例如,诸如FPGA的加速器)和公共存储器区域(CMA)230(例如,计算存储设备的P2P存储器,其可以是与存贮器210和处理电路220两者链接或与之共享的处理电路220的DRAM的一部分)。
存储设备200可以存储一个或多个数据节点DN(也参见图4)。每个数据节点DN可以包括键-值对集合(例如,多个键-值对,其可以以升序排列,并且在图1和图4中被描绘为“AAA”和“AAB”等)。对应数据节点中的键-值对集合可以对应于主机存储器120的搜索层150中的相同部分键。
系统1可以包括(例如,可以是)具有跨层架构的键-值存储库,其中诸如处理数据访问请求的责任在主机处理器110与处理电路220之间被划分,以在传统键-值存储库上改进性能。例如,搜索层150可以存储在主机存储器120上,并且数据层250可以存储在存储设备200上(例如,存贮器210中)。搜索层150可以由主机处理器110操纵(例如,处理、维护或控制)。数据层250可以由处理电路220处理。
因此,主机处理器110可以充当控制平面并且可以执行合适的操作,诸如触发FPGA内核调用(例如,指向处理电路220的内核调用)、发出(例如,引起)去往和来自存贮器210的数据传送、以及管理并发控制(例如,管理来自多个请求的对存储设备200的并发访问)等。此外,处理电路220可以管理数据平面的操作,诸如操纵(例如,处理)和处置数据(例如,执行数据节点更新和更新用于更新的数据节点的对应元数据)。
通过将搜索层150的操纵(例如,处理)委派给主机处理器110,同时将数据层250操作委派给处理电路220,可以更适当地使用不同的计算能力源。例如,系统1可以利用存储210与处理电路220之间的内部带宽(例如,高内部带宽),同时还减少(例如,最小化)由于存贮器210与处理电路220之间的P2P数据传送(例如,直接数据传送)而导致的数据移动。
搜索层150可以被实现为例如主机存储器120上的树结构,其存储部分键(例如,将部分键存储为B树元结构中的内部节点)。尽管搜索层150和数据层250在本文中被描述为对应于树结构,但是应当理解,本公开不限于此,并且其他排序的索引结构可以是合适的。
数据层250可以被实现为对应于存储设备200上的数据节点DN的叶节点(例如,B树结构中的叶节点)的双链表(doubly-linked list)。搜索层(例如,树结构)可以帮助快速查找点查询。作为双链表的数据层可以以升序存储键-值对,从而实现快速范围查询。因此,与对范围操作不起作用的一些传统键-值存储库不同,跨层键-值存储库可以允许系统1适用于点查询(例如,对应于单个键-值对的操作)和范围查询(例如,对应于多于一个连续键-值对的操作)两者。
跨层键-值存储库的实施例的各方面可以提供主机CPU处理(例如,范围查询处理)的灵活性和利用处理电路220(例如,存贮器上FPGA)进行近数据处理(例如,叶节点中的查找操作、数据压缩和用于深度学习的预处理)的框架。另外,利用具有解耦的搜索层和数据层的跨层键-值存储库,该架构可以容易地扩展到连接到网络上的多个存储设备200的非统一存储器访问(NUMA)节点上。
图2是描绘根据本公开的一些实施例的包括主机高速缓存和内核高速缓存的数据存储系统的系统图。
参考图2,系统1可以包括镜像高速缓存7(或跨层高速缓存),其跨主机100的主机存储器120和存储设备200的CMA 230而拆分。镜像高速缓存7可以包括主机存储器120上的主机高速缓存170(例如,元数据高速缓存)和CMA 230上的内核高速缓存270(例如,数据高速缓存)。镜像高速缓存7提供数据局部性(例如,改进的数据局部性)。
在主机100上维护元数据高速缓存使得主机处理器110能够在控制平面中起作用,并且允许CMA 230上的数据高速缓存利用由计算存储设备200提供的高速对等数据传送。通过将数据层计算卸载到存储设备200(其通常可以由传统键-值存储库的主机执行),来自存贮器210的数据访问粒度可以是数据页的大小(例如,4KB大小)。
尽管在这种情况下使用传统的基于主机的高速缓存可以提供足够的容量来存储数据节点DN(例如,数据页),但是使用跨层高速缓存可以提供优于使用基于主机的高速缓存的若干优点和改进。例如,使用跨层高速缓存可以:(1)减少访问数据页的时延;(2)减少网络流量,因为跳数(例如,存贮器210与主机100之间的数据传送的数量)将减少;以及(3)利用处理电路220与存储设备200之间的P2P传送的优点,并且由此利用处理电路220的计算能力。
计算存储设备200可以通过内部数据路径连接存贮器210和处理电路220,从而实现称为对等数据传送的高速数据传送。该连接可以利用处理电路220的片上软PCIe交换器(PCIe switch)和设备存储器来实现。计算存储设备200可以将存贮器210和处理电路220的存储器(例如,DRAM)两者映射到外围组件互连高速(PCIe)条260(例如,PCIe条存储器)上。处理电路220的存储器暴露于PCIe条260的部分可以包括(例如,可以是)CMA 230。
主机高速缓存170可以作为组关联高速缓存(set-associative cache)存储在主机存储器120上,该组关联高速缓存存储元数据并且允许主机处理器110在控制平面中起作用以处置高速缓存维护操作并管理并发访问。主机高速缓存170可以是存储对应数据节点DN的元数据的散列表。例如,每个主机高速缓存条目172可以存储元数据,诸如逻辑块地址(LBA)、时间戳、检查占用的标志、用于驱逐的最近最少使用(LRU)信息、以及用于并发高速缓存访问的锁定信息。主机高速缓存170可以是二维(2D)阵列。
内核高速缓存270可以存储在CMA 230上以存储数据节点DN,并且使得跨层键-值存储库能够利用由计算存储设备200提供的优点,诸如P2P访问和减少的网络时延。内核高速缓存270可以是平坦化的一维(1D)阵列(例如,大型P2P缓冲器)。
名称“镜像高速缓存″指示其布局特征。例如,主机高速缓存170上的每个主机高速缓存条目172可以以与对应于内核高速缓存270上的对应实际数据节点DN的内核高速缓存条目272的偏移相同的偏移来存储其相应的元数据(例如,主机高速缓存170中的第十条目可以包括对应于存储在内核高速缓存270的第十条目处的数据节点DN的元数据)。因此,主机高速缓存170的布局可以镜像内核高速缓存270的布局。因此,镜像高速缓存7可以减少数据移动的数量,这是因为例如主机高速缓存170中LBA的存在可以指示内核高速缓存270中对应数据节点DN的存在。
图3A是描绘根据本公开的一些实施例的系统内的数据存储方法的操作的组合流程图和系统图。
参考图3A,用于处理访问存储在跨层键-值存储系统1中的存储设备200上的数据节点DN的数据访问请求的方法3000A可以包括以下操作。
主机100可以接收数据访问请求(例如,具有键-值对的插入操作)(操作3001A)。
可以将控制传递到主机处理器110,主机处理器110可以在主机存储器120内部具有搜索层150,以使得能够在搜索层150中查找键(例如,部分键),注意搜索层150可以缩小到内部指向数据节点DN的LBA的叶节点(操作3002A)。
主机处理器110可以使用LBA来查找(例如,搜索)也存在于主机存储器120上的主机高速缓存170,以确定对应数据节点DN是否存在于镜像高速缓存7的内核高速缓存270中(操作3003A)。
主机处理器110可以搜索主机高速缓存170的元数据,并且搜索可以导致(i)高速缓存未命中,其中对应数据节点DN缺失于内核高速缓存270或不存在于内核高速缓存270中,或者(ii)高速缓存命中,其中数据节点DN存在于内核高速缓存270中(操作3004A)。
基于确定已经发生高速缓存未命中,主机处理器110可以从存贮器210向位于CMA230上的内核高速缓存270发出(例如,触发或引起)读取(例如,P2P读取)(操作3005A)。
响应于P2P读取的发出,可以将控制传递到存储设备200以将数据节点DN填充(populate)到内核高速缓存270上(操作3006A)。在将数据节点DN填充到内核高速缓存270中之后,可以将控制传递回主机100。
基于确定高速缓存命中的发生,或者基于确定数据节点DN已经被填充在内核高速缓存270上,主机100可以发出(例如,可以触发或引起)内核调用(例如,插入内核调用),这可以将控制传递到处理电路220(操作3007A)。
响应于内核调用,处理电路220可以从内核高速缓存270读取数据节点DN(例如,可以将数据节点DN读取到处理电路220中的本地存储器中),并且可以检索或生成特定键的指纹(fp)以缩小数据节点DN内键-值对的确切位置(操作3008A)。
基于确定键-值对的确切位置,处理电路220可以对数据节点DN执行操作(例如,插入操作)(例如,处理电路220可以操纵(例如,处理或执行一个或多个操作)处理电路220中的本地存储器中的数据节点DN,并且可以将更新的数据节点DN填充回到内核高速缓存270上)(操作3009A)。
基于由处理电路220对数据节点DN的操作的完成,可以将控制返回到主机100以将更新的数据节点DN存留(例如,写入)到存贮器210(例如,通过发出从CMA 230回到存贮器210的P2P写入)(操作3010A)。
一旦更新的数据节点DN已经被存留到存贮器210,该方法就可以完成并退出(操作3011A)。
图3B是描绘根据本公开的一些实施例的对应于图3A的操作的数据存储方法的操作的流程图。
参考图3B,在不描绘系统1的结构的情况下,以上关于图3A讨论的操作(例如,操作3001A至3011A)以流程图的形式以简化的方式讨论。
例如,主机处理器110可以接收与键相关联的请求,以访问数据节点DN(操作3001B)。
主机100(例如,主机100的主机处理器110)可以在搜索层150中查找(例如,定位)键,以找到指示数据节点DN的位置的信息(例如,找到数据节点DN的LBA)(操作3002B)。
主机100可以在镜像高速缓存7的主机高速缓存170部分中查找(例如,搜索或定位)LBA(操作3003B)。
基于搜索主机高速缓存170,主机100可以确定数据节点DN是否存在于镜像高速缓存7的内核高速缓存270部分中(操作3004B)。
基于确定高速缓存未命中,主机100可以发出(例如,触发或引起)从存贮器210到CMA 230的P2P读取(操作3005B)。
存储设备200可以将数据节点DN从存贮器210填充到内核高速缓存270上(操作3006B)。
基于确定高速缓存命中,或者基于确定数据节点DN已经被填充到内核高速缓存270中,主机100可以基于请求(例如,在操作3001B处接收的请求)发出(例如,触发或引起)内核调用(操作3007B)。
响应于内核调用,可以将控制传递到处理电路220以在数据节点DN上执行请求的数据操纵(例如,数据处理)操作,并且处理电路220可以获得指纹(fp)以确定数据节点DN内键-值对的确切位置(操作3008B)。
处理电路220可以在数据节点DN上执行请求的数据操纵(例如,数据处理)操作(操作3009B)。
主机100可以发出(例如,触发或使得)P2P写入以将更新的数据节点DN从CMA 230存留到存贮器210(操作3010B)。
该方法可以完成,并且一旦更新的数据节点DN已经被存留到存贮器210,就可以退出操作(操作3011A)。
图4是描绘根据本公开的一些实施例的提供可变长度键-值支持的系统内的数据存储方法的操作的组合流程图和系统图。
参考图4,在一些实施例中,系统1可以提供可变长度键-值支持。另外,如下面参考图5所讨论的,可变长度键-值支持可以被实现为支持基于版本的崩溃一致性的方法。
在一些实施例中,AI/ML应用可以利用跨层键-值存储系统1,AI/ML应用处理跨越多个数据页的相对大量的数据,诸如图像、视频等。因为根据本公开的实施例的各方面,每个数据节点DN可以具有等于一个数据页的大小(例如,4KB)的固定大小,所以系统1可以被配置为通过将扩展节点EN指派(例如,分配或链接)给对应数据节点DN来支持可变长度键-值对,以适应更大的键-值对。扩展节点EN可以由板块分配器SA(例如,主机侧辅助功能)从不同大小的数据页(例如,4KB、8KB、16KB、32KB等)的池中提供和分配,以链接到对应数据节点DN。
因此,提供可变长度键-值支持的方法4000可以包括:在主机100处接收访问存储在存储设备200处的数据节点DN的请求(例如,具有键-值对的插入操作)(操作4001);查找(例如,定位)对应于键-值对的对应数据节点DN(操作4002);确定数据节点DN缺少空闲空间(例如,确定数据节点DN中的可用空间量小于用于容纳该请求的空间量)(操作4003);更新数据节点DN的元数据MD以标记扩展节点EN的存在,并将扩展节点EN的指纹添加到数据节点DN(例如,在数据节点DN内实现从数据节点DN到扩展节点EN的指针)(操作4004);以及从板块分配器SA提取扩展页,并将元数据和键-值对添加到扩展节点EN(操作4005)。
图5是描绘根据本公开的一些实施例的提供可变键-值支持和基于版本的崩溃一致性的系统内的数据存储方法的操作的组合流程图和系统图。
参考图5,在一些实施例中,跨层键-值存储系统1可以提供基于版本的崩溃一致性策略,其使用版本化以及原子读取/写入(例如,4KB原子读取/写入)以避免与传统的基于日志记录的崩溃一致性技术相关联的开销成本。根据本公开的实施例的各方面的基于版本的崩溃一致性模型可以利用原子块读取/写入(例如,4KB块读取/写入)来进行非原地的更新(下面讨论)并且通过在崩溃时扫描整个盘(例如,存贮器210)来识别有效数据页。
利用版本化,系统1可以通过使用以下方案来利用原子读取/写入。可以以″原地″的方式写入对数据节点DN的更新。例如,对数据节点DN的更新可以在与其先前版本相同的文件偏移处(例如,在数据节点DN的先前版本的原始位置处)被写入到存贮器。
对扩展节点EN的更新(其大小大于一个数据页的大小并且被分配给数据节点DN)可以以″非原地″的方式被更新到存贮器。例如,扩展节点EN的先前版本可以保持在其原始位置(例如,可以不被篡改),并且更新的扩展节点EN可以被写入与扩展节点EN的先前版本不同的位置。
另外,为了提供正确性(例如,为了保证正确性),在存在扩展节点EN的情况下,可以在扩展节点EN完全存留在存贮器210上之后将数据节点DN原地地写入以提供崩溃一致性。在任何状态下的崩溃(例如,电源故障)的情况下,数据节点DN的先前版本可以被维持(例如,不被干扰),并且如果扩展节点EN的较新版本存在于存贮器210上,则它可以由板块分配器SA进行垃圾收集(例如,可供系统1上运行的其他进程使用)。
仍然参考图5,用于提供可变长度键-值支持和基于版本的崩溃一致性的方法5000可以包括以下内容。系统1可以处理更新扩展节点EN(例如,扩展节点3)的操作,其已经由板块分配器SA分配给数据节点DN(例如,数据节点3),其中数据节点DN和扩展节点EN中的每一个位于存贮器210中,并且具有相同的版本号VN(例如,0)(操作5001)。
系统1可以将数据节点DN及其扩展节点EN的副本创建到CMA 230上(操作5002)。
可以基于CMA 230中存在的数据节点DN和扩展节点EN的副本触发处理电路220,以(i)将数据节点DN和扩展节点EN读取到其本地存储器中,(ii)基于操作执行请求的计算,以及(iii)基于操作更新扩展节点EN(操作5003)。
基于操作的完成,处理电路220可以利用更新的版本号VN(例如,更新为1,使得更新的数据节点DN的元数据MD指向更新的扩展节点EN)将值(例如,更新的数据节点DN和更新的扩展节点EN)写回到CMA 230(操作5004)。
更新的扩展节点EN可以以非原地的方式存留(例如,写入)到存贮器210,使得扩展节点EN的先前版本被维持(例如,不被篡改)(操作5005)。
基于更新的扩展节点EN被完全写入存贮器210,更新的数据节点DN可以以原地的方式(例如,在数据节点DN的先前版本存在的位置处)存留到存贮器210,使得数据节点DN的先前版本被更新的数据节点DN重写,导致数据节点DN指向更新的扩展节点EN,这是因为其内部元数据MD(参见图4)已经在内部更新以指向更新的扩展节点EN(操作5006)。
通过实现方法5000,系统1可以在崩溃的情况下是弹性的。例如,如果在更新的扩展节点EN正被存留到存贮器210的同时发生崩溃(例如,在操作5005),则因为更新的扩展节点以非原地的方式正被存留到存贮器210,所以操作可以被中止并重新运行,其中部分写入的扩展节点被垃圾收集。
如果当更新的数据节点DN以原地的方式正被存留到存贮器210(例如,在操作5006处)的同时发生崩溃,则操作可以简单地被中止并重新运行(其中部分写入的扩展节点被垃圾收集),并且系统1可以回滚到数据节点DN和扩展节点EN两者的先前版本。因此,可以减少(例如,防止)数据丢失。
图6是描绘根据本公开的一些实施例的用于读取(或查找)请求的数据存储方法的操作(包括主机侧并发控制)的流程图。
参考图6,主机100(参见例如图1和图2)可以通过实现读取并发方法6000(例如,用于查找操作)来控制对存储设备200的并发访问,该方法可以包括:在搜索层上引发无锁查找(操作6001);由主机100遍历数据节点DN的元结构以获取数据节点DN上的读取锁(操作6002);由主机100使用已经找到的LBA在主机高速缓存170中查找(例如,定位或搜索)LBA,从而找到数据节点DN在内核高速缓存270上的位置(操作6003);在高速缓存命中的情况下,获取主机高速缓存槽上的读取锁(操作6004A);在高速缓存未命中的情况下,发出(例如,触发或引起)P2P读取I/O调用以将数据节点DN从存贮器210加载到内核高速缓存270(操作6004B1)并获取主机高速缓存槽(slot)上的写入锁(操作6004B2);基于内核高速缓存在找到的偏移处准备好数据节点DN,触发处理电路220(例如,FPGA)上的查找内核(系统1可以为每个内核功能发出(例如,触发或引起)多个计算单元以实现内核侧的并发)(操作6005);基于内核执行完成,可以将控制传递回主机100,并且在退出应用之前,主机100可以释放主机高速缓存槽上的读取/写入(镜像高速缓存)锁(操作6006)和数据节点DN元结构上的读取锁(操作6007);并且可以退出该方法(操作6008)。
图7是描绘根据本公开的一些实施例的用于写入(或插入)请求的数据存储方法的操作(包括主机侧并发控制)的流程图。
参考图7,主机100(参见例如图1和图2)可以通过实现写入并发方法7000(例如,用于插入操作)来控制对存储设备200的并发访问,该方法可以包括:在搜索层上引发无锁查找(操作7001);由主机100遍历数据节点DN的元结构,以获取数据节点DN上的写入锁(操作7002);由主机100使用已经找到的LBA在主机高速缓存170中查找(例如,定位)LBA,从而找到数据节点DN在内核高速缓存270上的位置(操作7003);在高速缓存未命中的情况下,发出(例如,引起或触发)P2P读取I/O调用以将数据节点DN从存贮器210加载到内核高速缓存270(操作7004A),并获取主机高速缓存槽上的写入锁(操作7004B);在高速缓存命中的情况下,获取主机高速缓存槽上的写入锁而不发出(例如,不触发或不引起)P2P读取I/O调用(操作7004B);基于内核高速缓存在找到的偏移处准备好数据节点DN,触发处理电路220(例如,FPGA)上的插入内核(系统1可以为每个内核功能发出(例如,触发或引起)多个计算单元以实现内核侧的并发)(操作7005);基于内核执行完成,可以将控制传递回主机100,并且在退出应用之前,主机100可以释放主机高速缓存槽上的写入(镜像高速缓存)锁(操作7006)和数据节点DN元结构上的写入锁(操作7007);并且可以退出应用(操作7008)。
因此,返回参考图2,本公开的实施例的各方面可以提供优于传统键-值存储库的优点和改进,诸如减少主机处理器110处的瓶颈,以及利用计算存储设备200的高内部带宽和近数据计算。这样的优点和改进可以通过在主机100与计算存储设备200之间逻辑地和物理地拆分键-值存储库来实现。因此,与搜索层150相关联的责任可以由主机100执行,而与数据层250相关联的责任可以由计算存储装置200执行。所公开的实施例还提供镜像高速缓存7的结构优点,包括存储在主机100上的主机高速缓存170和存储在计算存储设备200的CMA 230上的内核高速缓存270。
虽然已经参考本文描述的实施例具体示出和描述了本公开的实施例,但是本领域普通技术人员将理解,在不脱离所附权利要求中阐述的本公开的精神和范围的情况下,可以在其中进行形式和细节上的各种改变,其中包括其功能等同物。
Claims (20)
1.一种数据存储的方法,所述方法包括:
在键-值存储库的主机处接收访问存储在键-值存储库的存储设备上的数据节点的请求;
在主机上的主机高速缓存中定位与数据节点相对应的地址;以及
确定数据节点在存储设备上的内核高速缓存中。
2.根据权利要求1所述的方法,其中,存储对应于数据节点的元数据的主机高速缓存的条目的偏移与存储所述数据节点的内核高速缓存的条目的偏移相同。
3.根据权利要求1所述的方法,还包括:
由主机在主机上的搜索层中定位地址;
引起内核调用以用于将处理请求的控制从主机转移到存储设备的处理电路;
由处理电路处理数据节点上的数据;
将数据节点写入内核高速缓存作为更新的数据节点;以及
由主机引起更新的数据节点从内核高速缓存到存储设备的存贮器的对等写入。
4.根据权利要求3所述的方法,其中:
搜索层包括树结构;
存储设备上的数据层包括数据节点;
数据节点对应于叶节点的双链表内的叶节点,叶节点与树结构相对应;以及
在搜索层中定位地址包括在树结构的内部节点中定位部分键。
5.根据权利要求1所述的方法,还包括:
确定数据节点中的可用空间量小于用于容纳与请求相对应的键的空间量;以及
更新数据节点的元数据以指向扩展节点,数据节点的元数据指示第一版本号,并且扩展节点的元数据指示第一版本号。
6.根据权利要求5所述的方法,还包括由板块分配器将扩展节点分配给来自不同大小的数据页的池的数据节点。
7.根据权利要求5所述的方法,还包括:
更新扩展节点;
更新数据节点的元数据以指示第二版本号;
更新扩展节点的元数据以指示第二版本号,第二版本号将数据节点标识为更新的数据节点,并且将所述扩展节点标识为更新的扩展节点;以及
更新所述更新的数据节点的元数据以指向更新的扩展节点。
8.根据权利要求7所述的方法,还包括:
以非原地的方式将更新的扩展节点写入存储设备的存贮器;以及
以原地的方式将更新的数据节点写入存贮器。
9.根据权利要求1所述的方法,还包括:
由主机获取数据节点上的读取锁;或
由主机获取数据节点上的写入锁。
10.一种用于数据存储的系统,包括:
主机;以及
存储设备,
其中,主机被配置为:
接收访问存储在存储设备上的数据节点的请求;
在主机上的主机高速缓存中定位与数据节点相对应的地址;以及
确定数据节点在存储设备上的内核高速缓存中。
11.根据权利要求10所述的系统,其中,存储对应于数据节点的元数据的主机高速缓存的条目的偏移与存储数据节点的内核高速缓存的条目的偏移相同。
12.根据权利要求10所述的系统,其中,主机被配置为:
在主机上的搜索层中定位地址;
确定数据节点在内核高速缓存中;
引起内核调用以用于将处理请求的控制从主机转移到存储设备的处理电路;以及
引起更新的数据节点从内核高速缓存到存储设备的存储装置的对等写入,以及
其中,存储设备的处理电路被配置为:
处理数据节点上的数据;以及
将数据节点写入内核高速缓存作为更新的数据节点。
13.根据权利要求12所述的系统,其中:
搜索层包括树结构;
存储设备上的数据层包括数据节点;
数据节点对应于叶节点的双链表内的叶节点,叶节点与树结构相对应;以及
主机被配置为基于在树结构的内部节点中定位部分键来搜索地址。
14.根据权利要求10所述的系统,其中,系统被配置为:
确定数据节点中的可用空间量小于用于容纳与请求相对应的键的空间量;以及
更新数据节点的元数据以指向扩展节点,数据节点的元数据指示第一版本号,并且扩展节点的元数据指示第一版本号。
15.根据权利要求14所述的系统,其中,系统被配置为:
更新扩展节点;
更新数据节点的元数据以指示第二版本号;
更新扩展节点的元数据以指示第二版本号,第二版本号将数据节点标识为更新的数据节点并且将扩展节点标识为更新的扩展节点;以及
更新所述更新的数据节点的元数据以指向更新的扩展节点。
16.一种存储设备,包括:
处理电路;
持久性存储器;以及
公共存储器区域,链接到处理电路和持久性存储器,
其中,处理电路被配置为通过从公共存储器区域上的内核高速缓存的条目读取存储在存储设备上的数据节点来处理访问所述数据节点的请求。
17.根据权利要求16所述的存储设备,其中,处理电路被配置为通过以下操作来处理请求:
对数据节点执行数据操作;以及
将数据节点写入内核高速缓存作为更新的数据节点。
18.根据权利要求16所述的存储设备,其中,处理电路被配置为:
更新指向数据节点的扩展节点,扩展节点和数据节点指示第一版本号;
更新数据节点的元数据以指示第二版本号;
更新扩展节点的元数据以指示第二版本号,第二版本号将数据节点标识为更新的数据节点,并且将扩展节点标识为更新的扩展节点;以及
更新所述更新的数据节点的元数据以指向更新的扩展节点。
19.根据权利要求18所述的存储设备,其中,处理电路被配置为以非原地的方式将更新的扩展节点写入存储设备的存贮器。
20.根据权利要求18所述的存储设备,其中,处理电路被配置为以原地的方式将更新的数据节点写入存储设备的存贮器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/331,032 | 2022-04-14 | ||
US17/839,429 US20230333984A1 (en) | 2022-04-14 | 2022-06-13 | Systems and methods for a cross-layer key-value store with a computational storage device |
US17/839,429 | 2022-06-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116910019A true CN116910019A (zh) | 2023-10-20 |
Family
ID=88353767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310397876.3A Pending CN116910019A (zh) | 2022-04-14 | 2023-04-13 | 用于具有计算存储设备的跨层键-值存储库的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116910019A (zh) |
-
2023
- 2023-04-13 CN CN202310397876.3A patent/CN116910019A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176057B2 (en) | Multi-lock caches | |
Lu et al. | Dash: Scalable hashing on persistent memory | |
CN108780406B (zh) | 使用rdma共享工作数据的存储器 | |
US10929174B2 (en) | Atomic object reads for in-memory rack-scale computing | |
US10387315B2 (en) | Region migration cache | |
US10339067B2 (en) | Mechanism for reducing page migration overhead in memory systems | |
US9229869B1 (en) | Multi-lock caches | |
US11449430B2 (en) | Key-value store architecture for key-value devices | |
US7702875B1 (en) | System and method for memory compression | |
Gao et al. | Pcmlogging: Optimizing transaction logging and recovery performance with pcm | |
Alhomssi et al. | The evolution of leanstore | |
Li et al. | Phast: Hierarchical concurrent log-free skip list for persistent memory | |
Song et al. | Prism: Optimizing key-value store for modern heterogeneous storage devices | |
CN116910019A (zh) | 用于具有计算存储设备的跨层键-值存储库的系统和方法 | |
US12019548B2 (en) | Systems and methods for a cross-layer key-value store architecture with a computational storage device | |
US20230333984A1 (en) | Systems and methods for a cross-layer key-value store with a computational storage device | |
Chen et al. | Lock-free high-performance hashing for persistent memory via PM-aware holistic optimization | |
Lu et al. | Scaling dynamic hash tables on real persistent memory | |
CN116909473A (zh) | 具有计算存储设备的跨层键值存储架构的系统和方法 | |
Sendir et al. | Low Latency and High Throughput Write-Ahead Logging Using CAPI-Flash | |
Zhang et al. | HaLSM: A Hotspot-aware LSM-tree based Key-Value Storage Engine | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
Bikonda | Retina: Cross-Layered Key-Value Store using Computational Storage | |
Papagiannis | Memory-mapped I/O for Fast Storage | |
Li et al. | Eukv: Enabling Efficient Updates for Hybrid PM-DRAM Key-Value Store |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |