首页> 中国专利> 数据存取方法、数据存取控制装置及数据存取系统

数据存取方法、数据存取控制装置及数据存取系统

摘要

提供了一种数据存取方法、数据存取控制装置及数据存取系统,所述数据存取方法包括:响应于接收到第一键值对,生成与第一键值对中的键相应的索引;将与所述键和所述索引相应的键索引对写入块存储装置中,其中,所述键索引对以日志结构合并树LSM‑Tree结构在所述块存储装置中存储;将与所述索引和第一键值对中的值相应的索引值对写入键值固态驱动器KV SSD。

著录项

  • 公开/公告号CN113094372A

    专利类型发明专利

  • 公开/公告日2021-07-09

    原文格式PDF

  • 申请/专利号CN202110413837.9

  • 申请日2021-04-16

  • 分类号G06F16/22(20190101);G06F16/23(20190101);G06F16/245(20190101);

  • 代理机构11286 北京铭硕知识产权代理有限公司;

  • 代理人曾世骁;于翔

  • 地址 710000 陕西省西安市高新区洨河北路1999号

  • 入库时间 2023-06-19 11:45:49

说明书

技术领域

本申请涉及数据存取技术领域,更具体地,涉及一种数据存取方法、数据存取控制装置及数据存取系统。

背景技术

日志结构合并树LSM-Tree(Log-Structured Merge-Tree)是目前主流数据库引擎常采用的数据存储架构。

参照图1示出的经典Level DB LSM-Tree的存储过程的示意图,整个存储过程主要包括:步骤1,将应用层写入的键值对直接追加写入日志(Log)文件;步骤2,将随机写入内存的memTable并进行排序;步骤3,memTable写满后被标记为不可写的immutable;步骤4,immutable的数据刷入块存储装置第0层(L0)的SSTable(SortedString Table)文件中;步骤5,后台线程对SSTable逐层进行归并压缩(Compaction)。其中,在步骤4和步骤5中,针对块存储装置的输入和输出都是顺序操作。

如上所述,LSM-Tree在块存储装置中的存储过程,采用顺序写入机制,这可以极大地提升块(Block)存储装置(例如,HDD-Hard Disk Drive,Block SSD–Block Solid StateDrive)的写性能。同时LSM-Tree如上所述,基于块存储装置的LSM-Tree数据库引擎依赖于文件系统进行SSTable文件写入,可以很好地应用于块存储设备。

然而,在写入数据或更新数据时,由于块存储装置所有的写入都是追加写入(append-only),不是原地更新(in-place update),失效数据不会马上被清理掉。因此LSM-Tree在块存储装置中的存储存在严重的空间放大(Space Amplification)问题,进而导致SSD的使用寿命缩短,同时增加存储成本的问题。

那如何既能利用LSM-Tree数据库在块存储设备中快速写入(顺序写入)的性能,以及LSM-Tree的SSTable文件存储对块存储设备的依赖关系,又能延长数据库的存储设备寿命,降低数据库存储成本,是本发明亟待解决的问题。

发明内容

本发明的示例性实施例在于提供一种数据存取方法、数据存取控制装置以及数据存储系统,在既能利用LSM-Tree数据库在块存储设备中快速写入的性能(顺序写入),以及LSM-Tree的SSTable文件存储对块存储设备的依赖关系的同时,又以期延长数据库的存储设备寿命,降低数据库存储成本。

根据本发明的示例性实施例,提供一种数据存取方法,所述方法包括:响应于接收到第一键值对,生成与第一键值对中的键相应的索引;将与所述键和所述索引相应的键索引对写入块存储装置中,其中,所述键索引对以日志结构合并树LSM-Tree结构在所述块存储装置中存储;将与所述索引和第一键值对中的值相应的索引值对写入键值固态驱动器KVSSD。

可选地,所述方法还包括:响应于读取所述键的指令,在所述块存储装置中查找与所述键相应的键索引对;依据查找到的所述键索引对中的索引,从所述KV SSD中读取所述索引相应的所述值。

通过引入索引实现键值分离存取,在利用LSM-Tree数据库在块存储设备中快速写入的性能(顺序写入),以及LSM-Tree的SSTable文件存储对块存储设备的依赖关系的同时,有效解决了基于LSM-Tree数据库引擎无法适配到KV SSD的问题。

可选地,所述方法还包括:对所述块存储装置中存储的所述键索引对进行归并压缩。由于归并压缩操作针对的是索引,而索引的长度往往小于值的长度,因此,可以有效减小LSM-Tree的写放大和读放大。

可选地,在对第一键值对中的值更新时,所述方法还包括:响应于接收到与所述键和更新值相应的第二键值对,生成与所述键相应的所述索引;将与所述键和所述索引相应的所述键索引对写入所述块存储装置中;依据所述索引,用所述更新值覆盖所述KV SSD中所述索引对应的所述值。

