CN110413592A - 使用对象固态驱动器(ssd)设备的基于日志结构合并(lsm)树的数据库的优化 - Google Patents

使用对象固态驱动器(ssd)设备的基于日志结构合并(lsm)树的数据库的优化 Download PDF

Info

Publication number
CN110413592A
CN110413592A CN201910339317.0A CN201910339317A CN110413592A CN 110413592 A CN110413592 A CN 110413592A CN 201910339317 A CN201910339317 A CN 201910339317A CN 110413592 A CN110413592 A CN 110413592A
Authority
CN
China
Prior art keywords
data
logic
object identifier
written
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910339317.0A
Other languages
English (en)
Other versions
CN110413592B (zh
Inventor
邱晟
刘飞
李舒
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110413592A publication Critical patent/CN110413592A/zh
Application granted granted Critical
Publication of CN110413592B publication Critical patent/CN110413592B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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
    • 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • 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
    • G06F16/2246Trees, e.g. B+trees
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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/0608Saving storage space on storage 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

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)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

所公开的实施例涉及对日志结构合并(LSM)树数据库的改进。在一个实施例中,公开了一种方法,包括接收要写入日志结构合并(LSM)树的数据,所述数据包括键和值;确定存储缓冲区缺少存储要写入的数据的能力;压缩存储在对象存储设备(OSD)中的LSM树的至少一个级别的键范围,每个键范围与相应的对象标识符相关联;生成键范围对象,键范围对象包括与键范围的子集相关联的对象标识符;擦除与包括在关键字范围对象中的每个对象标识符相对应的物理块;将关键范围对象写入OSD的至少一个物理块。

Description

