CN107291541B - 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 - Google Patents
面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 Download PDFInfo
- Publication number
- CN107291541B CN107291541B CN201710486056.6A CN201710486056A CN107291541B CN 107291541 B CN107291541 B CN 107291541B CN 201710486056 A CN201710486056 A CN 201710486056A CN 107291541 B CN107291541 B CN 107291541B
- Authority
- CN
- China
- Prior art keywords
- compact
- main process
- key
- subtask
- slave
- 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.)
- Active
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了面向Key‑Value系统的compaction粗粒度进程级并行优化方法及系统,所述方法包括:主进程接收到读写请求后判断是否需要调度compaction线程,若是,主进程将compaction线程中的任务信息分割为主进程子任务和从进程子任务;主进程和从进程分别对主进程子任务和从进程子任务进行compaction操作;主进程在主进程完成主进程子任务compaction操作且从进程完成从进程子任务compaction操作后对Key‑Value系统的文件进行优化。本发明利用主进程完成Key‑Value系统中compaction任务的动态分割,并实现了与从进程协同compaction处理的新模式,挖掘了compaction任务的进程级并行性,充分利用了CPU的计算资源,提高了CPU资源的利用率,且优化了compaction消耗的时间,不仅提高了数据处理的实时性,而且提高了系统性能以及吞吐量。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统。
背景技术
在如搜索引擎、大数据、云计算、云存储、电子商务及社交网络等数据密集型应用的环境下,持久化的Key-Value存储日益发挥着不可替代的作用。针对写密集型负载,基于LSM-tree的Key-Value存储成为当前最先进的技术。其中,应用较为广泛的Key-Value存储包括Google的BigTable、LevelDB,FaceBook的Cassandra等。LSM-tree数据组织由内存中的一个C0组件和磁盘中的C1~Ck组成。其中C0作为在内存中的一个缓冲区,一旦C0达到阈值,会和C1进行合并排序操作,此作称为compaction。此外,当磁盘中的组件Ci达到阈值的时候,也会触发Ci和Ci+1之间的compaction操作。随着数据量的增加,LSM-tree结构需要在组件之间频繁的进行compaction操作;这将大量占用系统资源,难以高效的服务用户请求。
现有针对compaction操作的研究主要集中于降低compaction频率,减少compaction引起的频繁IO或限定compaction任务在热数据的Key范围内。这些研究工作虽可以较好的提高Key-Value存储的性能,但是没有挖掘compaction的粗粒度进程级并行性潜力,因此也没有充分发挥CPU的计算能力。
因此,本发明设计了面向Key-Value存储系统的应用层compaction粗粒度进程级并行优化方法。本发明在现有的基础上,实现了进程级并行的处理compaction任务处理。与现有的以单一主进程为compaction处理方式相比而言,本发明充分发挥CPU的计算能力,实现了进程级(主进程和从进程)并行compaction的处理方法,提高compaction性能的同时,充分利用CPU的并行计算资源。
发明内容
基于背景技术存在的技术问题,本发明提出了面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统。
本发明提出的面向Key-Value系统的compaction粗粒度进程级并行优化方法,包括以下步骤:
S1、主进程接收到读写请求后判断是否需要调度compaction线程,当判断结果为是时,主进程将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
S2、主进程提取从进程子任务中的元数据信息并发送至从进程,并对主进程子任务进行compaction操作,从进程接收主进程发送的元数据信息后对从进程子任务进行compaction操作;
S3、主进程在主进程完成主进程子任务compaction操作且从进程完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作。
优选地,步骤S1具体包括:
主进程接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
优选地,为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程,OLk为Lk层当前容纳的文件容量;
当主进程判定Key-Value系统需要调度compaction线程时,主进程根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
优选地,所述任务分割算法具体包括:
主进程确定此次compaction选定的Lk层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件中的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;
其中,1≤a≤n,v=k+1。
优选地,步骤S2具体包括:
主进程提取从进程子任务所需的SSTable文件元数据信息发送至从进程,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作;
从进程接收主进程发送的元数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作。
优选地,步骤S3具体包括:
主进程完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程完成从进程子任务compaction操作时,从进程判断主进程是否完成主进程子任务compaction操作,若是,从进程唤醒主进程并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程,主进程对Key-Value系统的日志文件进行更新、过期文件进行删除,已完成对Key-Value系统的文件的优化操作。
本发明提出的面向Key-Value系统的compaction粗粒度进程级并行优化系统,包括:主进程模块和从进程模块,主进程模块和从进程模块通信连接;
主进程模块用于在接收到读写请求后判断是否需要调度compaction线程,且当判断结果为是时将compaction线程中的任务信息分割为主进程子任务和从进程子任务,主进程模块用于提取从进程子任务中的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,主进程模块还用于在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作;
从进程模块用于在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作,并在完成从进程子任务compaction操作后判断主进程子任务compaction操作是否完成,若是则向主进程模块发送已完成从进程子任务compaction操作信息。
优选地,主进程模块在接收到读写请求后判断是否需要调度compaction线程具体包括:
主进程模块接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
优选地,为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量。
优选地,主进程将compaction线程中的任务信息分割为主进程子任务和从进程子任务具体包括:
当主进程模块判定Key-Value系统需要调度compaction线程时,主进程模块根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
优选地,所述任务分割算法具体包括:
主进程模块确定此次compaction选定的Lk层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程模块根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;
其中,1≤a≤n,v=k+1。
优选地,主进程模块提取从进程子任务所需的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,具体包括:
主进程模块提取从进程子任务中SSTable文件元数据信息发送至从进程模块,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作。
优选地,从进程模块在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作具体包括:
从进程模块接收主进程模块发送的数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作。
优选地,主进程模块在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作具体包括:
主进程模块完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程模块完成从进程子任务compaction操作时,从进程模块判断主进程模块是否完成主进程子任务compaction操作,若是,从进程模块唤醒主进程模块并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程模块,主进程模块对Key-Value系统的日志文件进行更新、过期文件进行删除,以完成对Key-Value系统的文件的优化操作。
本发明兼容了Key-Value系统的执行操作,包括接收读写请求、compaction触发调度、数据一致性维护等功能,同时实现了Key-Value系统的compaction任务的粗粒度进程级并行。本发明利用主进程对compaction任务进行动态分割,使得主进程和从进程能够同时对主进程子任务和从进程子任务进行compaction操作,利用Key-Value系统完成compaction任务的动态分割并与从进程协同compaction处理的新模式,挖掘了compaction任务的进程级并行性,充分利用了CPU的计算资源,提高了CPU资源的利用率,且优化了compaction消耗的时间,不仅提高了数据处理的实时性,而且提高了系统性能以及吞吐量。
附图说明
图1为面向Key-Value系统的compaction粗粒度进程级并行优化方法的步骤示意图;
图2为面向Key-Value系统的compaction粗粒度进程级并行优化系统的结构示意图;
图3为面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统的主进程工作流程图;
图4为面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统的从进程工作流程图。
具体实施方式
如图1-图4所示,图1-图4为本发明提出的面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统。
参照图1、图3、图4,本发明提出的面向Key-Value系统的compaction粗粒度进程级并行优化方法,包括以下步骤:
S1、主进程接收到读写请求后判断是否需要调度compaction线程,当判断结果为是时,主进程将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
本实施方式中,主进程接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
优选地,为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量。由于Key-Value系统每一层可容纳的文件大小有限,例如在LevelDB的默认情况下,随着层数的增加,每一层可容纳的容量是上一层可容纳容量的10倍;例如,第一层可容纳的容量阈值为10MB,第二层可容纳的容量阈值则为100MB,当Lk层可容纳的容量超过阈值时,此时compaction线程将会触发,则判定Key-Value系统需要调度compaction线程。
当主进程判定Key-Value系统需要调度compaction线程时,主进程根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;本实施方式中,所述任务分割算法具体包括:
主进程确定此次compaction选定的Lk层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;其中,1≤a≤n,v=k+1。
上述操作过程为当主进程判定需要调度compaction线程后,主进程在Lk层选择一个SSTable文件作为目标文件,并将上述目标文件与LK+1层的所有SSTable文件进行Key范围比较,且将所有Key范围重叠的SSTable文件作为compaction的输入文件,待输入文件确定完毕,主进程则对compaction任务进行动态分割,将compaction任务分割为主进程子任务和从进程子任务,使主进程和从进程分别对主进程子任务和从进程子任务进行compaction操作,具体包括S2:
S2、主进程提取从进程子任务中的元数据信息并发送至从进程,并对主进程子任务进行compaction操作,从进程接收主进程发送的元数据信息后对从进程子任务进行compaction操作;
主进程提取从进程子任务所需的SSTable文件元数据信息发送至从进程,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作;
从进程接收主进程发送的元数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作。
S3、主进程在主进程完成主进程子任务compaction操作且从进程完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作;为保持Key-Value系统的数据一致性,主进程完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程完成从进程子任务compaction操作时,从进程判断主进程是否完成主进程子任务compaction操作,若是,从进程唤醒主进程并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程,主进程对Key-Value系统的文件进行优化操作,所述对Key-Value系统的文件的优化操作包括:对Key-Value系统的日志文件进行更新、过期文件进行删除等,使Key-Value系统系统内的日志文件和过期文件根据主进程和从进程的实际操作流程变化。
参照图2-图4,本发明提出的面向Key-Value系统的compaction粗粒度进程级并行优化系统,包括:主进程模块和从进程模块,主进程模块和从进程模块通信连接;
主进程模块用于在接收到读写请求后判断是否需要调度compaction线程,具体判断过程包括主进程模块接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
优选地,为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量。
当判断结果为是时,主进程模块将compaction线程中的任务信息分割为主进程子任务和从进程子任务,上述任务分割过程具体包括:当主进程模块判定Key-Value系统需要调度compaction线程时,主进程模块根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;本实施方式中所述任务分割算法具体包括:
主进程模块确定此次compaction选定的Lk层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程模块根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;其中,1≤a≤n,v=k+1。
主进程模块完成compaction任务分割后,主进程模块提取从进程子任务所需的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,上述对主进程子任务进行compaction操作具体包括:主进程提取从进程子任务中SSTable文件元数据信息发送至从进程,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作。
主进程模块还用于在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的日志文件进行更新、过期文件进行删除,具体包括:主进程模块完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程模块完成从进程子任务compaction操作时,从进程模块判断主进程模块是否完成主进程子任务compaction操作,若是,从进程模块唤醒主进程模块并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程模块,主进程模块对Key-Value系统的日志文件进行更新、过期文件进行删除,完成对Key-Value系统文件的优化操作。
从进程模块在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作,所述对从进程子任务进行compaction操作具体包括:从进程模块接收主进程模块发送的数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作。
从进程模块在完成从进程子任务compaction操作后向主进程模块发送已完成从进程子任务compaction操作信号,以激活主进程模块,提醒主进程模块对Key-Value系统文件进行优化,即主进程模块对Key-Value系统的日志文件进行更新、过期文件进行删除。
本实施方式兼容了Key-Value系统的执行操作,包括接收读写请求、compaction触发调度、数据一致性维护等功能,同时实现了Key-Value系统的compaction任务的粗粒度进程级并行。本实施方式利用主进程对compaction任务进行动态分割,使得主进程和从进程能够同时对主进程子任务和从进程子任务进行compaction操作,利用Key-Value系统完成compaction任务的动态分割并与从进程协同compaction处理的新模式,挖掘了compaction任务的进程级并行性,充分利用了CPU的计算资源,提高了CPU资源的利用率,且优化了compaction消耗的时间,不仅提高了数据处理的实时性,而且提高了系统性能以及吞吐量。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (2)
1.面向Key-Value系统的compaction粗粒度进程级并行优化方法,其特征在于,包括以下步骤:
S1、主进程接收到读写请求后判断是否需要调度compaction线程,当判断结果为是时,主进程将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
S2、主进程提取从进程子任务中的元数据信息并发送至从进程,并对主进程子任务进行compaction操作,从进程接收主进程发送的元数据信息后对从进程子任务进行compaction操作;
S3、主进程在主进程完成主进程子任务compaction操作且从进程完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作;
步骤S1具体包括:
主进程接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量;
当主进程判定Key-Value系统需要调度compaction线程时,主进程根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
所述任务分割算法具体包括:
主进程确定此次compaction选定的Lk层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;
其中,1≤a≤n,v=k+1;
步骤S2具体包括:
主进程提取从进程子任务所需的SSTable文件元数据信息发送至从进程,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作;
从进程接收主进程发送的元数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作;
步骤S3具体包括:
主进程完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程完成从进程子任务compaction操作时,从进程判断主进程是否完成主进程子任务compaction操作,若是,从进程唤醒主进程并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程,主进程对Key-Value系统的日志文件进行更新、过期文件进行删除,以完成对Key-Value系统的文件的优化操作。
2.面向Key-Value系统的compaction粗粒度进程级并行优化系统,其特征在于,包括:主进程模块和从进程模块,主进程模块和从进程模块通信连接;
主进程模块用于在接收到读写请求后判断是否需要调度compaction线程,且当判断结果为是时将compaction线程中的任务信息分割为主进程子任务和从进程子任务,主进程模块用于提取从进程子任务所需的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,主进程模块还用于在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作;
从进程模块用于在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作,并在完成从进程子任务compaction操作后判断主进程子任务compaction操作是否完成,若是则向主进程模块发送已完成从进程子任务compaction操作信息;
主进程模块在接收到读写请求后判断是否需要调度compaction线程具体包括:
主进程模块接收读请求或写请求后,根据Key-Value系统每一层可容纳的文件容量阈值来判断Key-Value系统是否需要调度compaction线程;
为Key-Value系统每一层设置可容纳的文件容量阈值,记为QLm=aQLm-1;其中,QLm为Lm层可容纳的文件容量阈值,QLm-1为Lm-1层可容纳的文件容量阈值,a为预设值,QL1=A,A为预设值;当OLk≥QLk时,则判定此时Key-Value系统需要调度compaction线程;其中,OLk为Lk层当前容纳的文件容量;
主进程模块将compaction线程中的任务信息分割为主进程子任务和从进程子任务具体包括:
当主进程模块判定Key-Value系统需要调度compaction线程时,主进程模块根据任务分割算法将compaction线程中的任务信息分割为主进程子任务和从进程子任务;
所述任务分割算法具体包括:
主进程模块确定此次compaction选定的LK层的SSTable文件SSTk1、SSTk2、SSTk3……SSTkn中的一个文件SSTka;
确定LK+1层中的SSTable文件的Key范围与SSTka的Key范围有重叠的所有SSTable文件,记为SSTv1、SSTv2、SSTv3……SSTvb;
主进程模块根据SSTable文件的元数据信息中指示的Smallest的值Y以及SSTka文件的Key范围[SSTka_smallest,SSTka_largest]将SSTka文件中的[SSTka_smallest,Y]文件分割为主进程子任务,将SSTka文件的剩余部分分割为从进程子任务;
其中,1≤a≤n,v=k+1;
主进程模块提取从进程子任务所需的元数据信息并发送至从进程模块,并对主进程子任务进行compaction操作,具体包括:
主进程模块提取从进程子任务中SSTable文件元数据信息发送至从进程模块,并读取主进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成主进程子任务compaction操作;
从进程模块在接收到主进程发送的元数据信息后对从进程子任务进行compaction操作具体包括:
从进程模块接收主进程模块发送的数据信息后,读取从进程子任务中对应的SSTable文件,对上述SSTable文件进行多路合并排序操作生成多个新的有序的SSTable文件,且更新较新的Key-Value项、删除具有删除标记的Key-Value项,以完成从进程子任务compaction操作;
主进程模块在主进程模块完成主进程子任务compaction操作且从进程模块完成从进程子任务compaction操作后对Key-Value系统的文件进行优化操作具体包括:
主进程模块完成主进程子任务compaction操作后,置完成标志,进入等待状态,当从进程模块完成从进程子任务compaction操作时,从进程模块判断主进程模块是否完成主进程子任务compaction操作,若是,从进程模块唤醒主进程模块并将从进程子任务中新生成的SSTable文件的元数据信息发送至主进程模块,主进程模块对Key-Value系统的日志文件进行更新、过期文件进行删除,以完成对Key-Value系统的文件的优化操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710486056.6A CN107291541B (zh) | 2017-06-23 | 2017-06-23 | 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710486056.6A CN107291541B (zh) | 2017-06-23 | 2017-06-23 | 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291541A CN107291541A (zh) | 2017-10-24 |
CN107291541B true CN107291541B (zh) | 2020-07-10 |
Family
ID=60098191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710486056.6A Active CN107291541B (zh) | 2017-06-23 | 2017-06-23 | 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291541B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297136B (zh) * | 2021-05-25 | 2023-11-03 | 南京大学 | 一种面向lsm树的键值存储方法和存储系统 |
CN116089049B (zh) * | 2023-04-07 | 2023-09-12 | 北京卡普拉科技有限公司 | 基于异步并行i/o请求的进程同步调度方法、装置以及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
CN105095287A (zh) * | 2014-05-14 | 2015-11-25 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
CN105159915A (zh) * | 2015-07-16 | 2015-12-16 | 中国科学院计算技术研究所 | 可动态适应的lsm树合并方法及系统 |
CN106407224A (zh) * | 2015-07-31 | 2017-02-15 | 华为技术有限公司 | 一种键值存储系统中文件压实的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694323B2 (en) * | 2002-04-25 | 2004-02-17 | Sybase, Inc. | System and methodology for providing compact B-Tree |
US10558705B2 (en) * | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
-
2017
- 2017-06-23 CN CN201710486056.6A patent/CN107291541B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
CN105095287A (zh) * | 2014-05-14 | 2015-11-25 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
CN105159915A (zh) * | 2015-07-16 | 2015-12-16 | 中国科学院计算技术研究所 | 可动态适应的lsm树合并方法及系统 |
CN106407224A (zh) * | 2015-07-31 | 2017-02-15 | 华为技术有限公司 | 一种键值存储系统中文件压实的方法和装置 |
Non-Patent Citations (2)
Title |
---|
Compaction management in distributed key-value datastores;Muhammad Yousuf Ahmad et al.;《Proceedings of the VLDB Endowment》;20151231;第8卷(第8期);第850-861页 * |
SSDKV:一种SSD友好的键值对存储系统;梅飞 等;《计算机工程与科学》;20160731;第38卷(第7期);第1299-1308页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107291541A (zh) | 2017-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107247624B (zh) | 一种面向Key-Value系统的协同优化方法及系统 | |
KR102541458B1 (ko) | 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치 | |
CN101866359B (zh) | 一种机群文件系统中的小文件存储和访问方法 | |
JP4764472B2 (ja) | データベース管理方法、データベース管理プログラム、および、データベース管理装置 | |
US8161006B2 (en) | Database management method, database management apparatus, and database management program | |
CN102073697A (zh) | 一种数据处理方法及装置 | |
WO2014019349A1 (zh) | 一种文件合并方法和装置 | |
WO2016078420A1 (zh) | 虚拟机处理方法和虚拟计算机系统 | |
CN101452465A (zh) | 大批量文件数据存放和读取方法 | |
CN103023805A (zh) | 一种MapReduce系统 | |
CN102955792A (zh) | 一种实时全文搜索引擎事务处理的实现方法 | |
CN113297320A (zh) | 分布式数据库系统及数据处理方法 | |
WO2016070529A1 (zh) | 一种实现重复数据删除的方法及装置 | |
CN107291541B (zh) | 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 | |
US8433871B2 (en) | Data copy management for faster reads | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
US9251149B2 (en) | Data set size tracking and management | |
Chai et al. | Adaptive lower-level driven compaction to optimize LSM-tree key-value stores | |
CN104111896A (zh) | 大数据处理中的虚拟内存管理方法及其装置 | |
EP3267329A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
KR101666440B1 (ko) | 환형큐 기반의 인-메모리 데이터베이스 시스템에서의 데이터 처리방법 | |
CN103631831A (zh) | 一种数据备份方法及装置 | |
CN117369731A (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
CN102467557B (zh) | 重复数据删除的处理方法 | |
WO2016085497A1 (en) | Speculative execution of a stream of changes |
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 |