由于在KV SSD中只存在与键相应的新值,因此本申请的键值存储方案能够有效减小存储数据的空间放大。

根据本发明的示例性实施例,提供一种数据存取控制装置,所述数据存取控制装置包括:索引生成单元,被配置为响应于接收到第一键值对生成与第一键值对中的键相应的索引;写入单元,被配置为:将与所述键和所述索引相应的键索引对写入块存储装置中,以及将与所述索引和第一键值对中的值相应的索引值对写入键值固态驱动器KV SSD,其中,所述键索引对以日志结构合并树LSM-Tree结构在所述块存储装置中存储。

可选地,所述数据存取控制装置还包括查找单元,被配置为:响应于读取所述键的指令,在所述块存储装置中查找与所述键相应的键索引对;依据查找到的所述键索引对中的索引,从所述KV SSD中读取所述索引相应的索引值对。

通过引入索引实现键值分离存取,利用LSM-Tree数据库在块存储设备中快速写入的性能(顺序写入),以及LSM-Tree的SSTable文件存储对块存储设备的依赖关系的同时,有效解决了基于LSM-Tree数据库引擎无法适配到KV SSD的问题。

可选地,所述数据存取控制装置还包括归并压缩单元,被配置为:对所述块存储装置中存储的所述键索引对进行归并压缩。由于归并压缩操作针对的是索引,而索引的长度往往小于值的长度,因此,可以有效减小LSM-Tree的写放大和读放大。

可选地,在对第一键值对中的值更新时,索引生成单元,还被配置为:响应于接收到与所述键和更新值相应的第二键值对,生成与所述键相应的所述索引;写入单元,还被配置为:将与所述键和所述索引相应的所述键索引对写入所述块存储装置中;以及依据所述索引,用所述更新值覆盖所述KV SSD中所述索引对应的所述值。由于在KV SSD中只存在与键相应的新值,因此本申请的键值存储方案能够有效减小存储数据的空间放大。

根据本发明的示例性实施例,提供一种数据存取系统,所述数据存取系统包括:块存储装置;键值固态驱动器KV SSD;数据存取控制装置,其中,所述数据存取控制装置包括:索引生成单元,被配置为响应于接收到第一键值对生成与第一键值对中的键相应的索引;写入单元,被配置为:将与所述键和所述索引相应的键索引对写入所述块存储装置中,其中,所述键索引对以日志结构合并树LSM-Tree结构在所述块存储装置中存储;以及将与所述索引和第一键值对中的值相应的索引值对写入KV SSD。通过引入索引实现键值分离存取,利用LSM-Tree数据库在块存储设备中快速写入的性能(顺序写入),以及LSM-Tree的SSTable文件存储对块存储设备的依赖关系的同时,有效解决了基于LSM-Tree数据库引擎无法适配到KV SSD的问题。

根据本发明的示例性实施例,提供一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时实现如上所述的数据存取方法。

根据本发明的示例性实施例,提供一种数据存储装置,其中,所述装置包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的数据存取方法。

附图说明

通过下面结合附图进行的详细描述,本发明的上述和其它目的、特点和优点将会变得更加清楚,其中:

图1是示出经典的LevelDB LSM-Tree的存储过程的示意图;

图2是示出WiscKey键值存储方案的示图;

图3是示出根据本公开的实施例的数据存储方法的流程图;

图4是示出根据本公开的实施例的键值存储方案的示意图;

图5是示出根据本公开的实施例的数据存储控制装置的框图;以及

图6是示出根据本公开的实施例的数据存取系统的框图。

具体实施方式

在下文中,参照附图对本公开的各种实施例进行描述,其中,相同的标号用于表示相同或相似的元件、特征和结构。然而,不旨在由本文所述的各种实施例将本公开限制于具体实施例,并且旨在于:本公开覆盖本公开的所有修改、等同物和/或替代物,只要它们在所附权利要求及其等同物的范围内。在以下说明书和权利要求书中使用的术语和词语不限于它们的词典含义,而是仅被用于使得能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是:提供本公开的各种实施例的以下描述仅用于说明的目的,而不是为了限制由所附权利要求和它们的等同物限定的本公开的目的。

应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存在,但不排除其它功能、操作或元件。

例如,表述“A或B”、或“A和/或B中的至少一个”可指示A和B、A或者B。例如,表述“A或B”或“A和/或B中的至少一个”可指示(1)A、(2)B或(3)A和B两者。

在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时,在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。