使用对象固态驱动器(SSD)设备的基于日志结构合并(LSM)树 的数据库的优化
本申请要求于2018年04月26日提交美国专利商标局、申请号为 15/963386、发明名称为“OPTIMIZATION OF LOG-STRUCTURED MERGE(LSM)TREE-BASED DATABASES USING OBJECTSOLID STATE DRIVE(SSD)DEVICES”的美国专利申请的优先权,其全部内容 通过引用结合在本申请中。
本申请包括受版权保护的材料。版权所有者不反对任何人对专 利和商标局文件或记录中出现的专利公开进行传真复制,但在其他方面保 留所有版权。
背景技术
所公开的实施例涉及数据库优化,并且特别地涉及用于使用对 象固态驱动器(SSD)设备优化基于日志结构合并(LSM)树的数据库的 方法、***和装置。
LSM树是数据存储架构,其中数据被存储为跨多个存储结构的 键值对。使用两级LSM树作为示例,第一树结构(C0)将键值范围存储 在例如本地内存中,而第二树结构(C1)存储在持久存储设备上。新记录 仅***到C0,其大小固定。如果***一个新记录会导致C0超过结构的固 定大小,连续范围的键值对将从C0中删除并***到C1。从较低级别(例 如,C0)到较高级别(例如,C1)的数据移动被称为压缩。
LSM树非常适合于键值数据库,例如ROCKSDB(由加利福尼 亚州门洛帕克的Facebook公司创建)或LEVELDB(由加利福尼亚州山景 城的谷歌公司创建)。由于这些数据库使用键作为基本的写入/检索索引, 数据库接口的逻辑数据模型明确映射到LSM树结构。因此,LSM树通常 用于此类键值数据库,以提高压缩率,减少持久更改所需的输入/输出(I/O)容量以及更简单的代码库。
尽管有这些改进,但当与存储设备一起使用时,LSM树的压缩 操作导致效率低下。特别地,由于实现分类***地几个键值范围所需的读 取次数,压缩操作在计算上耗费巨大。所述计算由底层物理存储机制复杂 化,所述机制也执行其自身的日常维护。例如,固态闪存驱动器采用异步 垃圾收集例程,以确保从底层闪存块中删除无效页。在压缩期间,由于键 范围可能不会全部存储在单个块(或一系列块)上,因此键范围的擦除通 常会导致在底层SSD上留下无效页。因而压缩过程还包括底层SSD垃圾 收集过程的开销,这会增加访问SSD时的延迟(由于垃圾收集过程暂时 停止读取和写入)。
发明内容
所公开的实施例通过引入新型存储设备,即对象存储设备 (OSD)来解决这些和其他问题。OSD被配置为在底层存储介质(例如, NAND闪存)的块级读取、写入和删除。通过在块级操作,OSD可以通 过使与页面级相对的整个数据块无效来擦除对象。结果,OSD所采用的垃 圾收集过程不需要从包括无效页面的块复制有效页面(如在当前***中执 行的那样)。因此,存储设备的垃圾收集开销显着减少。
在一个实施例中,公开了一种方法,包括接收要写入LSM树的 数据,所述数据包括键和值;确定存储缓冲区缺少存储要写入的数据的能 力;压缩存储在OSD的LSM树的至少一个级别的键范围,每个键范围与 各个对象标识符相关联;生成键范围对象,键范围对象包括与键范围的子 集相关联的对象标识符;擦除与包括在键范围对象中的每个对象标识符相 对应的物理块;和将键范围对象写入OSD的至少一个物理块。
在另一实施例中,公开了一种方法,包括在OSD接收写请求, 所述写请求包括多个对象标识符,所述多个对象标识符包括至少一个新对 象标识符和至少一个现有对象标识符;通过OSD擦除与现有对象标识符 相关联的数据块;并且通过OSD写入与现有对象标识符相关联的数据和 与新对象标识符相关联的数据。
在另一个实施例中,公开了一种装置,所述装置包括:存储介 质,所述存储介质将数据存储在多个块中,每个块具有多个页面;对象接 口,所述对象接口被配置为从对象设备驱动器接收命令的;控制器,所述 控制器可通信地联接至所述存储介质和所述对象接口,并且被配置为经由 对象接口接收命令,所述控制器还包括存储于其中的程序,所述程序包括: 逻辑,所述逻辑由控制器执行,用于接收写请求,所述写请求包括多个对 象标识,所述多个对象标识包括至少一个新对象标识和至少一个现有对象 标识;逻辑,所述逻辑由控制器执行,用于擦除与现有对象标识符相关联 的数据块;以及逻辑,所述逻辑由控制器执行,用于写入与现有对象标识 符相关联的数据和与新对象标识符相关联的数据。
以下附图和描述进一步说明了本公开的前述优点和实施例。
附图说明
本发明的前述和其他目的、特征和优点将从如附图所示的实施 例的以下描述中变得显而易见,其中附图标记在各个视图中指代相同的部 分。附图不一定按比例绘制,而是将重点放在说明本公开的原理上。
图1示出了两级LSM树的操作。
图2A示出了根据本公开的一些实施例的基于块的存储设备中 的文件操作的框图。
图2B示出了根据本公开的一些实施例的基于对象的存储设备 中的文件操作的框图。
图3是示出根据本公开的一些实施例的对象存储设备(OSD) 的架构的框图。
图4A示出了根据本公开的一些实施例的在OSD中的写入操 作。
图4B示出了根据本公开的一些实施例的在OSD中的读取操 作。
图4C示出了根据本公开的一些实施例的在OSD中的擦除操 作。
图5是示出根据本公开的一些实施例的用于执行LSM树数据库 的单级压缩的方法的流程图。
图6是示出根据本公开的一些实施例的用于将键范围对象写入 对象存储设备的方法的流程图。
图7是示出根据本公开的一些实施例的用于访问对象存储设备 的设备的硬件图。
具体实施方式
具体实施方式现在将在下文中参考附图更全面地描述本公开, 附图构成本发明的一部分,并且通过图示的方式示出了某些示例实施例。 然而,主题可以以各种不同的形式体现,因此涵盖或要求保护主题旨在被 解释为不限于本文所述的任何示例实施例;提供示例实施例仅用于说明。 同样,旨在提出要求保护或涵盖的主题的相当广泛的范围。其中,例如, 主题可以体现为方法、设备、组件或***。因此,实施例可以例如采用硬 件、软件、固件或其任何组合的形式(除软件本身之外)。因此,以下详 细描述不应被视为具有限制意义。
在整个说明书和权利要求中,术语可能具有超出明确规定的含 义的在文中有建议或暗示的细微差别。在本文中使用的短语“在一个实施 例中”不一定指代相同的实施例,并且如在此使用的短语“在另一个实施 例中”不一定指代不同的含义。实施例。例如,旨在要求保护的主题包括 整个或部分示例实施例的组合。
通常,术语可以至少部分地从上下文中的使用来理解。例如, 如本文所使用的诸如“和”、“或”或“和/或”的术语可以包括可以至 少部分地取决于使用这些术语的上下文的各种含义。通常,“或”如果用 于关联列表,例如A、B或C,则意指A、B和C,此处使用的是包含性 意义,以及A、B或C,此处使用的是排他性意义。另外,如本文所使用 的,术语“一个或多个”,至少部分地取决于上下文,可以用于以单数意 义描述任何特征、结构或特征、或者可以用于以复数意义描述多个意义上 的特征、结构或特征的组合。类似地,诸如“一个”、“一个”或“所述” 之类的术语可以被理解为传达单数用法或传达复数用法,这至少部分地取决于上下文。另外,术语“基于”可以被理解为不一定旨在传达一组排他 性因素,而是可以替代地允许存在不一定明确描述的其他因素,这至少部 分地取决于上下文。
下面参考方法和设备的框图和操作说明来描述本公开。应当理 解,框图或操作图示的每个框以及框图或操作图示中的框的组合可以借助 于模拟或数字硬件和计算机程序指令来实现。这些计算机程序指令可以提 供给通用计算机的处理器以改变其在此详述的功能、专用计算机、ASIC 或其他可编程数据处理装置,使得执行指令通过计算机的处理器或其他可 编程数据处理装置,实现在框图或操作块或块中指定的功能/动作。在一 些替代实施方式中,框中提到的功能/动作可以不按照操作图示中指出的 顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者 这些方框有时可以以相反的顺序执行,这取决于所涉及的功能/动作。
这些计算机程序指令可以提供给以下处理器:通用计算机,以 将其功能改变为特殊用途;专用计算机;ASIC;或者其他可编程数字数 据处理装置,使得通过计算机或其他可编程数据处理装置的处理器执行的 指令实现在框图或操作块或块中指定的功能/动作,从而根据本文的实施 例转换它们的功能。
为了本公开的目的,计算机可读介质(或计算机可读存储介质/ 介质)存储计算机数据,所述数据可以包括可由计算机执行的机器可读形 形式的计算机程序代码(或计算机可执行指令)。作为示例而非限制,计 算机可读介质可包括用于有形或固定存储数据的计算机可读存储介质,或 用于对包含代码的信号进行瞬时解释的通信介质。这里使用的计算机可读 存储介质,是指物理或有形存储(与信号相对),并且包括但不限于以任 何方法或技术实现的易失性和非易失性、可移动和不可移动介质,用于有 形存储诸如计算机可读指令之类的信息、数据结构、程序模块或其他数据。 计算机可读存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪 存或其他固态存储器技术、CD-ROM、DVD或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备,或可用于有形存储所需信息或数据 或指令的且可由计算机或处理器访问的任何其他物理或材料介质。
图1示出了两级LSM树的操作。
树包括两个级别(102,104)。在一个实施例中,级别0(102) 可以存储在本地存储器(例如,随机存取存储器(RAM))中。级别1 (104)可以存储在固态设备(SSD)上。每个级别(102,104)具有相应 的容量(102A,104)。每个数据项(A到G)具有固定的大小。在所示 的实施例中,项A到G被分配给可排序的键(按字母顺序示出,尽管也 可以使用数字键)。
如图所示,在***项目C之前,在每个层内对键进行排序。因 此,在层0(102)中,键被排序(B,F),并且在层1中,每个范围(104B, 104C)被排序(分别为A和D以及E和G)。如图所示,在时间t0,项 目C(106)被***层0(102)。但层0(102)的容量(102A)不足以容 纳项目C(106),因此需要压缩。
分别示出了在时间t1A和t1B压缩过程的两个实施例。在第一实 施例(t1A)中,层0(102)的内容被刷新并***层1(104)。在所述实 施例中,先前在层0(102)中的每个项目(A,B)被***到有序范围(104D, 104E)中。因而,键范围(104B,104C)的大小增加到范围(104D,104E) 以容纳项目B和F。项目C(106)被***到层0(102)中。
在第二实施例中,可以从层0(102)仅压缩极小数量的项目以 支持项目C(106)的***。在所述实施例中,项目B和F中的一个可以 压缩到层1(104)。在所示实施例中,选择项目F并将其压缩到范围(102E)。 然后将项目C(106)***层0(102)。如图所示,可以不要求对层0(102) 中的项目进行排序,以在达到容量(102A)时支持类似堆栈的项目弹出。 另外,虽然例示为非交叠,层1(104)可以包括交叠的键范围。相反, 超出层1(104)的层(未示出)可能需要非交叠的键范围。
图2A示出了基于块的存储设备中的文件操作的框图。
LSM树数据库(202)被配置为处理来自第三方应用(未示出) 的键值对的读和写请求。为了处理这些键值对,数据库(202)向基础的 基于块的字段***(204)发出写入、读取和删除文件命令(220)。通常, 命令(220)可以包括任何支持的文件***命令(例如,***调用)。在 文件***(204)级,高级读/写/删除命令(220)被转换成利用要写入SSD 的数据的逻辑块的写/读/擦除命令(222)。这些基于块的命令(222)被 发送到块设备驱动器(206)。在一个实施例中,驱动器(206)包括安装 在操作***内的基于块的设备驱动器。驱动器(206)将读/写/擦除命令 (222)的基于块的表示转换为利用与底层数据相关联的逻辑块地址 (LBA)标识符的命令。然后将这些基于LBA的命令(224)发送到SSD 接口(208)以进行处理。如图所示,SSD接口(208)驻留在SSD或类 似的存储设备(例如,NAND闪存设备)上。接口(208)将命令(224) 中的LBA转换为物理块地址(PBA)位置。通常,LBA到PBA映射存储 在安装在SSD中的动态随机存取存储器(DRAM)中。
SSD接口(208)将PBA处理的结果返回到块设备驱动器(206)。 驱动器(206)将LBA转换为块地址,并将数据返回给文件***(204), 文件***(204)又响应于由数据库(202)发出的***调用。
图2B示出了基于对象的存储设备中的文件操作的框图。
在所示实施例中,数据库(202)包括与图2A中相同的外部接 口接口。也就是说,第三方应用程序以与传统的基于块的***相同的方式 发出读取、写入、删除等。然而,在图2B中,省略了块文件***(204) 和块设备驱动器(206),并且使用对象设备驱动器(210)直接执行文件 操作。以这种方式,图2B中的改进的基于对象的***可以完全替换图2A 中的基于块的***,而没有对访问数据库(202)的应用程序进行任何改 变。
在图2B中,然而,文件操作的转换是从数据库特定命令到创 建/读/写/删除对象命令(230)。这些命令操作在对象级而不是如图2A所 示的块级。
命令(230)被发送到对象设备驱动器(210),对象设备驱动 器(210)将数据库对象命令转换为SSD对象命令(232)。在一个实施 例中,这些命令可以基本上相似,因为它们都在对象级别上操作。驱动器 (210)将SSD命令(232)发布到SSD接口(212),SSD接口(212) 对底层SSD设备执行对象级操作。
图3是示出根据本公开的一些实施例的对象存储设备(OSD) 的架构的框图。
在所示设备中,数据存储在一个或更多个通道或裸片(306A,306B)上。尽管示出了两个通道,但是在实践中可以实现更多或更少的通 道。每个通道包括一组平面(例如,304A,304B),并且每个平面(例 如,304A)包括多个块(例如,302A-1,302A-2,302A-3...302A-N)。尽 管未示出,但每个块包括一组页面,这些页面表示设备中可读和可写数据的最小单元。相反,块是设备中可擦除数据的最小单位。
在传统SSD中,写入设备的对象(308)可以被分割(使用文 件***块)并且存储在整个存储空间中的各种页面上。实际上,这些文件 ***块在页面上与其他非相关对象交错。因此,单个块(例如,302A-1) 可以包括用于多个对象的数据。当传统***从设备上或在设备上擦除或更 新对象时,它们不能简单地擦除与擦除对象相关联的块。相反,所述设备将包含对象数据的页面标记为无效(例如,在页面的带外区域)。稍后, 设备执行垃圾收集(GC)例程,所述例程识别无效页面并将包含无效页 面的块上的其他页面移动到新块。然后GC过程擦除块,确保不会无意中 擦除未擦除的数据。最后,在GC过程完成后更新LBA到PBA地址。
与所述操作相反,所示设备将对象数据存储在连续块上。例如, 对象(308)被划分并跨越在连续组(310)中的快被存储(即,块302A-1, 302A-2,202B-2,202C-2和302D-2)。块的具体布置和数量不受限制。 以这种方式,每个块与唯一对象相关联。因此,如果应用程序修改或删除 块,则不需要GC收集过程。也就是说,由于每个块对应于单个对象,因 此可以立即擦除或修改所述块,因为不存在无关块的数据丢失风险。
如图所示,所述设备另外包括存储在DRAM(312)内的对象 到块的映射(314)。在传统***中,DRAM(312)却包括LBA到PBA 的映射。相反,所示设备用对象到块映射(314)替换(或补充)LBA到 PBA映射,所述对象到块映射(314)用于在读取、写入、擦除和其他操 作期间将对象标识符转换为物理块地址。在一个实施例中,映射(314) 存储每个物理块和对象标识符(包括未使用的物理块地址)的映射。在可 替代的实施例中,映射(314)可以仅包括使用过的PBA到对象的映射。 在所述实施例中,块的OOB区域可以存储指向下一个连续块的指针。
作为示例,图3中示出的页面的大小大约可以是2KB(与每页 额外的OOB存储空间)。给定块可以包括64页,总大小约为131KB。对 象(308)可以包括780KB对象。在此示例中,***确定需要六个块(总 共786KB的可用存储空间)来容纳所述对象。另外,在最坏的情况下, 传统***可以将对象(308)分割成390个不同的块(例如,在2048个总 块中),每个块上的单个页面存储对象的2KB部分。
图4A示出了根据本公开的一些实施例的OSD中的写入操作。 在一个实施例中,图1中的图4A方法由OSD的控制器执行。在一个实施 例中,所述OSD的控制器包括专用集成电路(ASIC)应用或其他类型的 处理元件。
在步骤401中,所述方法接收写命令。
在一个实施例中,写命令包括要写入的数据以及对象标识符。 对象标识符的特定形式和特定内容不受限制性。通常,对象标识符可以包 括任何唯一标识符(例如,唯一的字母数字代码)。
在步骤403中,所述方法识别可用块。
在一个实施例中,所述方法可以针对每个命令分析SSD的块。 然而,为了提高性能,所述方法可以使用存储在DRAM中的所有块的映 射。在所述实施例中,所述方法在存储器中识别哪些块当前未被分配。在 一个实施例中,所述方法通过块的连续迭代来定位可用的块范围。在一个 实施例中,所述方法基于块大小和要写入的数据的大小来确定所需的块的 数量。
在步骤405中,所述方法将要写入的数据写入在步骤407中识 别的块。在可替换实施例中,所述方法可以监视写入过程以确定是否有任 何写入失败。如果写入失败,则所述方法可以尝试再次写入错误生成块。 或者,所述方法可以选择新的空闲块并尝试将数据写入新的空闲块。
在步骤407中,所述方法更新对象到PBA的映射。
在完成写入之后,所述方法访问DRAM中的映射并用新的块地 址记录对象标识符以供稍后检索(下文讨论)。
在一个实施例中,图4A中所示的方法可以另外用来处理附加 命令。在一个实施例中,附加命令包括对象标识符和要写入的数据。由于 给定对象的数据是以块为基础存储的,因此所述方法将新数据写入其他块 并更新对象到PBA的映射。因此,在附加操作期间不需要重新排列数据, 因为每个块唯一地与对象相关联。
另外,在另外的实施例中,图4A中所示的方法可用于处理更 新操作。在所述实施例中,所述方法使用PBA来识别与在步骤403中要 更新的数据相关联的单个块(或块组)。在一个实施例中,对象到PBA 映射存储有序的映射列表。因此,段1、2和3可以映射到块4、5和6。 如果更新影响段2,则所述方法基于映射中的块的顺序次序识别块5。在 所述示例中,所述方法首先擦除块5,然后在步骤405中写入更新的数据。 在替换实施例中,所述方法可以将更新的对象的所有块读取到存储器中并 擦除与所述对象相关联的所有块。然后所述方法可以在存储器中重建所述 对象并使用在步骤401中接收的新数据更新重建的对象。在重建之后,所 述方法然后可以继续步骤403到407,就像接收到新的写命令一样。
图4B示出了根据本公开的一些实施例的OSD中的读取操作。 在一个实施例中,图4B中的方法由OSD的控制器执行。
在步骤411中,所述方法接收读取命令。
在一个实施例中,读取命令包括对象标识符。通常,对象标识 符可以包括任何唯一标识符(例如,唯一的字母数字代码)。可以经由对 象设备驱动器接收读取命令,所述对象设备驱动器基于主机应用程序读取 来生成读取命令。
在步骤413中,所述方法识别与对象识别符相关联的块。如上 所讨论,所述方法访问对象到PBA的映射以识别一个或更多个与对象识 别符相关联的块。
在步骤415,所述方法从每个块读取数据。
在步骤417,所述方法返回从每个块读取的数据。
所述方法可以进一步重新排列从每个块读取的数据(基于对象 到PBA映射),以在不按顺序读取块的情况下重建数据。
图4C示出了根据本公开的一些实施例的OSD中的擦除操作。 在一个实施例中,图4C中的方法由OSD的控制器执行。
在步骤421中,所述方法接收擦除命令。
在一个实施例中,擦除命令包括对象标识符。通常,对象标识 符可以包括任何唯一标识符(例如,唯一的字母数字代码)。擦除命令可 以经由对象设备驱动器接收,所述对象设备驱动器基于主机应用擦除(例 如,通过压缩触发的擦除)生成擦除命令。
在步骤423中,所述方法识别在步骤421中接收的与对象标识 符相关联的块。所述步骤可以结合图B4的步骤413所描述的那样执行。 其公开内容通过引用整体并入本文。
在步骤425中,所述方法擦除在步骤423中识别的块。与现有 存储设备相比,步骤425中的方法擦除整个块,因为每个块仅保证包括给 定对象的数据。
在步骤427中,所述方法更新对象到PBA映射。
如上所述,对象到PBA映射存储在DRAM中,并且在步骤427 中,所述方法可以移除在步骤421中接收的对象标识符与任何块之间的所 有映射,从而释放用于将来写入/修改/追加的那些块。
图5是示出根据本公开的一些实施例的用于执行LSM树数据库 的单级压缩的方法的流程图。
在步骤501中,所述方法接收***命令。
在一个实施例中,所述***命令包括键和值。在一个实施例中, 键可以包括字母数字键或类似值。如图所示,步骤501(和步骤503-513) 在本地存储器(例如,RAM)的上下文中执行。
在步骤503中,所述方法确定键/值的***是否将导致存储器溢 出。
在一个实施例中,步骤503-513全部发生在存储器中。在一个 实施例中,所述方法指定本地存储器的一部分(例如,RAM)来存储第 一层键值对和键范围。在一个实施例中,所述本地存储器分区具有固定大 小。所述分区称为存储缓冲区。
在步骤503中,所述方法计算存储缓冲区中剩余的空闲空间。 如果存储缓冲区包括足够的空闲空间来存储在步骤501中接收的键/值, 则所述方法在步骤505将键/值写入存储缓冲区。在可选步骤507中,所 述方法还可以在***键之后组合交叠的键范围。例如,如果存储缓冲区包 括键范围1-3、5-7和10-15并且***命令包括键4,则所述方法可以将键范围1-3和5-7组合到单个范围1-7。在一些实施例中,以保持键排序的 方式完成将键***存储缓冲器中的操作。在备选实施例中,所述方法以堆 栈模式***键,所述模式不保持键排序。
如果所述方法可以将键/值***存储缓冲器而不溢出缓冲器,则 所述方法在步骤507之后结束。
或者,所述方法可以确定键/值的***将导致存储缓冲器溢出 (步骤503)。在这种情况下,所述方法必须将存储缓冲区的一部分移动 到持久存储。
在检测到潜在溢出时,所述方法在步骤509中选择键范围。在 一个实施例中,键范围指的是顺序排序而没有丢失键的一个或更多个键。 因此,键1-3或123-200形成一系列键。
在步骤511中,所述方法创建键范围对象。
在一个实施例中,键范围对象包括以键排序的一组顺序键范围 对。对象本身由单个对象标识符标识,所述标识符可以包括字母数字标识 符。在一个实施例中,键范围由单个文件表示,并且对象标识符可以包括 键范围对象的文件名。
在步骤513中,所述方法发出具有键范围对象的写命令。
在一个实施例中,写命令包括用于将数据写入存储设备的任何 合适的命令。在所示实施例中,写命令对应于由对象存储设备的驱动器支 持的写对象命令,如上所述。写命令通常包括对象标识符和键范围对象的 内容。
在所示实施例中,使用存储缓冲器执行步骤501-513。因此, 可以使用存储器映射的读/写/擦除命令来执行每个操作。然而,使用对象 存储设备的应用程序编程接口(API)来执行步骤515到527。
在步骤515中,所述方法将对象写入LSM树的级别0。
在所示实施例中,所述对象对应于与对象标识符相关联的键范 围。在一个实施例中,将对象写入级别0包括两个进程。首先,实现所述 方法的LSM数据库必须使用LSM数据库组织的级别逻辑处理写入。此外, OSD的控制器还必须发出写入以确保对象实际上写入底层存储介质。
在步骤517中,所述方法确定写入级别0是否将导致所述级别 的溢出。
与步骤503类似,OSD上的级别0可以在逻辑上被分配预定义 的存储容量。在步骤503中,所述方法计算级别0内的剩余空闲空间,并 确定是否存在足够的空闲空间以容纳在步骤511中创建的对象的写入。
如果在级别0中有足够的可用空间,则所述方法写入对象并结 束。虽然写入(步骤515)被示为在分析自由空间之前发生(步骤517), 但是这些步骤的顺序可以颠倒(如步骤503、505和509所示)。
如果所述方法确定将对象写入级别0将导致所述级别的溢出, 则所述方法继续启动第二个压缩过程。
在步骤519中,所述方法选择级别0键范围。
在所示实施例中,选择级别0键范围可以包括与步骤511中描 述的类似操作。具体地,所述方法选择存储在级别0中的一个或更多个键 范围。在一个实施例中,所述方法选择数量基于从步骤515写入对象所需 的存储空间的键范围。在一些实施例中,可以任意选择所选范围。在其他 实施例中,所述方法可以记录访问频率并选择较不频繁访问的键范围。或 者,所述方法可以将级别0视为堆栈或队列,并且分别以编程方式选择结 构的顶部或末端处的项目。
在步骤521中,所述方法识别级别1中的交叠键范围。
如前所述,每个级别可以包括各种范围内的重复键。作为一个 示例,级别0可以包括键范围100-200,级别1可以包括键范围130-180 和190-240。在步骤521中,所述方法确定级别0中的所选对象与级别1 中的对象之间的交叠程度。因此,在先前的示例中,范围100-200包括范 围130-180并且部分地包括范围190-240。另外,所选对象“桥接”范围 190-240和130-180(即,范围181-189)的末端之间的间隙。因此,在压 缩期间,范围130-180和190-240与范围100-200组合以形成新的级别1 键范围。
在步骤523中,所述方法基于所识别的范围生成新的级别1键 范围对象。
在一个实施例中,新的级别1键范围对象包括由对象标识符表 示的文件。文件的内容包括标识的级别0和级别1范围中的键/值对。在 一个实施例中,新的级别1键范围对象的生成可以由LSM数据库执行。
在步骤525中,所述方法写入新的级别1键范围对象。由图4B 中的OSD设备执行的内部操作给出了参考。图6中描述了步骤525的详 细操作。
图6是示出根据本公开的一些实施例的用于将键范围对象写入 对象存储设备的方法的流程图。
在步骤601中,所述方法接收键范围对象写请求。在一个实施 例中,LSM树数据库通过发出对OSD驱动器提供的写命令的***调用来 启动步骤525(并因此启动步骤601)。
在步骤603中,所述方法提取键范围子对象。
在一个实施例中,键范围子对象指的是要压缩的级别0和1(以 及可能的附加级别)键范围。在一个实施例中,该子对象包括要压缩的对 象的对象标识符。
在步骤605中,所述方法为每个对象标识符识别PBA。
如前所述,DRAM中的映射将对象标识符映射到与对象标识相 关联的物理块地址。因此,在步骤605中,所述方法使用子对象标识符来 生成物理块地址的列表。
在步骤607中,所述方法向包括在PBA列表中的每个块发出擦 除命令。
如图所示,所述方法不执行物理块中的数据的任何复制,因为 每个物理块被唯一地分配给给定级别的键范围。因此,在步骤607中,所 述方法为每个PBA发出单个擦除请求。在一个实施例中,擦除请求将整 个块标记为无效。
在步骤609中,所述方法然后将在步骤601中接收的数据写入 存储。
因此,在执行步骤601-609之后,所述方法使所有先前的压缩 的键范围对象无效并写入新的键范围对象。此过程不会将页面级数据复制 到新块,而是使整个块无效。因此,在任何后续的垃圾收集过程中,不需 要复制,因为整个块已被标记为无效。这种复制的删除增强了OSD由于 删除复制而而垃圾收集无效页面的速度。
返回参考图5,在一些实施例中,所述方法可以不在步骤515 中写入级别0对象,而是可以推迟写入直到执行步骤517-525。在所述实 施例中,在执行步骤525之后,所述方法可以在使用步骤519-525释放存 储空间之后将级别0对象写入级别0存储。在一个实施例中,使用图4A 中描述的方法执行级别0对象的写入。在图4A中,其公开内容通过引用 整体并入。
图7是示出根据本公开的一些实施例的用于访问对象存储设备 的设备的硬件图。
客户端设备可以包括比图7中所示的组件更多或更少的组件。 然而,所示组件足以公开用于实现本公开的说明性实施例。
如图7所示,客户端设备包括经由总线(714)与大容量存储器 (704)通信的处理单元(CPU)(702)。客户端设备还包括一个或更多 个网络接口(716)、音频接口(718)、显示器(720)、键盘(722)、 发光器(724)、输入/输出接口(726)和相机(s)或其他光学、热或电 磁传感器(728)。客户端设备如本领域技术人员所理解的,可以包括一 个相机/传感器(728)或多个相应/传感器(728)。
客户端设备可以可选地与基站(未示出)通信,或者直接与另 一计算设备通信。网络接口(716)包括用于将客户端设备联接到一个或 更多个网络的电路,并且被构造用于与一个或个多个通信协议和技术一起 使用。网络接口(716)有时被称为收发器、收发设备或网络接口卡(NIC)。
音频接口(718)被布置为产生和接收音频信号,例如人声的声 音。例如,音频接口(718)可以联接到扬声器和麦克风(未示出)以实 现与其他人的通信并且为某些动作生成音频确认。显示器(720)可以是 液晶显示器(LCD)、气体等离子体、发光二极管(LED)或与计算设备 一起使用的任何其他类型的显示器。显示器(720)还可以包括触敏屏幕, 所述触敏屏幕被布置成接收来自诸如手指之类的物体或来自人手的数字 的输入。
键盘(722)可以包括被布置为从用户接收输入的任何输入设备。 例如,键盘(722)可以包括按钮数字拨盘或键盘。键盘(722)还可以包 括与选择和发送图像相关联的命令按钮。照明器(724)可以提供状态指 示和提供光。照明器(724)可以在特定时间段内或响应于事件而保持活 动。例如,当照明器(724)处于活动状态时,它可以对键盘(722)上的 按钮进行背光,并在客户端设备通电时保持打开状态。而且,当执行特定 操作时,照明器(724)可以以各种图案对这些按钮进行背光,例如拨打 另一个客户端设备。照明器(724)还可以使位于客户端设备的透明或半 透明壳体内的光源响应于动作而发光。
客户端设备还包括输入/输出接口(726),用于与外部设备(例 如UPS或交换机设备)或图7中未示出的其他输入或设备通信。输入/输 出接口(726)可以利用一种或多种通信技术,例如USB,红外,蓝牙TM等。
大容量存储器(704)包括RAM(706)、ROM(710)和其他 存储装置。大容量存储器(704)示出了用于存储诸如计算机可读指令、 数据结构、程序模块或其他数据之类的信息的计算机存储介质的另一示 例。大容量存储器(704)存储基本输入/输出***(“BIOS”)(712), 用于控制客户端设备的低级别操作。大容量存储器还可以存储用于控制客 户端设备的操作的操作***。应当理解,所述组件可以包括通用操作***, 例如UNIX版本,或LINUXTM,或专用客户端通信操作***,如Windows ClientTM操作***。操作***可以包括Java虚拟机模块或与 Java虚拟机模块接口,所述Java虚拟机模块能够通过Java应用程序控制 硬件组件和操作***操作。
存储器(704)还包括OSD设备驱动器(708)。如上所述, OSD设备驱动器(708)向存储设备(未示出)发出读取、写入和其他命 令。在一个实施例中,OSD设备驱动器(708)向OSD发出这样的命令 (730)。在一个实施例中,OSD(730)可以包括结合在此作为参考的图 3中描述的实现一个或多个NAND闪存芯片的固态驱动器或类似设备。通 常,OSD(730)包括任何基于NAND闪存的设备,所述基于NAND闪存 的设备实现诸如图3或其他附图中所示的基于对象的访问。
出于本公开的目的,模块可以是软件、硬件或固件(或其组合) ***、过程或功能、或其组件,以用于执行或促进本文所描述的过程、特 征和/或函数(有或没有人为的互动或增强)。模块可以包括子模块。模 块的软件组件可以存储在计算机可读介质,用于由处理器执行。模块可以 是一个或多个服务器的组成部分,或者由一个或多个服务器加载和执行。可以将一个或多个模块分组为引擎或应用程序。
本领域技术人员将认识到,本公开的方法和***可以以许多方 式实现,并且因此不受前述示例性实施例和示例的限制。换句话说,由单 个或多个组件,以各种方式组合的硬件和软件或固件以及各个功能执行的 功能元件可以在客户端级别或服务器级别或两者之间分布在软件应用程 序中。在这方面,本文描述的不同实施例的任何数量的特征可以组合成单 个或多个实施例,并且具有少于或多于所有特征的替代实施例这里描述的 是可能的。
功能也可以全部或部分地以现在已知的或已知的方式分布在多 个组件之间。因此,无数的软件/硬件/固件组合可以实现这里描述的功能、 特征、接口和偏好。此外,本公开的范围涵盖执行描述的特征和功能以及 接口所述公开的常规已知方式,以及对本文描述的硬件或软件或固件组件 可能进行的那些变化和修改,这对本领域技术人员现在和将来可以理解。
此外,作为示例提供了作为本公开中的流程图呈现和描述的方 法的实施例,以便提供对所述技术的更完整的理解。所公开的方法不限于 这里给出的操作和逻辑流程。考虑了这样的实施例,其中改变了各种操作 的顺序,并且其中被描述为作为较大操作的一部分的子操作是独立执行 的。
尽管出于本公开的目的描述了各种实施例,但是不应认为这些 实施例将本公开的教导限制于那些实施例。可以对上述元件和操作进行各 种改变和修改,以获得剩余的结果在本公开中描述的***和过程的范围 内。

