CN115168317A - 一种lsm树存储引擎构建方法和系统 - Google Patents
一种lsm树存储引擎构建方法和系统 Download PDFInfo
- Publication number
- CN115168317A CN115168317A CN202210904523.3A CN202210904523A CN115168317A CN 115168317 A CN115168317 A CN 115168317A CN 202210904523 A CN202210904523 A CN 202210904523A CN 115168317 A CN115168317 A CN 115168317A
- Authority
- CN
- China
- Prior art keywords
- file
- sst file
- data
- sst
- storage
- 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
Links
- 238000010276 construction Methods 0.000 title abstract description 6
- 230000002085 persistent effect Effects 0.000 claims abstract description 33
- 230000005012 migration Effects 0.000 claims abstract description 32
- 238000013508 migration Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 11
- 230000009471 action Effects 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 239000000306 component Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种LSM树存储引擎构建方法和系统。其中,该种LSM树存储引擎构建方法包括:在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存生成包括若干层级的热数据文件,构建第一引擎存储;在第一阶段的第一SST文件的不同层级之间的热数据文件满足第一迁移条件的情况下,执行第一SST文件的第一compaction;在第二阶段的第一SST文件成为冷数据需要满足第二迁移条件需要执行数据下沉时,执行第一SST文件的第二compaction,生成第二SST文件作为冷数据写入非易失性存储介质,构建第二引擎存储。通过本申请的技术方案能够将LSM树数据库中的数据文件分层级存储在不同的存储介质中,充分利用各种不同存储介质的优点,提高数据存储效率,降低数据存储的成本。
Description
技术领域
本申请设计数据处理技术领域,尤其涉及一种LSM树存储引擎构建方法和系统。
背景技术
LSM-Tree存储引擎是一种可以有效支持SMR磁盘的嵌入式存储系统,通过LSM-Tree(Log-Structured Merge-Tree,日志结构合并树,LSM树)满足数据更新时,无需将数据写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾,大多数NoSQL类型的数据库引擎,包括例如Leveldb,Rocksdb等,都可以基于LSM树实现。
于现有技术中,图1示出了一种在LSM树中数据存储方式的示意图,最低一级也是最小的C0树位于内存里,而更高级的C1、C2...树都位于磁盘里。数据会先写入内存中的C0树,当它的大小达到一定阈值之后,C0树中的全部或部分数据就会刷入磁盘中的C1树,由于内存的读写速率都比外存要快非常多,因此数据写入C0树的效率很高。并且数据从内存刷入磁盘时是预排序的,也就是说,LSM树将原本的随机写操作转化成了顺序写操作,写性能大幅提升。
进一步地,为了防止内存因断电等原因丢失数据,写入内存的数据同时会顺序在磁盘上写WAL(Write Ahead Log,预写日志),如果存在多级树的情况下,低级的树在达到一定要求的大小阈值后也会在磁盘中进行合并,图2示出了多级树合并的示意图,合并的过程为数据文件Compaction的过程。
支持数据的操作特性,需要较好的硬件配置,比如高性能CPU、大内存、SSD硬盘等等,随着时间的推移,系统里会积累越来越多的历史数据,如果依然采用高配置设备来存放这些使用频率非常低的数据,势必会带来高昂的成本。当前LSM树数据库的所有数据文件存储在一个目录下,使得不管是WAL文件或者数据文件都是无差别的存储在某一单一存储介质上,但面对复杂的应用场景,单一的维度往往无法有效解决问题,数据存储时无法充分的利用各种不同存储介质的优点,占用额外的CPU存储资源、数据读写延迟高、数据吞吐量小,数据存储效率低。
发明内容
本申请提供了一种LSM树存储引擎构建方法和系统,以解决现有技术中WAL文件或者数据文件都是无差别的存储在某一单一存储介质上,无法实现根据数据类型将选择不同存储介质等问题。
根据本申请的第一方面,提供了一种LSM树存储引擎构建方法,具体包括:
在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存,构建为第一SST文件的第一引擎存储;
在第一阶段的第一SST文件满足第一迁移条件的情况下,执行第一SST文件的第一compaction;
在第二阶段的第一SST文件满足第二迁移条件的情况下,执行第一SST文件的第二compaction,生成第二SST文件写入到非易失性存储介质,构建为将第二SST文件的第二引擎存储。
在上述第一方面的一种可能的实现中,生成第一SST文件写入持久内存,包括:暴露I/OAT设备的寄存器中断信息;根据中断信息提交数据传输任务至IATO设备,实现业务数据向持久内存的传输。
在上述第一方面的一种可能的实现中,生成第一SST文件写入持久内存时还包括:
存储WAL日志文件和若干层级组成的热数据文件。
在上述第一方面的一种可能的实现中,第一阶段的第一SST文件满足第一迁移条件的情况下包括:
任意一层存储的热数据文件数量超过第一预设阈值;
和/或,
任意一层存储的热数据文件的容量超过第二预设阈值;
和/或,
任意一层存储的若干热数据文件当出现无效读取的次数超过第三预设阈值。
在上述第一方面的一种可能的实现中,执行第一SST文件的第一compaction包括:将满足第一迁移条件的若干第一SST文件按照顺序compaction,并进行归并排序。
在上述第一方面的一种可能的实现中,第二阶段的第一SST文件满足第二迁移条件包括:第一SST文件的热数据文件不满足持久内存的预设存储设定。
在上述第一方面的一种可能的实现中,述持久内存包括:按字节寻址的非易失性内存。
在上述第一方面的一种可能的实现中,非易失性存储介质包括:支持顺序写入的ZNS设备。
本申请的第二方面提供了一种LSM树存储引擎构建系统,具体包括:
写入单元,用于在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存,构建为第一SST文件的第一引擎存储;
第一迁移单元,在第一阶段的第一SST文件满足第一迁移条件的情况下,执行第一SST文件的第一compaction;
第二迁移单元,在第二阶段的第一SST文件满足第二迁移条件的情况下,执行第一SST文件的第二compaction,生成第二SST文件写入到非易失性存储介质,构建为将第二SST文件的第二引擎存储。
与现有技术相比,本申请具备以下有益技术效果:
通过本申请提出的一种LSM树存储引擎构建方法,能够基于支持数据的操作特性,将系统里访问频率不同的数据文件在LSM树数据库中分层级、分目录存储,使得所有数据文件存储在不同目录下,面对复杂的应用场景使得WAL文件或者冷数据文件或者热数据文件采取不同的存储介质进行存储,数据存储不同的数据根据其数据特征,充分利用各种不同存储介质的优点,尽量减少额外的CPU存储资源的占用、降低数据读写延迟、提高数据吞吐量,提高数据存储效率,降低数据存储的成本。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1根据本申请的实施例,示出了一种在LSM树中数据存储方式的示意图;
图2根据本申请的实施例,示出了出了多级树合并的示意图;
图3根据本申请的实施例,示出了LSM树存储引擎构建方法的流程示意图;
图4根据本申请的实施例,示出了一种通过I/OAT DMA设备设置dmacount寄存器的示意图;
图5根据本申请的实施例,示出了一种用户态加速持久内存写入流程图;
图6根据本申请的实施例,示出了一种数据读写的示意图;
图7根据本申请的实施例,示出了一种L0和L1层文件合并的示意图;
图8根据本申请的实施例,示出了一种ZNS SSD顺序写示意图;
图9根据本申请的实施例,示出了一种LSM树存储引擎构建系统框图。
具体实施方式
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
DMA(Direct Memory Access)的技术,它称为直接内存访问,也就是说可以直接读,写内存,而不再需要操作系统做这样的操作。
DSA(Driver and Support Assistant)的技术DSA能够支持共享虚拟内存(SVM)操作,允许设备直接在应用程序的虚拟地址空间中运行,而无需固定内存。
I/OAT(I/O Acceleration Technology,I/O加速技术),凭借执行DMA来卸载主处理器的内存复制工作,用于加速网络流量的传输,支持任何类型的复制。
WAL(Write-Ahead Logging,预写日志系统),对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。在相同的数据量下,采用WAL日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右。
IOMMU(Input/Output memory management unit,IO内存管理单元),允许系统设备在虚拟内存中进行寻址,也就是将虚拟内存地址映射为物理内存地址,让实体设备可以在虚拟的内存环境中工作。
为了解决现有技术中LSM树数据库的所有数据文件存储在一个目录下,使得不管是WAL文件或者数据文件都是无差别的存储在某一单一存储介质上,数据存储时无法充分的利用各种不同存储介质的优点,占用额外的CPU存储资源、数据读写延迟高、数据吞吐量小,数据存储效率低等缺陷,本申请提出了一种LSM树存储引擎构建方法和系统,通过选择不同选择非易失性内存保存WAL文件及热数据文件,基于使用I/OAT或者DSA技术来直接进行DMA数据传输,节省大量CPU资源,使用Zone设备来存储冷数据文件,作为容量层,可以最大的节省费用,提高性能,降低延迟,提升吞吐量。
下面通过具体实施方式结合附图对本发明作进一步详细说明。
具体地,图3根据本申请的实施例,示出了LSM树存储引擎构建方法的流程示意图,具体包括:
步骤100:在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存,构建为第一SST文件的第一引擎存储。可以理解的是,云存储平台在对外提供云存储服务时,LSM-Tree存储引擎可以获取用户上传的业务数据,并对业务数据的数据内容进行解析,以读取其中的Key-Value形式的数据。之后,LSM-Tree存储引擎可以将Key-Value数据保存在内存表中,当内存表写满时,可以对内存表中的数据进行Flush处理,从而可以生成业务数据对应的第一SST文件。
步骤200:在第一阶段的第一SST文件满足第一迁移条件的情况下,执行第一SST文件的第一compaction。可以理解的是,当持久内存中存储的第一SST文件在写入初期初期,用户经常查询频率较高,热数据放置在热存储中,对硬件要求较高,往往拥有性能较强的服务器、存储、带宽支持,对于按照LSM-Tree的结构存储的数据需要在热数据文件存储的文件层例如地,L0-L3层中进行相应地迁移,并执行compaction。
于本申请的一些实施例中,第一阶段的第一SST文件满足第一迁移条件的情况下包括:任意一层存储的热数据文件数量超过第一预设阈值;和/或,任意一层存储的热数据文件的容量超过第二预设阈值;和/或,任意一层存储的若干热数据文件当出现无效读取的次数超过第三预设阈值。可以理解的是,当0层文件或者其它层的文件数量超过预定的上限;当level i层文件的总大小超过(10^i)MB;当某个文件无效读取的次数过多的任意一种或者多种情况出现时,第一SST文件的持久内存不能满足文件的存储、某些文件需要进行迁移或者进一步下沉,使得持久内存的空间满足存储WAL文件和热数据文件的条件。
步骤300:在第二阶段的第一SST文件满足第二迁移条件的情况下,执行第一SST文件的第二compaction,生成第二SST文件写入到非易失性存储介质,构建为将第二SST文件的第二引擎存储。可以理解的是,数据写入初期,用户的关注度较高且访问频繁,此时的数据为热数据。但随着时间的推移,旧数据访问频率会越来越低,仅存在少量查询,甚至完全不查询,该部分数据保留在持久内存占有一定的内容容量,使得热数据文件中的文件数量、存储容量等增加,此时该占据内存且访问频率较低部分数据可以被定义为冷数据,此时需要对该部分数据进行迁移,即满足第一SST文件满足第二迁移条件,将该部分数据进行下沉处理。
于上述步骤100中,生成第一SST文件写入持久内存(PMEM),包括:暴露I/OAT设备的寄存器中断信息;根据中断信息提交数据传输任务至IATO设备,实现业务数据向持久内存的传输。可以理解的是,让I/OAT设备来完成数据从用户态到非易失性内存设备的传输,这个过程是异步的,CPU不需要参与,可以大大提高传输数据的性能以及降低延迟。
于本申请的一些实施例中,采用I/OAT以及DSA技术,通过VFIO(Virtual FunctionI/O,驱动框架)将I/OAT的寄存器,中断暴露到用户态,然后用户态操作寄存器来提交任务到I/OAT设备,具体实现过程将在下述进行详细叙述。
于上述步骤100中,生成第一SST文件写入持久内存时还包括:存储WAL日志文件和若干层级组成的热数据文件。可以理解的是,生成第一SST文件写入持久内存,包括非易失性内存设备,既可以当内存使用,也可以当存储使用,非易失性内存设备作为WAL以及不同层级的热数据文件的存储使用。为了防止内存因断电等原因丢失数据,写入内存的数据同时会顺序在磁盘上写WAL(Write Ahead Log)文件,为了提高数据的处理效率,在存储系统中是将不同热度的数据块自动地、智能地分布在性能不同的存储层,热数据的数据被访问的频率高,因此在写入持久内存时将被访问频率高的数据写在上层作为热数据文件。
于本申请的一些实施例中,如图4所示,示出了一种通过I/OAT DMA设备设置dmacount寄存器的示意图。当用户通过MMIO(Memory-mapped IO,内存映射IO)给I/OAT DMA设备的dmacount寄存器置上一个数的时候,I/OAT DMA就会知道它应该要开始进行一系列的拷贝任务了。实际上dmacount分了inner和external两个寄存器,前者仅由I/OAT DMA设备内部读写,后者供用户修改。I/OAT DMA当发现external>inner时,便从寄存器chainaddr值+寄存器dmacount_inner值所得的内存地址处取得任务描述结构体descriptor,紧接着进行descriptor所指定的拷贝任务,其中chainaddr值是用户在发起I/OAT DMA拷贝任务之前所需设置的descriptor结构体数组的内存首地址,该结构体包含了拷贝任务所需的源地址、目标地址、拷贝大小以及相关的控制信息。I/OAT DMA 每取得一个descriptor并完成相应的拷贝任务后,便会让寄存器dmacount_inner+=1,并接着进行下一个descriptor描述的任务,直到inner==external为止。
于本申请的一些实施例中,如图5所示,示出了一种用户态加速持久内存写入流程图。应用程序通过调用SPDK提供的spdk_mem_register接口来请求把指定的virtualaddress对应的phy address和IOVA 建立DMA 映射。SPDK将通过调用syscallioctl并透过vifo_iommu_type1驱动来告知内核驱动intel_iommu进行真正的IOMMU DMA映射,构建PageTable。完成映射后,SPDK本身也会保存着这个映射关系,向I/OAT Driver提供virtualaddress到IOVA 的地址翻译功能。由SPDK实现的用户层的I/OAT驱动程序提供了许多易用的用户接口,关于拷贝任务发起的有:
(1)提供接口spdk_I/OAT_build_copy的调用来构造一次拷贝任务;
(2)提供接口spdk_I/OAT_flush的调用来发起在前面n次构造的拷贝任务;
(3)提供接口spdk_I/OAT_process_events的调用来检查拷贝任务的完成与否;
这些接口完成前述的descriptor结构体的构造、寄存器dmacount的赋值和寄存器值dma_comp的轮询;应用程序调用spdk_I/OAT_build_copy接口时,地址参数传的是virtual address,I/OAT Driver通过在之前SPDK所保存的DMA 映射关系来把这virtualaddress翻译得到IOVA(IO虚拟地址),并填入IOVA,descriptor的src_addr和dest_addr里,得益于vfio_pci驱动把原本呈现在kernel的MMIO内存空间映射至用户态的进程地址空间,SPDK的I/OAT Driver在给I/OAT DMA 设备寄存器赋值时,无需陷入内核态;dmacount被赋值后,I/OAT的DMA设备便开始了拷贝任务,设备所发出的内存读写请求报文(TLP)中的内存地址字段填入的是IOVA,TLP到达Root Complex时该IOVA会被IOMMU翻译成物理地址,之后该内存读写请求才会被发往至内存控制器里;如果IOVA不曾被IOMMU建立DMA映射,那么I/OAT DMA设备尝试通过该IOVA访问内存时,就会收到地址非法错误的响应,并设置chanerr寄存器中相应的错误位。
于本申请的一些实施例中,如图6所示,示出了一种数据读写的示意图。其中,active memtable(也叫write buffer写缓冲):它服务于用户的读请求和写请求,memtable中的数据总是最新的,一旦memtable被写满,它会变成一个不可修改的memtable,称为immutable memtable,并生成一个新的active memtable提供读写服务;每个列族拥有一个专属的memtable,用来写入和读取,memtable支持多种容器实现,如Skiplit(默认)/HashSkiplist/HashLinklist/Vertor等,put进来的key和value会与序列号,type等信息组装成一个数据结构存放在如上的容器中。上层的热数据文件可以包括L0-L3层的数据写入通过I/OAT/DSA硬件加速来实现用户态的immutable memtable写入到非易失性内存设备中,同时可以定义L0-L3层热数据文件每一层存储的文件数量的数量阈值为第一预设阈值,每一层存储的热数据文件的存储容量的容量阈值为第二预设阈值,某一层的某一热数据文件被无效读写次数的第三预设阈值。
进一步地,当上层热数据文件通过LSM-Tree存储时,处于较低层级的树在需要合并的情况下,其达到一定的数据迁移或者合并条件后,达到大小阈值后也会在即实现热数据文件层的热数据文件相应的进行迁移。
于上述步骤200中,执行第一SST文件的第一compaction包括:将满足第一迁移条件的若干第一SST文件按照顺序compaction,并进行归并排序。可以理解的是,当0层文件数超过预定的上限;当level i层文件的总大小超过(10^i)MB;当某个文件无效读取的次数过多的任意一种或者多种情况出现时,均需对述第一SST文件的第一compaction,以使得根据key重叠情况扩大输入文件集合;多路合并,生成新文件,删除旧文件。
如图7所示,示出了一种L0和L1层文件合并的示意图。具体地,L0层存储的文件阈值设置为4个,当L0层文件阈值达到第一预设阈值的情况下,寻找合适的输入文件;按照key重叠情况扩大输入文件集合,L0层3个SST文件和L1层的一个文件合并成2个文件。
于上述步骤300中,第二阶段的第一SST文件满足第二迁移条件包括:第一SST文件的热数据文件不满足持久内存的预设存储设定。可以理解的是,当存储热数据文件的持久内存不能的存储容量不满足预设要求的情况下,选择第一SST文件中访问频率较低或者不会被经常访问甚至永远不会被访问,但仍然需要长期保留的数据为满足第二迁移条件的数据。
于本申请的一些实施例中,持久内存包括:按字节寻址的非易失性内存。可以理解的是,持久内存(PMEM)是驻留在内存总线上的固态高性能按字节寻址内存设备;PMEM位于内存总线上,支持像DRAM一样访问数据,这意味着它具备与DRAM相当的速度和延迟,而且兼具NAND闪存的非易失性,实现访问延迟低于闪存SSD的访问延迟,吞吐量提高,超过闪存存储,比DRAM便宜。断电后,数据仍保留在内存中等特点。
于本申请的一些实施例中,可以采用Intel 3D XPoint DIMM,也称为Optane DC持久内存实现PMEM。
于本申请的一些实施例中,非易失性存储介质包括:支持顺序写入的ZNS(zonednamespace,存储区域命名空间)设备。可以理解的是,SSD(Solid State Disk,固态硬盘)即NAND闪存,一种非易失性的存储器,其在单位面积PCB板上,集成了包括主控芯片、闪存颗粒(即存储介质)以及缓存芯片,外加大大小小的控制芯片和核心单元等核心组件,通过通电和放电的形式,将数据存储到闪存介质之中,实现数据的存储。
具体地,如图8所示,示出了一种ZNS SSD顺序写示意图。ZNS SSD是Zoned Storage设备的一种,实现Zoned Storage设备是将address space分成多个zones,不同于标准块设备的读写,Zoned Storage设备没有读限制但有写限制:必须顺序写,每个zone有一个writepointer去记录下一次要写的位置,数据不能覆写,要写之前,必须先利用特别的命令进行擦除。NVME2.0协议加入了ZNS的支持。ZNS的优点有实现了IO分离、可预测的延迟、写放大更小。普通NVMe/SSD存储,文件不能被驱动器分开写入,最终导致具有不同生存期的文件被存储在相同擦除单元中,而ZNS SSD支持主机与存储设备协作放置数据,可以实现应用程序控制区域中的数据放置,即分区存储。LSM树产生的SST文件就是非常适合存储在Zone设备上,因为满足顺序写,完整擦除特性。
具体地,ZNS设备由于只支持顺序写,不能inplace写,所以不需要GC(GarbageCollection)过程,也就不需要OP(OP(Over-provisioning)预留空间)空间,3.使用Zone设备来存储冷数据,作为容量层。
在本申请的一些实施例中,如图9所示,示出了一种LSM树存储引擎构建系统,具体包括:
写入单元1,用于在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存,构建为第一SST文件的第一引擎存储;
第一迁移单元2,在第一阶段的第一SST文件满足第一迁移条件的情况下,执行第一SST文件的第一compaction;
第二迁移单元3,在第二阶段的第一SST文件满足第二迁移条件的情况下,执行第一SST文件的第二compaction,生成第二SST文件写入到非易失性存储介质,构建为将第二SST文件的第二引擎存储。
可以理解的是,上述LSM树存储引擎构建系统中各个功能模块执行与前述LSM树存储引擎构建方法中相同的步骤流程,在此不做赘述。
本说明书中各个实施例采用递进、或并列、或递进和并列结合的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本申请的描述中,需要理解的是,术语“上”、“下”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中设置的组件。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种LSM树存储引擎构建方法,其特征在于,所述的方法包括:
在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存,构建为所述第一SST文件的第一引擎存储;
在第一阶段的所述第一SST文件满足第一迁移条件的情况下,执行所述第一SST文件的第一compaction;
在第二阶段的所述第一SST文件满足第二迁移条件的情况下,执行所述第一SST文件的第二compaction,生成第二SST文件写入到非易失性存储介质,构建为将所述第二SST文件的第二引擎存储。
2.根据权利要求1所述的一种LSM树存储引擎构建方法,其特征在于,生成第一SST文件写入持久内存,包括:
暴露I/OAT设备的寄存器中断信息;
根据所述中断信息提交数据传输任务至I/OAT设备,实现业务数据向持久内存的传输。
3.根据权利要求1所述的一种LSM树存储引擎构建方法,其特征在于,生成第一SST文件写入持久内存时还包括:
存储WAL日志文件和若干层级组成的热数据文件。
4.根据权利要求3所述的一种LSM树存储引擎构建方法,其特征在于,第一阶段的所述第一SST文件满足第一迁移条件的情况下包括:
任意一层存储的热数据文件数量超过第一预设阈值;
和/或,
任意一层存储的热数据文件的容量超过第二预设阈值;
和/或,
任意一层存储的若干所述热数据文件当出现无效读取的次数超过第三预设阈值。
5.根据权利要求1所述的一种LSM树存储引擎构建方法,其特征在于,执行所述第一SST文件的第一compaction包括:
将满足所述第一迁移条件的若干所述第一SST文件按照顺序compaction,并进行归并排序。
6.根据权利要求1所述的一种LSM树存储引擎构建方法,其特征在于,第二阶段的所述第一SST文件满足第二迁移条件包括:
所述第一SST文件的热数据文件不满足所述持久内存的预设存储设定。
7.根据权利要求1所述的一种LSM树存储引擎构建方法,其特征在于,所述持久内存包括:
按字节寻址的非易失性内存。
8.根据权利要求1所述的一种LSM树存储引擎构建方法,其特征在于,所述非易失性存储介质包括:
支持顺序写入的ZNS设备。
9.一种LSM树存储引擎构建系统,其特征在于,所述的系统包括:
写入单元,用于在完成业务数据的Flush处理的情况下,生成第一SST文件写入持久内存,构建为所述第一SST文件的第一引擎存储;
第一迁移单元,在第一阶段的所述第一SST文件满足第一迁移条件的情况下,执行所述第一SST文件的第一compaction;
第二迁移单元,在第二阶段的所述第一SST文件满足第二迁移条件的情况下,执行所述第一SST文件的第二compaction,生成第二SST文件写入到非易失性存储介质,构建为将所述第二SST文件的第二引擎存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210904523.3A CN115168317B (zh) | 2022-07-29 | 2022-07-29 | 一种lsm树存储引擎构建方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210904523.3A CN115168317B (zh) | 2022-07-29 | 2022-07-29 | 一种lsm树存储引擎构建方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115168317A true CN115168317A (zh) | 2022-10-11 |
CN115168317B CN115168317B (zh) | 2023-04-07 |
Family
ID=83477408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210904523.3A Active CN115168317B (zh) | 2022-07-29 | 2022-07-29 | 一种lsm树存储引擎构建方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168317B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117725035A (zh) * | 2024-01-30 | 2024-03-19 | 支付宝(杭州)信息技术有限公司 | 一种针对lsm树的文件合并方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210182202A1 (en) * | 2019-12-17 | 2021-06-17 | SK Hynix Inc. | Memory system and data processing system including the same |
CN113535711A (zh) * | 2021-03-23 | 2021-10-22 | 中国科学技术大学 | 一种基于LSM-Tree的分层索引数据管理方法及系统 |
CN114138725A (zh) * | 2021-12-08 | 2022-03-04 | 北京志凌海纳科技有限公司 | 一种层次化的日志存储处理方法 |
CN114356877A (zh) * | 2021-12-30 | 2022-04-15 | 山东浪潮科学研究院有限公司 | 一种基于持久内存的日志结构合并树分级存储方法及系统 |
-
2022
- 2022-07-29 CN CN202210904523.3A patent/CN115168317B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210182202A1 (en) * | 2019-12-17 | 2021-06-17 | SK Hynix Inc. | Memory system and data processing system including the same |
CN113535711A (zh) * | 2021-03-23 | 2021-10-22 | 中国科学技术大学 | 一种基于LSM-Tree的分层索引数据管理方法及系统 |
CN114138725A (zh) * | 2021-12-08 | 2022-03-04 | 北京志凌海纳科技有限公司 | 一种层次化的日志存储处理方法 |
CN114356877A (zh) * | 2021-12-30 | 2022-04-15 | 山东浪潮科学研究院有限公司 | 一种基于持久内存的日志结构合并树分级存储方法及系统 |
Non-Patent Citations (1)
Title |
---|
张铁赢等: "X-DB:软硬一体的新型数据库系统", 《计算机研究与发展》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117725035A (zh) * | 2024-01-30 | 2024-03-19 | 支付宝(杭州)信息技术有限公司 | 一种针对lsm树的文件合并方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115168317B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220129374A1 (en) | Memory system, data storage device, user device and data management method thereof | |
US7694087B2 (en) | Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device | |
US8166233B2 (en) | Garbage collection for solid state disks | |
US9727452B2 (en) | Distributing metadata across multiple different disruption regions within an asymmetric memory system | |
JP3942807B2 (ja) | ブロックアラインメント機能付き半導体記憶装置 | |
US8131969B2 (en) | Updating system configuration information | |
KR101465789B1 (ko) | 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
TW200417856A (en) | Method and apparatus for splitting a logical block | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
KR20170038853A (ko) | 호스트-관리 비휘발성 메모리 | |
JP2009532761A (ja) | フラッシュ・ストレージの離散領域を記述して問い合わせること | |
KR20110018157A (ko) | 플래시 메모리 장치의 액세스 방법 | |
US11269771B2 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
CN115168317B (zh) | 一种lsm树存储引擎构建方法和系统 | |
CN115390747A (zh) | 存储设备及其操作方法 | |
CN113986773A (zh) | 基于固态硬盘的写放大优化方法、装置及计算机设备 | |
WO2024108939A1 (zh) | 一种多级映射框架、数据操作请求处理方法及系统 | |
JP2024525170A (ja) | データ圧縮方法及び装置 | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
KR20210158043A (ko) | 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법 | |
KR102546740B1 (ko) | 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템 | |
TWI824761B (zh) | 在以快閃記憶體為基礎的儲存裝置中快取位址映射資訊的方法與裝置 | |
JP7412397B2 (ja) | ストレージシステム |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 8b, building 1, No. 48, Zhichun Road, Haidian District, Beijing 100098 Patentee after: Beijing Zhiling Haina Technology Co.,Ltd. Country or region after: China Address before: 8b, building 1, No. 48, Zhichun Road, Haidian District, Beijing 100098 Patentee before: Beijing zhilinghaina Technology Co.,Ltd. Country or region before: China |