在描述本公开的各种实施例中使用的表述“被配置为”可以例如根据情况与诸如“适用于”、“具有…的能力”、“被设计为”、“适合于”、“被制造为”和“能够”的表述互换使用。术语“被配置为”可不一定指示按照硬件“被专门设计为”。相反,在一些情况下的表述“被配置为...的装置”可指示所述装置和另一装置或者部分“能够…”。例如,表述“被配置为执行A、B和C的处理器”可指示用于执行相应操作的专用处理器(例如,嵌入式处理器)或用于通过执行存储在存储器装置中的至少一个软件程序来执行相应的操作的通用处理器(例如,中央处理单元CPU或应用处理器(AP))。

本文使用的术语在于描述本公开的某些实施例,但并不旨在限制其它实施例的范围。除非本文另外指出,否则本文使用的所有术语(包括技术或科学术语)可具有与本领域技术人员通常理解的含义相同含义。通常,词典中定义的术语应被视为具有与相关领域中的上下文含义相同的含义,并且,除非本文明确地定义,否则不应被不同地理解或被理解为具有过于正式的含义。在任何情况下,本公开中定义的术语也不旨在被解释为排除本公开的实施例。

图2是示出WiscKey Key-Value存储方案的示图。WiscKey Key-Value存储方案是基于LSM-tree的键(key)值(value)存储方案,其将键和值在块SSD中分开存储以减小输入/输出放大。

图3是示出根据本公开的实施例的数据存储方法的流程图。

为了更清楚地解释本公开,下文中以具有块SSD和KV SSD的电子设备为例,进行说明。

作为示例,以下根据本公开的实施例的数据存储方法可由安装在电子设备中的应用程序来执行。

本领域人员应当理解,具有块存储装置和KV SSD的电子设备仅是用于说明的目的的示例,不限制本公开的实施例。

参照图3,在步骤S101,响应于接收到第一键值对,生成与第一键值对中的键相应的索引。作为示例,可针对输入的键值对中的键生成索引index,其中,索引的长度整体上显著小于Value的长度。作为示例,针对键生成的索引可以具有相同的长度,即与每个键值对相应的索引的长度是相同的。

作为示例,可通过应用程序生成与键值对中的键相应的索引。

在步骤S102,将与所述键和所述索引相应的键索引对写入块存储装置中,其中,所述键索引对以日志结构合并树LSM-Tree结构在所述块存储装置中存储。也就是说,基于LSM-Tree数据架构存储键索引对。

具体地,根据LSM-Tree数据库的存储机制,由于写入操作为顺序写入,因此,可被快速地写入块存储装置。

本领域技术人员应当理解,块存储装置可包括HDD、块SSD以及其它以块为存储单元的存储装置。

在步骤S103,将与所述索引和第一键值对中的值相应的索引值对写入键值固态驱动器KV SSD。也就是说,针对输入的键值对,在添加索引后将索引值对写入KV SSD。

如上文所述,KV SSD采用了增强的闪存转换层FTL(Flash Translation Layer),提供有Key-value写入接口,因此,可直接响应应用程序写入索引值对的请求,将索引值对写入KV SSD。

例如,当存储Key1-Value1时,响应于接收到的键值对,生成与Key1相应的索引index1,将存储在块存储装置中,将索引值对存储在KV SSD中。

图4是示出根据本公开的实施例的键值分离存储方案的示意图。

参照图4,键索引对存储在块存储装置中,索引值对存储在KV SSD中。

作为示例,响应于读取键的指令,在块存储装置中查找与所述键相应的键索引对;依据查找到的所述键索引对中的索引,从所述KV SSD中读取所述索引相应的值。也就是说,当接收到读取键的指令时,先在LSM-Tree数据库中查找与键相应的键索引对,当查找到相应的键索引对时,可基于相应的键索引对中的索引在KV SSD中查找与该索引相应的索引值对,当查询到相应的索引值对时,即可读取索引值对中的值。

作为示例,可通过应用程序接收对Key-value的读取请求,在接收到读取请求后,在块存储装置中查找与Key相应的键索引对,当查找到与Key相应的键索引对时,可通过应用程序请求KV SSD中与查找到的键索引对中的索引相应的索引值对,从而获得请求的Key-value。

作为示例,可对块存储装置中存储的键索引对进行归并压缩。由于归并压过程与现有技术中的键值对归并压缩的过程相同,在此不做赘述。

由于LSM-Tree数据库引擎在执行归并压缩时针对的是键索引对,避免了在LSM-Tree的各层之间搬移拷贝Value数据,由于索引的长度整体上显著小于value的长度,因此可以降低数据的空间放大,延长块存储装置的使用寿命。

作为示例,还可对第一键值对中的值进行更新,对键值对中的值更新的步骤可包括:响应于接收到与键和更新值相应的第二键值对,生成与所述键相应的索引;将与所述键和所述索引相应的所述键索引对写入块存储装置中;依据所述索引,用所述更新值覆盖KVSSD中所述索引对应的旧值。