Claims (20)

1.一种方法,包括:
由处理器接收要写入日志结构合并LSM树的数据,所述数据包括键和值;
由处理器确定存储缓冲区缺少存储要写入的数据的能力;
由处理器压缩存储在对象存储设备OSD中的LSM树的至少一个级别中的键范围,每个键范围与相应的对象标识符相关联;
由处理器生成键范围对象,所述键范围对象包括与压缩的键范围的子集相关联的对象标识符;
通过所述OSD擦除与包括在生成的键范围对象中的每个对象标识符相对应的物理块;和
通过OSD将生成的键范围对象写入所述OSD的至少一个物理块。
2.一种方法,包括:
在对象存储设备OSD处接收写请求,所述写请求包括多个对象标识符,所述多个对象标识符包括至少一个新对象标识符和至少一个现有对象标识符;
通过OSD擦除与现有对象标识符相关联的数据块;和
通过OSD写入与现有对象标识符相关联的数据和与新对象标识符相关联的数据。
3.如权利要求2所述的方法,擦除与现有对象标识符相关联的数据块包括使数据块中的所有页面无效。
4.如权利要求3所述的方法,该方法还包括由OSD触发垃圾收集例程,所述垃圾收集例程绕过对所擦除的数据块上的数据的复制。
5.如权利要求2所述的方法,接收写请求包括接收由日志结构合并树数据库压缩操作生成的写请求。
6.如权利要求2所述的方法,该方法还包括由OSD存储对象到物理块地址PBA映射。
7.如权利要求6所述的方法,该方法还包括:在擦除与现有对象标识符相关联的数据块之前,通过OSD使用所述至少一个现有对象标识符识别所述对象到PBA映射中的多个块。
8.如权利要求6所述的方法,写入与现有对象标识符相关联的数据和与新对象标识符相关联的数据还包括在写入数据之后更新对象到PBA映射。
9.如权利要求2所述的方法,接收写请求包括接收键范围对象,所述键范围对象包括多个键和与所述多个键相关联的多个值。
10.如权利要求2所述的方法,其特征在于,接收写请求包括经由对象设备驱动器接收写请求。
11.如权利要求2所述的方法,写入与现有对象标识符相关联的数据和与新对象标识符相关联的数据包括基于所述OSD的块大小分割所述数据并将分割数据写入多个块,所述多个块仅存储响应于所述写请求而写入的数据。
12.一种装置,包括:
存储介质,所述存储介质以多个块存储数据,每个块具有多个页面;
对象接口,所述对象接口被配置为从对象设备驱动器接收命令;和
控制器,所述控制器可通信地联接到存储介质和所述对象接口,并且被配置为经由所述对象接口接收命令,所述控制器还包括存储的程序,所述存储的程序包括:
逻辑,所述逻辑由控制器执行,用于接收写请求,所述写请求包括多个对象标识符,所述多个对象标识符包括至少一个新对象标识符和至少一个现有对象标识符,
逻辑,所述逻辑由控制器执行,用于擦除与现有的对象标识符相关联的数据块,和
逻辑,所述逻辑由控制器执行,用于写入与现有对象标识符相关联的数据和与新对象标识符相关联的数据。
13.如权利要求12所述的装置,所述用于擦除与所述现有对象标识符相关联的数据块的逻辑包括用于使所述数据块中的所有页面无效的逻辑。
14.如权利要求13所述的装置,所述逻辑还包括由所述控制器执行的用于触发垃圾收集例程的逻辑,所述垃圾收集例程绕过对所擦除的数据块上的数据的复制。
15.如权利要求12所述的装置,用于接收写请求的逻辑包括由所述控制器执行的逻辑,用于接收由日志结构化合并树数据库压缩操作生成的写请求。
16.如权利要求12所述的装置,还包括:动态随机存取存储器,所述动态随机存取存储器用于存储对象到物理块地址PBA映射。
17.如权利要求16所述的装置,所述逻辑还包括由所述控制器执行的这样的逻辑,即,所述逻辑用于在擦除与所述现有对象标识符相关联的数据块之前,使用至少一个现有对象标识符识别所述对象到PBA映射中的多个块。
18.如权利要求16所述的装置,用于写入与所述现有对象标识符相关联的数据和与所述新对象标识符相关联的数据的逻辑还包括由所述控制器执行的用于在写入所述数据之后更新所述对象到PBA映射的逻辑。
19.如权利要求12所述的装置,用于接收写请求的逻辑包括由所述控制器执行的用于接收键范围对象的逻辑,所述键范围对象包括多个键和与所述多个键相关联的多个值。
20.如权利要求12所述的装置,用于写入与现有对象标识符相关联的数据和与新对象标识符相关联的数据的逻辑包括由控制器执行的这样的逻辑,及,所述逻辑用于基于存储介质的块大小来分割数据并将分割数据写入多个块,所述多个块仅存储响应于所述写请求而写入的数据。
CN201910339317.0A 2018-04-26 2019-04-25 使用对象固态驱动器(ssd)设备的基于日志结构合并(lsm)树的数据库的优化 Active CN110413592B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/963,386 2018-04-26
US15/963,386 US10445022B1 (en) 2018-04-26 2018-04-26 Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices

