CN113806023A - 使用键-值固态驱动器的交互式连续设备内事务处理 - Google Patents

使用键-值固态驱动器的交互式连续设备内事务处理 Download PDF

Info

Publication number
CN113806023A
CN113806023A CN202110664611.6A CN202110664611A CN113806023A CN 113806023 A CN113806023 A CN 113806023A CN 202110664611 A CN202110664611 A CN 202110664611A CN 113806023 A CN113806023 A CN 113806023A
Authority
CN
China
Prior art keywords
transaction
requests
index structure
per
command
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
Application number
CN202110664611.6A
Other languages
English (en)
Inventor
姜亮旭
P.米什拉
奇亮奭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN113806023A publication Critical patent/CN113806023A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/14Merging, 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/32Merging, i.e. combining data contained in ordered sequence on at least two record carriers to produce a single carrier or set of carriers having all the original data in the ordered sequence merging methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

各个方面包括一种交互式连续设备内KV事务处理系统和方法。该系统包括主机设备和KV‑SSD。KV‑SSD包括命令处理器模块,其用于接收和处理来自主机设备的命令分组、识别与KV事务相关联的KV输入/输出(I/O)请求、以及准备按事务索引结构。该方法包括从主机设备接收命令分组、以及由命令处理器模块确定与KV事务相关联的事务标签是否嵌入命令分组中。基于确定事务标签未嵌入命令分组中,该方法包括使用主KV索引结构来处理一个或更多个KV I/O请求。基于确定事务标签嵌入命令分组中,该方法包括使用按事务索引结构单独处理所述一个或更多个KV I/O请求。

Description