具体地,例如,在写入之后,在块SSD中存储有键索引对,在KV SSD中存储有,当对Key1的值进行更新时,例如将Key1的值由旧值Value1更新为Value2,生成与相应的索引index1,将写入块SSD中,此时,LSM-Tree数据库中可在不同的层中存在更新操作之前生成的和更新操作生成的(后续会在compaction后最终只保留最上层的),然后将写入KV SSD,在将写入KV SSD时,Value2会将Value1覆盖掉,在这种情况下,KV SSD中仅存储最新的Key1的值Value2,即仅存储有

作为一种可实现的实施方式,所述块存储装置中存储的键索引对中还可以包括时间戳信息。在对所述键值对中的值更新前后,所述块存储装置中存储的键和索引相同,时间戳信息则不同。

作为另一种实施方式,在对所述键值对中的值更新时,也可以考虑不需要重新再次生成索引,可以依据所述键从所述块存储装置中查找所述键对应的索引,依据所述索引用所述更新值覆盖所述KV SSD中所述索引对应的值。

本领域技术人员应当理解,上文中的索引的编号仅是为了说明的目的,不限制本发明的实施例。

另外,由于KV SSD具有直接更新复写的特性,KV SSD将过期value的垃圾回收工作从主机端转移到KV SSD上进行,从而使主机可专注于计算性工作,从而提升系统的整体写性能。

如上所述,根据本公开发明的实施例,通过将Key-Value分离进行存储,保留了LSM-Tree良好的插入、查询性能。此外,在归并压缩时,只针对键索引对进行拷贝重写,避免了Value数据在各层间的搬移拷贝。另外,利用KV SSD支持直接复写无需关心数据删除的特性,直接用最新数据覆盖过期数据,显著降低LSM-Tree的空间放大,同时可以充分利用KVSSD具有更好的随机输入输出性能、高并发、系统资源消耗低的特点,提升写性能。

下面参照图5对根据本公开的实施例的数据存储控制装置进行描述。

图5是示出根据本公开的实施例的数据存储控制装置的框图。

参照图5,数据存取控制装置500可包括索引生成单元501、写入单元502。作为示例,数据存取控制装置500还可另外地包括其他组件,并且数据存取控制装置500包括的组件也可被组合。

作为示例,索引生成单元501可被配置为响应于接收到第一键值对生成与第一键值对中的键相应的索引index。

作为示例,写入单元502,被配置为:将与所述键和所述索引相应的键索引对写入块存储装置中,其中,所述键索引对以LSM-Tree结构在所述块存储装置中存储;以及将与所述索引和第一键值对中的值相应的索引值对写入KV SSD。

作为示例,以安装有块存储装置和KV SSD的电子设备为例,电子设备或者电子设备的处理器可以作为数据存取控制装置。

作为示例,数据存取控制装置500还包括查找单元(未示出),查找单元可被配置为:响应于读取键的指令,在块存储装置中查找与键相应的键索引对;依据查找到的键索引对中的索引,从KV SSD中读取索引相应的索引值对。

作为示例,数据存取控制装置500还包括归并压缩单元(未示出),归并压缩单元被配置为:对块存储装置中存储的键索引对进行归并压缩。

作为示例,在对第一键值对中的值更新时,索引生成单元,还被配置为:响应于接收到与键和更新值相应的第二键值对,生成与键相应的索引。

作为示例,在对键值对中的值更新时,写入单元,还被配置为:将与键和索引相应的键索引对写入块存储装置中;以及依据索引,用更新值覆盖KV SSD中索引对应的旧值。

下面参照图6描述根据本公开的实施例的数据存取系统。

图6是示出根据本公开的实施例的数据存取系统的框图。

参照图6,数据存取系统600包括:块存储装置601、KV SSD 602和数据存取控制装置603。

图6中的数据存取控制装置与图5中数据存取控制装置500相同,在此不做赘述。

根据本公开的实施例,提供了一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时实现如上所述的数据存储方法。

根据本公开的实施例,提供了一种数据存取装置,其中,所述装置包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的数据存储方法。

虽然本公开包括特定示例,但本领域的普通技术人员将理解,可在不脱离权利要求及其等同物的精神和范围的情况下,在形式和细节上做出各种改变。在此公开的示例将被视为描述性意义,而不是为了限制的目的。在每个示例中对特征或方面的描述将被视为可适用于其他示例中的相似特征或方面。如果以不同的顺序执行描述的技术,和/或如果以不同的方式组合和/或由其他部件或其等同物替代或补充描述的系统、结构、装置或电路,则可获得合适的结果。因此,公开的范围不是由详细的描述限定,而是由权利要求及其等同物体限定,权利要求及其等同物的范围内的全部改变将被视为包括在本公开内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号