Publications (2)

Publication Number Publication Date
CN110413592A true CN110413592A (zh) 2019-11-05
CN110413592B CN110413592B (zh) 2023-01-17

Family

ID=68165241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910339317.0A Active CN110413592B (zh) 2018-04-26 2019-04-25 使用对象固态驱动器(ssd)设备的基于日志结构合并(lsm)树的数据库的优化

Country Status (3)

Country Link
US (1) US10445022B1 (zh)
CN (1) CN110413592B (zh)
TW (1) TW201945961A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612415A (zh) * 2020-12-22 2021-04-06 新华三大数据技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN113094292A (zh) * 2020-01-09 2021-07-09 上海宝存信息科技有限公司 数据存储装置以及非挥发式存储器控制方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112015791B (zh) * 2019-05-30 2024-06-07 阿里云计算有限公司 数据处理方法、装置、电子设备及计算机存储介质
CN112783417A (zh) * 2019-11-01 2021-05-11 华为技术有限公司 数据缩减的方法、装置、计算设备和存储介质
KR20210077467A (ko) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US11537569B2 (en) * 2020-09-01 2022-12-27 Salesforce.Com, Inc. Merges using key range data structures
US11636041B2 (en) 2020-10-12 2023-04-25 Seagate Technology Llc Object storage data storage systems and methods
CN113094372A (zh) 2021-04-16 2021-07-09 三星(中国)半导体有限公司 数据存取方法、数据存取控制装置及数据存取***
US20230145784A1 (en) * 2021-11-08 2023-05-11 Netapp, Inc. Combined garbage collection and data integrity checking for a distributed key-value store
US20240126738A1 (en) * 2022-10-18 2024-04-18 Cockroach Labs, Inc. Systems and methods for range keys to enable efficient bulk writes in log-structured merge tree storage

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086303A1 (en) * 2011-09-30 2013-04-04 Fusion-Io, Inc. Apparatus, system, and method for a persistent object store
CN103098034A (zh) * 2010-07-28 2013-05-08 Fusion-Io股份有限公司 用于条件和原子存储操作的装置、***和方法
CN106610900A (zh) * 2015-10-22 2017-05-03 蜂巢数据有限公司 消除nand闪存设备中的无用单元收集

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895486B2 (en) * 2002-08-29 2005-05-17 Micron Technology, Inc. Linear object management for a range of flash memory
US7257690B1 (en) 2004-10-15 2007-08-14 Veritas Operating Corporation Log-structured temporal shadow store
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US8924664B2 (en) * 2012-12-13 2014-12-30 Infinidat Ltd. Logical object deletion
US9646067B2 (en) 2013-05-14 2017-05-09 Actifio, Inc. Garbage collection predictions
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
EP3230863B1 (en) * 2014-12-09 2022-03-02 Hitachi Vantara LLC A system and method for providing thin-provisioned block storage with multiple data protection classes
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US9959207B2 (en) 2015-06-25 2018-05-01 Vmware, Inc. Log-structured B-tree for handling random writes
US9785366B1 (en) 2015-12-30 2017-10-10 EMC IP Holding Company LLC Unbuffered log-structured storage
US10628305B2 (en) 2016-05-13 2020-04-21 International Business Machines Corporation Determining a data layout in a log structured storage system
US10592348B2 (en) 2016-06-17 2020-03-17 Acronis International Gmbh System and method for data deduplication using log-structured merge trees
US11080155B2 (en) * 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10795871B2 (en) * 2016-09-26 2020-10-06 Vmware, Inc. Key-value stores implemented using fragmented log-structured merge trees
US10303363B2 (en) 2016-10-19 2019-05-28 Acronis International Gmbh System and method for data storage using log-structured merge trees
US10706106B2 (en) * 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US11079942B2 (en) * 2017-07-07 2021-08-03 Sap Se Shared filesystem for distributed data storage system
US10468077B2 (en) * 2018-02-07 2019-11-05 Intel Corporation Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103098034A (zh) * 2010-07-28 2013-05-08 Fusion-Io股份有限公司 用于条件和原子存储操作的装置、***和方法
US20130086303A1 (en) * 2011-09-30 2013-04-04 Fusion-Io, Inc. Apparatus, system, and method for a persistent object store
CN106610900A (zh) * 2015-10-22 2017-05-03 蜂巢数据有限公司 消除nand闪存设备中的无用单元收集

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094292A (zh) * 2020-01-09 2021-07-09 上海宝存信息科技有限公司 数据存储装置以及非挥发式存储器控制方法
US11520698B2 (en) 2020-01-09 2022-12-06 Shannon Systems Ltd. Data storage device in a key-value storage architecture with data compression, and non-volatile memory control method
CN112612415A (zh) * 2020-12-22 2021-04-06 新华三大数据技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN112612415B (zh) * 2020-12-22 2022-08-30 新华三大数据技术有限公司 一种数据处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
TW201945961A (zh) 2019-12-01
CN110413592B (zh) 2023-01-17
US10445022B1 (en) 2019-10-15
US20190332329A1 (en) 2019-10-31