使用键-值固态驱动器的交互式连续设备内事务处理
技术领域
出现的实施例涉及键-值(KV)存储系统,更具体地,涉及用于使用KV固态驱动器(KV-SSD)提供交互式连续设备内事务处理的系统和方法。
背景技术
事务是KV存储系统的组成部分,其确保KV对与应用的一致性。可以使用批量操作来实施事务,在批量操作中,一组KV对可以在存储器内被分阶段并被发送到基础设备。基础设备可以是无状态的。然而,因为可能无法原子地进行大批写入,所以可能需要附加的冗余,诸如日记或预写日志(WAL),从而增加了写入放大,因此实现了次优性能并缩短了设备的寿命。
将批量事务卸载到存储设备可以帮助减轻批量事务的副作用,但是因为事务的大小可能受设备中写缓冲器的大小限制,所以问题可能仍然存在。此外,在主机上运行的应用在其被设备处理时,仍可能需要将整个事务保留在存储器中。因此,与在相同或不同存储节点中运行的其他应用共享事务是困难的。可能难以或不可能基于各个请求的输出与他者共享数据的动态视图。
发明内容
本公开的各种实施例包括一种交互式连续设备内KV事务处理系统。该KV事务处理系统可以包括配置为生成命令分组的主机设备以及KV-SSD。KV-SSD可以包括命令处理器模块,其配置为从主机设备接收命令分组。命令处理器模块还可以配置为检测命令分组内的KV事务。命令处理器模块还可以配置为识别与KV事务相关联的一个或更多个KV输入/输出(I/O)请求。命令处理器模块还可以配置为i)准备新的按事务索引结构或ii)选择与KV事务相关联的预先存在的按事务索引结构中的至少之一。KV-SSD可包括配置为单独处理按事务索引结构的所述一个或更多个KV I/O请求的事务I/O引擎。主机设备可以配置为提交或回滚(rollback)KV事务。
一种用于处理交互式连续设备内KV事务的方法可以包括由KV-SSD的命令处理器模块接收命令分组。该方法可以包括由命令处理器模块确定与KV事务相关联的事务标签是否嵌入命令分组中。该方法可以包括基于确定事务标签未嵌入命令分组中,使用主KV索引结构来处理与KV事务相关联的一个或更多个KV I/O请求。该方法可以包括基于确定事务标签嵌入命令分组中,基于i)新的按事务索引结构或ii)与KV事务相关联的预先存在的按事务索引结构中的至少一个来处理与KV事务相关联的所述一个或更多个KV I/O请求。
附图说明
本公开的前述及另外的特征和优点将由以下参照附图的详细描述变得更易明显,附图中:
图1示出了根据一些实施例的KV存储系统的框图。
图2是示出根据一些实施例的用于处理KV事务的技术的方块流程图。
图3是示出根据一些实施例的用于使用KV-SSD执行交互式连续设备内事务处理的技术的方块流程图。
图4是示出根据一些实施例的用于处理命令处理器模块接收到的命令的技术的流程图。
图5示出了根据一些实施例的按事务索引结构的框图。
图6是示出根据一些实施例的用于通过事务I/O引擎来处理KV I/O请求的技术的流程图。
图7是示出根据一些实施例的用于完成发送到KV-SSD的KV事务的技术的流程图。
具体实施方式
现在将详细参照这里公开的实施例,其示例在附图中示出。在以下详细描述中,阐述了许多具体细节以使本发明构思能够被透彻地理解。然而,应理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本发明构思。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地使实施例的方面模糊难懂。
将理解,尽管术语第一、第二等可以在这里用于描述各种元素,但是这些元素不应受这些术语限制。这些术语仅用于将一个元素与另一个元素区分开。例如,第一事务可以被称为第二事务,类似地,第二事务可以被称为第一事务,而不脱离本发明构思的范围。
这里在本发明构思的描述中使用的术语仅出于描述特定实施例的目的,并且不旨在限制本发明构思。如在发明构思的描述和所附权利要求中所使用的,单数形式“一”和“该”旨在还包括复数形式,除非上下文清楚地另有所指。还将理解,这里使用的术语“和/或”指的是并涵盖一个或更多个相关所列举项目的任何和所有可能的组合。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”规明所陈述的特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或更多个其他特征、整体、步骤、操作、元素、组件和/或其组的存在或添加。附图的组件和特征未必按比例绘制。
这里公开的实施例例如通过将交互且连续的事务处理机制添加到诸如KV-SSD的KV存储系统和设备来解决设备内批量事务的限制。一些KV存储系统可以使用事务来确保KV对与应用的一致性。事务一般可以使用等待-批处理-递交机制来实施,在该机制中,一组独立的KV对可以在主机设备上的事务内在存储器内被分阶段,然后立刻被发送到基础设备(例如,作为单个事务)。一些存储设备可以具有能将许多主机端KV功能卸载到该设备的近数据处理能力,诸如KV-SSD。此类KV-SSD可以实施设备内事务管理,其中主要原理保持不变,即事务中的所有请求被递交并批量处理,这与数据库系统中实施的事务不同,在数据库系统中,事务的所有者可以查看事务中各个请求的状态。
本公开提供了在诸如KV-SSD的KV存储设备中交互且连续地管理事务的机制。所公开的系统可以提供对属于事务的各个请求的无缝、连续的处理,同时分别向应用提供状态。
本公开涵盖了在KV-SSD设备中实施事务的多种方式。可以有两种类型的事务:批量事务和连续事务。此外,本公开介绍了在KV-SSD中支持连续且交互的事务的机制,其中事务中的各个KV请求可以被递交给KV-SSD,并且状态甚至在完整的事务尚未结束时对于持有事务ID的应用可以是可用的。将请求分阶段的一些技术增加总延迟和资源使用率,这些技术可以批量递交给设备并等待事务内所有请求的完成才检索各个请求的结果。此外,由于对各个请求的连续按序管理,在主机设备上运行的应用可以做出动态决策,而批量事务处理的现有技术不提供这种动态决策。
这里公开的实施例是有利的,因为该方法更接近应用语义,更具可扩展性以支持大事务,在基于各个请求的输出可实现数据的动态视图的意义上是动态的,因为不需要日记所以更高效,并且更容易填充数据的带宽(例如,不需要缓冲的异步IO处理)。与一些KV存储相比,这里公开的交互式事务处理机制可以消除对事务记录的需要,从而提供选择提交或回滚的灵活性。
图1示出了根据一些实施例的KV存储系统100的框图。KV存储系统100可以包括主机设备105和KV-SSD 110。用户应用115可以由主机设备105运行。用户应用115可以与KV-SSD 110通信。KV-SSD 110可以包括命令处理器模块120、事务输入/输出(I/O)引擎125、主KV索引结构130和I/O引擎135。事务I/O引擎125可以包括一个或更多个按事务索引结构140、事务I/O管理器145和KV索引合并器150。
在155处,用户应用115可以创建KV事务158。在160处,用户应用115可以生成事务标签165。事务标签165可以是属于KV事务158的操作的标识符。事务标签165和KV事务158可以被包括在命令分组178内。事务标签165可以是用户定义的。事务标签165可以包括对于特定的KV事务158唯一的用户定义的事务ID 162、用于保留特定的KV I/O请求168的执行顺序(例如,顺序地增加)的请求索引164、表示KV事务158的结束的结束标志166或其组合。在170处,可以将包括一个或更多个KV对175和对应的一个或更多个事务标签165的一个或更多个KV I/O请求168添加到KV事务158,在这之后可以将命令分组178发送到KV-SSD 110。命令分组178可以包括KV事务158。事务标签165可以用于强制相干性。例如,仅得以访问事务标签165的用户应用115可以使KV事务158由命令处理器模块120和事务I/O引擎125处理。
命令处理器模块120可以处理不同种类的命令,诸如非易失性存储器标准(non-volatile memory express)(NVME)命令180、KV命令185、KV事务命令190等。命令处理器模块120可以从主机设备105接收一个或更多个KV I/O请求168。命令处理器模块120可以检测KV事务(例如,158)并相应地采取行动。命令处理器模块120的能力之一是识别KV事务158的一个或更多个KV I/O请求168(例如,KV I/O读请求、KV I/O写请求等),准备按事务索引结构140,并处理读搜索。命令处理器模块120可以为每个事务158生成按事务索引结构140。命令处理器模块120的操作在下面参照图4进一步被描述。
命令处理器模块120可以首先检查事务标签165,以确定命令分组178是否包括KV事务158。响应于命令分组178包括属于KV事务158的操作,命令处理器模块120可以检查是否创建和/或选择预先存在的按事务索引结构140。基于与命令分组178相关联的一个或更多个KV I/O请求168(例如,KV I/O读请求、KV I/O写请求等)的类型,可以将所述一个或更多个KV I/O请求168添加到按事务索引结构140和/或从按事务索引结构140移除所述一个或更多个KV I/O请求168。可以通知事务I/O引擎125进一步处理添加到按事务索引结构140的KV事务158。
对于KV I/O读请求,命令处理器模块120可以在按事务索引结构140中搜索所述一个或更多个KV I/O请求168的存在。响应于在按事务索引结构140中没有找到所述一个或更多个KV I/O请求168,可以将处理重定向到KV-SSD 110的主KV索引结构130。按事务索引结构140可以针对一些或每个KV事务158被创建,并由事务ID 162标识。事务ID 162可以由用户应用115提供。按事务索引结构140可以包括:一个或更多个KV I/O请求168(例如,各个KV对175和相关联的标签165),其属于具有嵌入事务标签165中的信息(诸如请求索引164)的KV事务158;以及每个KV I/O请求168(例如,KV I/O读请求、KV I/O写请求等)的类型,其由命令处理器模块120解析。按事务索引结构140的额外细节在下面参照图5来描述。按事务索引结构140的职责之一是向事务I/O引擎125提供用户应用115发送的请求的依次顺序,并维护数据结构以供高效查找,尤其是对于读请求。可以响应于KV事务158完成而删除按事务索引结构140,这可以由结束标志166指示。
事务I/O管理器145可以负责将所述一个或更多个KV I/O请求168从按事务索引结构140驱动(例如,发送)到设备I/O引擎135,保持按事务索引结构140的执行顺序、操作一致性和/或生命周期管理。事务I/O管理器145可以向KV-SSD 110的存储介质发布一个或更多个请求。事务I/O管理器145可以如下面进一步描述地按执行顺序从按事务索引结构140的输入/输出队列列表(例如,IoQueueList)获取一个或更多个KV I/O请求条目。事务I/O管理器145可以如下面进一步描述地检查是否要发布下一个KV I/O请求。此外,事务I/O管理器145可以处理KV事务158的完成。
事务I/O引擎125可以检查任何失败的KV I/O请求168。响应于KV I/O请求168失败,可以如下面进一步描述地将KV事务158的状态位设置为失败状态,表示KV事务158的所有进一步的KV I/O请求168具有失败状态。事务I/O引擎125可以将通知194中的响应发送给用户应用115。响应于单独的一个或更多个KV I/O请求168中的每个成功,可以完成所述一个或更多个KV I/O请求168,并且可以在它们完成时将通知194发送给用户应用115。在一些实施例中,事务I/O管理器145使包括完成的KV I/O请求状态192的各个通知194被发送给用户应用115。这可以继续直到遇到结束标志166为止,并且KV事务158整体上可以被标记为要发送到KV索引合并器150,在此之后可以删除按事务索引结构140。在一些实施例中,事务I/O管理器145检测结束标志166,将KV事务158发送到KV索引合并器150,并删除针对该KV事务158的按事务索引结构140。可以向用户应用115提供通知194作为事务状态195,并且可以向主机设备105或向其他应用或用户提供通知198。
图2是示出根据一些实施例的用于处理KV事务的技术的方块流程图200。现在参照图1和图2。
在205处,主机设备105上的用户应用115可以创建KV事务158。在210处,用户应用115可以发布KV I/O请求168。在215处,KV-SSD 110可以更新按事务索引结构140,并在218处处理一个或更多个KV I/O请求。用户应用115可以在220处提交KV事务158或在225处回滚KV事务158。响应于用户应用115在220处提交KV事务158,KV-SSD 110可以在230处合并与KV事务158相关联的改变。响应于用户应用115在220处提交KV事务158,KV事务158可以对用户应用115和其他应用可见。响应于KV I/O请求168失败,用户应用115可以决定在225处回滚KV事务158。响应于225处的KV事务158的回滚,KV SSD 110可以在235处丢弃与KV事务158相关联的改变。这里公开的交互式事务机制可以消除对事务记录的需要,从而提供选择提交或回滚的灵活性。
图3是示出根据一些实施例的用于使用KV-SSD 110执行交互式连续设备内事务处理的技术的方块流程图300。代替执行可有利于熵驱动的慢速存储设备(诸如硬盘驱动器)的等待-批处理-递交机制,公开了对应用(例如,115)有利且适合于快速KV-SSD的交互式连续处理方法。如图例305所示,KV对由带框的增量整数表示,事务标签由带框的“T”表示。
在时间t0处,将包括KV对和事务标签的第一KV事务158从主机设备105上运行的用户应用115发送到KV-SSD 110。在时间t1之前,第一KV事务158的状态(例如,图1的192)可以对所有者可见(例如,被提供给用户应用115)。在时间t1处,将包括KV对和事务标签的第二KV事务从主机设备105上运行的用户应用115发送到KV-SSD 110。在时间t2之前,第二KV事务的状态(例如,图1的192)可以对所有者可见(例如,被提供给用户应用115)。在时间t2处,将包括KV对和事务标签的第三KV事务从主机设备105上运行的用户应用115发送到KV-SSD110。在时间t3之前,第三KV事务的状态(例如,图1的192)可以对他者和所有者可见(例如,被提供给用户应用115、其他应用或利益相关者等)。在310处指示总延迟,但是每个KV事务的延迟少于总延迟310。
本公开阐述了设备内事务管理技术,其促进诸如KV-SSD 110的KV存储设备内部的连续且交互的事务处理。图3示出了示例实施例,与某些批量事务处理不同,其在确保一致性的同时,允许应用(例如,115)借助事务标签将KV事务(例如,图1的158)的各个KV I/O请求(例如,图1的168)直接递交到KV-SSD 110而无需将主机系统分阶段。一旦KV事务(例如,图1的158)的所有者坚持到KV-SSD 110,该所有者就可以具有每个单独的KV I/O请求(例如,图1的168)的状态(例如,图1的192),从而为系统300提供基于输出做出动态决定(诸如添加或移除KV I/O请求(例如,图1的168))的能力。这与批量驱动的事务机制不同,在批量驱动的事务机制中,所有者可能不得不等待整个事务结束才知道单独的KV对的结果。此外,通过所公开的交互式事务的系统,可以利用设备的原子写能力,这在批量事务的情况下可能无法实现,因为如果批量变长,则不能使写是原子的,并且可能需要日记或WAL来确保一致性。
可以减小每个KV事务(例如,图1的158)的大小,因为不需要任何批处理。当确定KV-SSD中的存储器的大小时,大的事务大小可以是限制因素。虽然可以将大的KV对作为有效负载发送给命令,但是因为KV-SSD中的硬件可能无法获取有效负载中的所有命令,所以性能代价可能较高。因此,KV-SSD无法高效地处理大的事务。如这里公开地减小事务大小可以因此提高KV-SSD 110的效率。
由于主机设备105上的事务中的分阶段和批处理请求,诸如KV-SSD的快速非易失性存储设备所提供的I/O带宽和并发性可能未被充分利用,而KV-SSD 110则会保持空闲。通过执行交互式连续设备内事务处理,可以更好地利用KV-SSD的I/O带宽。此外,可以消除否则将会在事务中发生的请求的分阶段和刷新。此类分阶段和刷新可能消耗主机端资源(诸如存储器和专用线程)以将批量事务推送到KV-SSD,而不是处理数据。与等待-批处理-推送机制相比,可以如这里所公开地减少单独的事务延迟,因为不然系统可能不得不等待所有请求被用户应用115递交、被批处理并被递交到KV-SSD以供处理。
在没有这里所公开的设备内交互式KV事务的情况下,则KV事务的范围之间可能存在僵化且紧密的联系,即使有也只能做出极少的动态设计决策。例如,在没有如这里公开的设备内交互式KV事务的情况下,不能基于单独的请求输出将KV对添加到KV事务,因为用户应用115将会需要依次等待批处理的结果才做出决定。由于动态性的这种缺乏以及在事务之前提供所有操作的严格限制,一些机器学习(ML)/KV应用会受到影响。
所公开的系统确保了一致性,同时克服了批量驱动的事务机制的设备未充分利用、主机资源消耗和总延迟的局限性。此外,所公开的系统提供了动态交互式事务支持。
图4是示出根据一些实施例的用于处理命令处理器模块120接收到的命令的技术的流程图400。现在参照图1和图4。
在405处,可以接收命令分组178。在410处,命令处理器模块120可以确定事务标签165是否被嵌入命令分组178中。基于确定事务标签165没有被嵌入命令分组178中,流程可以行进到445,其中可以使用主KV索引结构130来处理KV I/O请求168。否则,基于确定事务标签165被嵌入命令分组178中,流程可以行进到415,并且可以确定命令分组178中是否包括新的KV事务。基于确定命令分组178中包括新的KV事务,流程可以行进到420,其中可以创建新的按事务索引结构140。否则,基于确定命令分组178中不包括新的KV事务(即,KV事务不是新的),流程可以行进到425,其中可以选择现有的按事务索引结构(例如,140)以供使用。将理解,事务I/O引擎125可以管理多个按事务索引结构。
在430处,命令处理器模块120可以确定KV事务158是否包括KV I/O读请求。基于确定KV事务包括KV I/O读请求,流程可以行进到435,其中可以搜索按事务索引结构140中的键。在440处,命令处理器模块120可以确定是否找到按事务索引结构140中的键。基于确定没有找到按事务索引结构140中的键,流程可以行进到445,其中可以使用主KV索引结构130来处理KV I/O请求168。
基于在430处确定KV事务不包括KV I/O读请求,流程可以行进到450。此外,基于在440处确定找到按事务索引结构140中的键,流程可以行进到450。在450处,可以将KV I/O请求条目添加到按事务索引结构140。在455处,可以向事务I/O管理器145通知KV I/O请求条目被添加到按事务索引结构140。
图5示出了根据一些实施例的按事务索引结构140的框图。现在参照图1和图5。
按事务索引结构140可以针对每个事务158被创建,并由用户应用115提供的事务ID 162标识。按事务索引结构140可以包括:一个或更多个KV I/O请求168(例如,各个KV对175和相关联的事务标签165),其属于具有嵌入标签165中的信息(诸如请求索引164)的KV事务158;以及请求的类型(例如,KV I/O读请求、KV I/O写请求等),其由命令处理器模块120解析。
按事务索引结构140可以被实现和/或可视化为B+树。按事务索引结构140可以包括排序键列表505,其可以包括一个或更多个单独的KV对175的键的排序列表。排序键列表505可以帮助和/或加速键查找。按事务索引结构140可以包括IoQueueList 510,其可以包括基于请求索引164排序以保留执行顺序的KV I/O请求168的列表。按事务索引结构140可以包括LAST ID(例如5、6、7和8),其可以代表最近发布给事务I/O引擎125用于维持顺序的请求索引164。按事务索引结构140可以包括STATUS位,其可以代表KV事务158的状态,即,属于该KV事务158的一个或更多个KV I/O请求168是否已经失败或成功。例如,STATUS位为1可以指示属于该KV事务158的一个或更多个KV I/O请求168已经失败,STATUS位为0可以指示属于该KV事务158的KV I/O请求168已成功完成,反之亦然。
响应于IoQueueList 510中的第一KV I/O请求条目515的当前请求索引164等于(LAST ID+1),则可以发布下一个KV I/O请求,或者可以在先前的KV I/O请求168已经完成之后发布下一个KV I/O请求。响应于与IoQueueList 510中等于LAST ID的KV I/O请求条目(例如,515)相关联的KV I/O请求168未完成,系统可以等待KV I/O请求168的完成,然后将下一个KV I/O请求释放到设备I/O引擎135以供进一步处理,并递增LAST ID。响应于任何先前发布的KV I/O请求已经失败(例如,在对应的KV I/O请求条目中将STATUS位设置为FAILED),可以将错误发送给用户应用115,如果设置了表示KV事务158的结束的结束标志166,则可以删除按事务索引结构140。下面在图6中进一步描述请求处理机制。
图6是示出根据一些实施例的用于通过事务I/O引擎125来处理KV I/O请求168的技术的流程图600。现在参照图1和图6。
在605处,事务I/O引擎125可以接收KV I/O请求168。在610处,事务I/O引擎125可以确定请求索引164是否等于零(0)。基于确定请求索引164等于零(0),事务I/O引擎125可以在615处将状态位(例如,图5的STATUS)设置为未失败(例如,0)。否则,基于确定请求索引164不等于零(0),事务I/O引擎125可以在620处确定KV事务158是否已经失败。
基于在620处确定KV事务158已经失败,流程可以行进到625,并且事务I/O引擎125可以确定结束标志166是否被设置。基于确定结束标志166被设置,流程可以行进到630,其中可以移除针对该KV事务158的按事务索引结构140,并且可以在635处向用户应用115发送错误。否则,基于确定结束标志166未被设置,流程可以直接行进到635,并且可以在635处向用户应用115发送错误。
基于在620处确定KV事务158尚未失败,流程可以行进到640,其中事务I/O引擎125可以取得I/O队列(例如,图5的IoQueueList 510)。在645处,事务I/O引擎125可以将KV I/O请求条目(例如,515)添加到I/O队列(例如,510)。在650处,事务I/O引擎125可以确定请求索引164是否等于(LAST ID+1)。基于确定请求索引164等于(LAST ID+1),流程可以行进到655,其中事务I/O引擎125可以向I/O引擎135发布未决的KV I/O请求(例如,168)。在660处,事务I/O引擎125可以使(例如,图5的)LAST ID递增一(1)。基于在650处确定请求索引164不等于(LAST ID+1),流程可以直接行进到结束。
图7是示出根据一些实施例的用于完成发送到KV-SSD 110的KV事务158的技术的流程图700。现在参照图1和图7。
在I/O引擎135在705处完成涉及一个或更多个KV I/O请求168的KV事务158之后,I/O引擎135可以提供响应,并且事务I/O引擎125可以从I/O引擎135接收该响应。然后,在710处,事务I/O引擎125可以取得I/O队列(例如,图5的IoQueueList 510)。在715处,事务I/O引擎125可以确定KV I/O请求168是否成功以及KV事务158是否未失败。基于确定KV I/O请求168成功并且KV事务158未失败,流程可以行进到720,其中可以将I/O队列(例如,图5的IoQueueList 510)中的KV I/O请求168标记为完成。否则,基于确定KV I/O请求168未成功或KV事务158失败,流程可以行进到725,其中可以删除I/O队列(例如,图5的IoQueueList510)中所有写入的KV对。然后,可以在730处将状态位(例如,图5的STATUS)设置为失败(例如,1),并在750处将响应发送给用户应用。
在I/O队列(例如,图5的IoQueueList 510)中的请求在720处被标记为完成之后,流程可以行进到735,其中事务I/O引擎125可以确定结束标志166是否被设置。基于确定结束标志166未被设置,流程可以行进到750,其中可以将响应发送到用户应用。否则,基于确定结束标志166被设置,流程可以行进到740,其中可以将事务ID 162发送到KV索引合并器150。在745处,可以删除与事务ID 162相关联的按事务索引结构140。在750处,可以将响应发送到用户应用。
在KV事务158中所有的各个KV I/O请求168完成之后,KV索引合并器150可以将KV对175的成功写入的键从按事务索引结构140合并到主KV索引结构130。在合并键之后,可以删除按事务索引结构140,并且可以使事务状态195可供所有利益相关者(例如,用户应用和/或他者)查看。在一些实施例中,事务I/O管理器145使事务状态195对于利益相关者是可获取的。
上述方法的各种操作可以通过能够执行操作的任何合适的机构(诸如各种各样的(多个)硬件和/或软件组件、电路和/或(多个)模块)来执行。
一些实施例可以包括一种交互式连续设备内键-值(KV)事务处理系统。该系统可以包括配置为生成命令分组的主机设备。该系统可以包括KV固态驱动器(KV-SSD),其包括命令处理器模块,该命令处理器模块配置为从主机设备接收命令分组、检测命令分组内的KV事务、识别与KV事务相关联的一个或更多个KV输入/输出(I/O)请求、以及以下中的至少之一:i)准备新的按事务索引结构或ii)选择与KV事务相关联的预先存在的按事务索引结构。
在一些实施例中,命令处理器模块配置为将所述一个或更多个KV I/O请求添加到按事务索引结构。在一些实施例中,命令处理器模块配置为从按事务索引结构中移除所述一个或更多个KV I/O请求。该系统还可以包括事务I/O引擎,其配置为单独地处理按事务索引结构的所述一个或更多个KV I/O请求。在一些实施例中,事务I/O引擎包括事务I/O管理器,其配置为将所述一个或更多个KV I/O请求从按事务索引结构发送到KV-SSD的设备I/O引擎、以及维持所述一个或更多个KV I/O请求的执行顺序。在一些实施例中,事务I/O管理器还配置为在单独的一个或更多个KV I/O请求完成时向主机设备发送单独的通知,该单独的通知包括所述单独的一个或更多个KV I/O请求中的每个的单独的完成状态。在一些实施例中,事务I/O引擎包括KV索引合并器。事务I/O管理器还可以配置为检测与所述一个或更多个KV I/O请求相关联的结束标志。事务I/O管理器还可以配置为完成所述一个或更多个KV I/O请求的处理。事务I/O管理器还可以配置为将与KV事务相关联的事务ID发送到KV索引合并器。事务I/O管理器还可以配置为基于事务ID删除按事务索引结构。
KV-SSD还可以包括主KV索引结构。在一些实施例中,KV索引合并器配置为基于事务ID将与所述一个或更多个KV I/O请求相关联的一个或更多个KV对合并到主KV索引结构,所述一个或更多个KV I/O请求与KV事务相关联。在一些实施例中,主机设备配置为i)提交或ii)回滚KV事务中的至少之一。
一些实施例包括一种用于处理交互式连续设备内键-值(KV)事务的方法。该方法可以包括由KV固态驱动器(KV-SSD)的命令处理器模块接收命令分组。该方法可以包括由命令处理器模块确定与KV事务相关联的事务标签是否被嵌入命令分组中。该方法可以包括基于确定事务标签未嵌入命令分组中,使用主KV索引结构来处理与KV事务相关联的一个或更多个KV I/O请求。该方法可以包括基于确定事务标签嵌入命令分组中,处理与KV事务相关联的所述一个或更多个KV I/O请求。
该方法可以包括由命令处理器模块确定KV事务是否是新的KV事务。该方法可以包括:基于确定KV事务是新的KV事务,创建新的按事务索引结构;以及使用新的按事务索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。该方法可以包括:基于确定KV事务不是新的KV事务,选择预先存在的按事务索引结构;以及使用预先存在的按事务索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。
该方法可以包括由命令处理器模块确定KV事务是否包括KV I/O读请求。该方法可以包括基于确定KV事务包括KV I/O读请求,在i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个中搜索键。该方法可以包括响应于在i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一项中未找到键,使用主KV索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。该方法可以包括响应于在i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个中找到键,将与所述一个或更多个KVI/O请求相关联的条目添加到i)新的按事务索引结构或ii)预先存在的按事务索引结构中的所述至少一个,并使用主KV索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。
该方法可以包括由KV-SSD的事务I/O引擎的事务I/O管理器将所述一个或更多个KV I/O请求发送到KV-SSD的I/O引擎。该方法可以包括由事务I/O管理器维持所述一个或更多个KV I/O请求的执行顺序。该方法可以包括由事务I/O管理器在单独的一个或更多个KVI/O请求完成时向主机设备发送单独的通知,该单独的通知包括所述单独的一个或更多个KV I/O请求中的每个的单独的完成状态。该方法可以包括由事务I/O管理器检测与所述一个或更多个KV I/O请求相关联的结束标志。该方法可以包括完成所述一个或更多个KV I/O请求的处理。该方法可以包括将与KV事务相关联的事务ID发送到事务I/O引擎的KV索引合并器。该方法可以包括基于事务ID删除i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个。
该方法可以包括由KV索引合并器基于事务ID将与所述一个或更多个KV I/O请求相关联的一个或更多个KV对合并到主KV索引结构,所述一个或更多个KV I/O请求与KV事务相关联。该方法可以包括向主机设备提供通知,该通知包括与KV事务相关联的事务完成状态。该方法可以包括由主机设备提交KV事务。该方法可以包括由主机设备回滚KV事务。
结合这里公开的实施例描述的功能和方法或算法的块或步骤可以直接体现在硬件中、在由处理器运行的软件模块中或在两者的组合中。如果以软件来实现,则功能可以作为一个或更多个指令或代码存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质传输。软件模块可以位于随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CDROM或本领域已知的任何其他形式的存储介质。
以下讨论旨在提供对其中可实现本发明构思的某些方面的一种或多种合适的机器的简要概括描述。通常,一个或多个机器包括系统总线,处理器、存储器(例如,RAM、ROM或其他状态保存介质)、存储设备、视频接口和输入/输出接口端口连接到该系统总线。可以至少部分地通过来自常规输入设备(诸如键盘、鼠标等)的输入以及通过从另一机器接收到的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其他输入信号来控制一个或多个机器。如这里所使用的,术语“机器”旨在广泛地涵盖单个机器、虚拟机或通信耦合的机器、虚拟机或一起操作的设备的系统。示例性机器包括诸如个人计算机、工作站、服务器、便携式计算机、手持式设备、电话、平板电脑等的计算设备,以及诸如私人或公共交通工具(例如,汽车、火车、出租车等)的运输设备。
一个或多个机器可以包括嵌入式控制器,诸如可编程或非可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。一个或多个机器可以利用诸如通过网络接口、调制解调器或其他通信耦合与一个或多个远程机器的一个或多个连接。机器可以通过诸如内联网、互联网、局域网、广域网等的物理和/或逻辑网络互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短距离或长距离载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)545.11、
Figure BDA0003116798540000141
光学、红外、电缆、激光等。
可以参照或结合包括功能、过程、数据结构、应用程序等的关联数据来描述本公开的实施例,所述关联数据在被机器访问时导致该机器执行任务或定义抽象数据类型或低级硬件上下文。关联数据可以存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中或在其他存储设备及其相关的存储介质(包括硬盘驱动器、软盘、光学存储、磁带、闪存、记忆棒、数字视频磁盘、生物存储等)中。关联数据可以通过传输环境(包括物理和/或逻辑网络)以分组、串行数据、并行数据、传播信号等的形式传递,并且可以以压缩或加密格式使用。关联数据可以在分布式环境中使用,并且可以本地和/或远程存储以供机器访问。
已经参照示出的实施例描述和示出了本公开的原理,将认识到,示出的实施例可以在不背离这些原理的情况下在布置和细节上修改,并且可以以任何期望的方式组合。尽管前述讨论集中于特定实施例,但是其他配置被考虑到。特别地,即使在这里使用诸如“根据本发明构思的实施例”的表述,这些短语也意味着总体上参照实施例可能性,并且不旨在将本发明构思限于特定的实施例构造。如这里所使用的,这些术语可以引用组合成其他实施例的相同或不同的实施例。
本公开的实施例可以包括非暂时性机器可读介质,其包括可由一个或更多个处理器运行的指令,该指令包括执行如这里描述的本发明构思的元素的指令。
前述说明性实施例将不被解释为限制其发明构思。尽管已经描述了若干实施例,但是本领域技术人员将容易理解,在实质上不背离本公开的新颖教导和优点的情况下,可以对那些实施例进行许多修改。因此,所有这样的修改旨在被包括在如权利要求中限定的本公开的范围内。

Claims (20)

1.一种交互式连续设备内键-值KV事务处理系统,包括:
主机设备,配置为生成命令分组;以及
KV固态驱动器KV-SSD,包括命令处理器模块,该命令处理器模块配置为从主机设备接收命令分组、检测命令分组内的KV事务、识别与KV事务相关联的一个或更多个KV输入/输出I/O请求、以及进行以下中的至少之一:i)准备新的按事务索引结构,或ii)选择与KV事务相关联的预先存在的按事务索引结构。
2.根据权利要求1所述的系统,其中命令处理器模块配置为将所述一个或更多个KV I/O请求添加到按事务索引结构。
3.根据权利要求2所述的系统,其中命令处理器模块配置为从按事务索引结构移除所述一个或更多个KV I/O请求。
4.根据权利要求2所述的系统,还包括事务I/O引擎,其配置为单独处理按事务索引结构的所述一个或更多个KV I/O请求。
5.根据权利要求4所述的系统,其中事务I/O引擎包括事务I/O管理器,该事务I/O管理器配置为将所述一个或更多个KV I/O请求从按事务索引结构发送到KV-SSD的设备I/O引擎以及维持所述一个或更多个KV I/O请求的执行顺序。
6.根据权利要求5所述的系统,其中事务I/O管理器还配置为在单独的所述一个或更多个KV I/O请求完成时向主机设备发送单独的通知,该单独的通知包括单独的所述一个或更多个KV I/O请求中的每个的单独的完成状态。
7.根据权利要求4所述的系统,其中事务I/O引擎包括KV索引合并器,并且事务I/O管理器还配置为:
检测与所述一个或更多个KV I/O请求相关联的结束标志;
完成所述一个或更多个KV I/O请求的处理;
向KV索引合并器发送与KV事务相关联的事务ID;以及
基于事务ID删除按事务索引结构。
8.根据权利要求7所述的系统,还包括主KV索引结构,其中KV索引合并器配置为基于事务ID将与所述一个或更多个KV I/O请求相关联的一个或更多个KV对合并到主KV索引结构,所述一个或更多个KV I/O请求与KV事务相关联。
9.根据权利要求1所述的系统,其中主机设备配置为进行:i)提交或ii)回滚KV事务中的至少之一。
10.一种用于处理交互式连续设备内键-值KV事务的方法,该方法包括:
由KV固态驱动器KV-SSD的命令处理器模块接收命令分组;
由命令处理器模块确定与KV事务相关联的事务标签是否嵌入命令分组中;
基于确定事务标签嵌入命令分组中,处理与KV事务相关联的一个或更多个KV I/O请求。
11.根据权利要求10所述的方法,其中命令分组是第一命令分组,该方法还包括:
由命令处理器模块接收第二命令分组;
由命令处理器模块确定与KV事务相关联的事务标签是否嵌入第二命令分组中;
基于确定事务标签未嵌入第二命令分组中,使用主KV索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。
12.根据权利要求10所述的方法,还包括:
由命令处理器模块确定KV事务是否是新的KV事务;
基于确定KV事务是新的KV事务,创建新的按事务索引结构,并使用新的按事务索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求;以及
基于确定KV事务不是新的KV事务,选择预先存在的按事务索引结构,并使用预先存在的按事务索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。
13.根据权利要求12所述的方法,还包括:
由命令处理器模块确定KV事务是否包括KV I/O读请求;以及
基于确定KV事务包括KV I/O读请求,在i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个中搜索键。
14.根据权利要求13所述的方法,还包括:
响应于在i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个中未找到键,使用主KV索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。
15.根据权利要求13所述的方法,还包括:
响应于在i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个中找到键,将与所述一个或更多个KV I/O请求相关联的条目添加到i)新的按事务索引结构或ii)预先存在的按事务索引结构中的所述至少一个,并使用主KV索引结构来处理与KV事务相关联的所述一个或更多个KV I/O请求。
16.根据权利要求13所述的方法,还包括:
由KV-SSD的事务I/O引擎的事务I/O管理器向KV-SSD的I/O引擎发送所述一个或更多个KV I/O请求;以及
由事务I/O管理器维持所述一个或更多个KV I/O请求的执行顺序。
17.根据权利要求16所述的方法,还包括:
由事务I/O管理器在单独的所述一个或更多个KV I/O请求完成时向主机设备发送单独的通知,该单独的通知包括单独的所述一个或更多个KV I/O请求中的每个的单独的完成状态;
由事务I/O管理器检测与所述一个或更多个KV I/O请求相关联的结束标志;
完成所述一个或更多个KV I/O请求的处理;
向事务I/O引擎的KV索引合并器发送与KV事务相关联的事务ID;以及
基于事务ID删除i)新的按事务索引结构或ii)预先存在的按事务索引结构中的至少一个。
18.根据权利要求17所述的方法,还包括由KV索引合并器基于事务ID将与所述一个或更多个KV I/O请求相关联的一个或更多个KV对合并到主KV索引结构,所述一个或更多个KVI/O请求与KV事务相关联。
19.根据权利要求17所述的方法,还包括向主机设备提供通知,该通知包括与KV事务相关联的事务完成状态。
20.根据权利要求17所述的方法,还包括由主机设备提交KV事务。
CN202110664611.6A 2020-06-16 2021-06-16 使用键-值固态驱动器的交互式连续设备内事务处理 Pending CN113806023A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063039979P 2020-06-16 2020-06-16
US63/039,979 2020-06-16
US16/992,096 US20210390091A1 (en) 2020-06-16 2020-08-12 Interactive continuous in-device transaction processing using key-value (kv) solid state drives (ssds)
US16/992,096 2020-08-12