Similar Documents

Publication Publication Date Title
CN110413592A (zh) 使用对象固态驱动器(ssd)设备的基于日志结构合并(lsm)树的数据库的优化
US11210220B2 (en) Log-structured storage for data access
CN104246764B (zh) 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置
US11481121B2 (en) Physical media aware spacially coupled journaling and replay
US11249664B2 (en) File system metadata decoding for optimizing flash translation layer operations
CN103765393B (zh) 存储***
CN104199815B (zh) 在重复数据删除***中减少摘要存储消耗的方法和***
CN108475232A (zh) 使用xcopy和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式
CN106663047A (zh) 用于优化的签名比较和数据复制的***和方法
US20070300009A1 (en) Flash driver support techniques
JP6598996B2 (ja) データ準備のためのシグニチャベースのキャッシュ最適化
CN106662981A (zh) 存储设备、程序和信息处理方法
WO2015183511A1 (en) System and method for distributed computing in non-volatile memory
CN103186617B (zh) 一种存储数据的方法和装置
US8914428B2 (en) System and method for maintaining a file system at a computing device
JP2006527874A5 (zh)
Fevgas et al. LB-Grid: An SSD efficient grid file
US11379408B2 (en) Pointer-based dynamic data structures in key-value stores
US7386692B1 (en) Method and apparatus for quantized deadline I/O scheduling
CN1604046A (zh) 用于管理关于目标卷与源卷之间关系的信息的方法和***
US20230409536A1 (en) File system metadata layout for append-only storage
US11334482B2 (en) Upgrading on-disk format without service interruption
Lee et al. Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds
CN101751390B (zh) 物件导向储存装置的磁盘配置方法
US11269837B2 (en) Data tree checkpoint and restoration system and method

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