Publications (1)

Publication Number Publication Date
CN113806023A true CN113806023A (zh) 2021-12-17

Family

ID=78826569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110664611.6A Pending CN113806023A (zh) 2020-06-16 2021-06-16 使用键-值固态驱动器的交互式连续设备内事务处理

Country Status (4)

Country Link
US (1) US20210390091A1 (zh)
KR (1) KR20210155748A (zh)
CN (1) CN113806023A (zh)
TW (1) TW202219786A (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328440B2 (en) * 2000-12-22 2008-02-05 Gxs, Inc. Interface between front-end systems and back-end systems
US10261972B2 (en) * 2016-09-07 2019-04-16 IntelligenceNODE Consulting Private Limited Methods and systems for similarity matching
US20200226011A1 (en) * 2019-01-14 2020-07-16 Fast River Technologies Inc. Policy-based distributed transactional processing in a distributed system

Also Published As

Publication number Publication date
KR20210155748A (ko) 2021-12-23
TW202219786A (zh) 2022-05-16
US20210390091A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
US11550618B2 (en) Transaction commit operations with thread decoupling
CN109074362B (zh) 分布式系统中的拆分和移动范围
CN108519862B (zh) 区块链系统的存储方法、装置、系统和存储介质
US10853207B2 (en) Asynchronous in-memory data checkpointing for distributed computing systems
US10732836B2 (en) Remote one-sided persistent writes
US10268716B2 (en) Enhanced hadoop framework for big-data applications
US20100030981A1 (en) Method of Clustering Shared Access Hybrid Hard Drives
CN110019112B (zh) 数据事务处理方法、装置以及电子设备
US20150261461A1 (en) High performance persistent memory
CN103312624A (zh) 一种消息队列服务系统和方法
US20220365709A1 (en) Computational storage for logical volumes that span physical devices
US20160203032A1 (en) Series data parallel analysis infrastructure and parallel distributed processing method therefor
US20200387412A1 (en) Method To Manage Database
CN111971667B (zh) 可恢复的合并排序
US20210390091A1 (en) Interactive continuous in-device transaction processing using key-value (kv) solid state drives (ssds)
WO2022218218A1 (zh) 数据处理方法、装置、归约服务器及映射服务器
US20150026126A1 (en) Method of replicating data in asymmetric file system
US20220011948A1 (en) Key sorting between key-value solid state drives and hosts
EP3734458B1 (en) Method and system for prioritizing critical data object storage during backup operations
CN112084141A (zh) 一种全文检索系统扩容方法、装置、设备及介质
US20240168877A1 (en) Solving submission queue entry overflow with an additional out-of-order submission queue entry
US11269736B2 (en) Method to manage database failure
US11379147B2 (en) Method, device, and computer program product for managing storage system
US10963186B2 (en) Latent multiplicity detection
US20220391119A1 (en) Data relocation for data units in scale-out storage systems

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20211217

WD01 Invention patent application deemed withdrawn after publication