CN111475507B - 一种工作负载自适应单层lsmt的键值数据索引方法 - Google Patents
一种工作负载自适应单层lsmt的键值数据索引方法 Download PDFInfo
- Publication number
- CN111475507B CN111475507B CN202010244527.4A CN202010244527A CN111475507B CN 111475507 B CN111475507 B CN 111475507B CN 202010244527 A CN202010244527 A CN 202010244527A CN 111475507 B CN111475507 B CN 111475507B
- Authority
- CN
- China
- Prior art keywords
- key
- sub
- memory table
- read
- run
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000002356 single layer Substances 0.000 title claims abstract description 8
- 230000003044 adaptive effect Effects 0.000 title claims description 10
- 238000005457 optimization Methods 0.000 claims abstract description 10
- 239000010410 layer Substances 0.000 claims description 24
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 238000001914 filtration Methods 0.000 claims description 3
- 230000003321 amplification Effects 0.000 abstract description 12
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 12
- 230000008447 perception Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种工作负载自适应单层LSMT的键值数据索引方法。该方法对传统的日志结构合并树(Log‑Structured‑Merge Tree,LSMT)进行了优化,去除了多层设计和固定内存表容量设计,引入了单层LSMT和动态容量内存表的设计。该方法将写入首先将写操作以顺序的方式写入存储设备上的日志文件中,再修改内存表。当内存表的大小达到了容量限制,转换成一个只读内存表,并在后台线程中将只读内存表表合入存储设备上的单层LSMT结构中。在此基础上,本方法能够根据工作负载中的键值读写分布自动优化存储结构。该索引方法能够同时降低对存储设备的读写放大,提升***吞吐和存储设备寿命。同时针对工作负载做出自适应的优化,进一步提升***性能。
Description
技术领域
本发明属数据库***技术领域,具体地涉及一种工作负载自适应单层LSMT的键值数据索引方法。
背景技术
基于日志结构合并树(Log-Structured-Merge Tree,LSMT)的键值存储***,由于其优秀的处理密集写能力,被广泛应用在数据密集型互联网应用中。但是现有基于LSMT的存储***一般都存在着放大问题和工作负载无感知的问题。放大问题是指用户请求读取/写入的数据量要远小于***实际需要在存储设备上读取/写入的数据量,可以采用放大因子来量化这个问题。工作负载无感知的问题指的是现有LSMT***无法根据工作负载中的读写分布对存储结构做出更加合适的优化。
为了解决读写放大问题,研究者提出了许多方法,但是这些方法一般牺牲了读放大来换取写放大的降低(如WiscKey、PebblesDB),无法保证读写都高效。而对于工作负载无感知的问题,也很少有研究者对其进行研究和解决。
发明内容
针对现有技术的不足,本发明提出一种在块存储设备上的工作负载自适应键值数据索引方法。该方法能有效降低读写放大,同时根据工作负载能做出自适应的存储结构优化,进一步读降低延迟。
本发明的目的是通过以下技术方案实现的:一种工作负载自适应单层LSMT的键值数据索引方法,具体包括以下步骤:
(1)对LSMT存储结构进行修改设计,包括以下子步骤:
(1.1)去除LSMT多层结构的中间层,保留最后一层,并将最后一层作为存储层L0;将原先固定容量的内存表换成动态容量内存表,所述动态容量内存表的容量值为M,引入实数参数R,R>1,满足|L0|为当前存储层的数据量。
(1.2)将存储层L0根据键范围分区成N个子键空间l1,l2,…,lN,所述子键空间不重叠,且每个子键空间li(1≤i≤N)的数据均存储在独立的存储文件中。每个子键空间li(1≤i≤N)最多存储T个来自所述动态容量内存表对该子键空间内的数据的更新Run,并且记γ(li)为所述子键空间li所含有的Run集合,|γ(li)|为集合大小;所述Run的键值数据按照键顺序排序,并且一个子键空间的Run之间可重叠;所述T≥1。
(2)将所述动态容量内存表进行合并,具体为:当所述动态容量内存表的容量值超过M,将所述动态容量内存表转换成只读内存表,并在后台线程中启动合并过程,将所述只读内存表合入存储层L0,同时,建立新的活动内存表,继续处理前端读写请求。所述合并过程具体为:根据存储层L0的子键空间的范围分区,将所述只读内存表划分成N个Run,记为r1,r2,...,rN,其中ri属于li。然后将ri写入对应的子键空间li对应的存储文件中。当一个子键空间li的数据量超过阈值β或|γ(li)|>T时,将γ(li)合并成一个Run,即合并之后|γ(li)|=1,并且根据数据量等分成两个子键空间,当合并完成后,索引写步骤完毕。
进一步地,所述阈值β的取值为64MB。
进一步地,该索引方法还包括自适应读优化方法,包括以下子步骤:
(c)定期运行下述过程:首先根据写热度对子键空间进行聚类,分成四类,分别为:Cold、Warm、WriteBalanced、WriteHeavy。选择写热度最低的Cold类的子键空间,然后根据读热度对所述Cold类的子键空间进行降序排序,并且过滤掉满足如下条件的子键空间li:接着在这个排好序并过滤完毕的Cold类子键空间集合中选择前P个,l1,l2,...,lP,将每个子键空间li的γ(li)(1≤i≤P)集合合并成一个Run。
公式公式与现有技术相比,本发明具有的有益效果是:本发明提出的索引方法,去掉了传统LSMT的多层设计,引入了动态容量的内存表和自适应读优化机制:
1)使得本发明提出的索引方法相比于现有的LSMT设计有更低的读写放大因子,***读写吞吐量更高,同时提升了存储设备的寿命。
2)本发明提出的索引方法能够根据工作负载中的读写分布,自动做出结构优化,进一步降低***延迟。
附图说明
图1是本发明提出的索引方法流程图。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1为本发明在块存储设备上的工作负载自适应键值数据索引方法的流程图,该方法具体包括以下步骤:
(1)对LSMT存储结构进行修改设计,包括以下子步骤:
(1.1)去除LSMT多层结构的中间层,保留最后一层,并将最后一层作为存储层L0;将原先固定容量的内存表换成动态容量内存表,其他结构基本保持不变:保留了日志文件用于在宕机后恢复内存表。所述动态容量内存表的容量值为M,引入实数参数R,R>1,满足R用于权衡内存使用量与读写放大,M随着数据量的增长而增长。
(1.2)为了便于后序的自适应读优化,对于存储层L0引入了动态分区机制:将存储层L0根据键范围分区成N个子键空间l1,l2,...,lN,所述子键空间不重叠,且每个子键空间li(1≤i≤N)的数据均存储在独立的存储文件中。每个子键空间li(1≤i≤N)最多存储T个来自所述动态容量内存表对该子键空间内的数据的更新Run,并且记γ(li)为所述子键空间li所含有的Run集合,|γ(li)|为集合大小;所述Run的键值数据按照键顺序排序,并且一个子键空间的Run之间可重叠;所述T≥1。每个子键空间拥有元数据metadata:max_key、num_runs、index_data;所述max_key为描述该子键区间的最大键,用于描述该子键空间的范围;num runs描述该子键空间有多少个Run;index_data为存储了该子键空间每个Run的索引数据。其中,每个Run的索引数据又包含:bloom_filter_data、block_index_data,所述bloom_filter_data为对该Run所建立的布隆过滤器信息;block_index_data对该Run所存储的数据按block进行了划分,其中block为4KB,block_index_data存储的是每个block的最大键,用于快速定位一个查询键可能在的block。最后这些元数据又以<max_key,metadata>为键值数据存储在另外一个独立的传统LSMT键值存储***中,比如LevelDB/RocskDB。由于这些元数据相比于数据要小得多,因此这些元数据一般都能缓存在内存中,不需要执行IO。
(2)将所述动态容量内存表进行合并,具体为:当所述动态容量内存表的容量值超过M,将所述动态容量内存表转换成只读内存表,并在后台线程中启动合并过程,将所述只读内存表合入存储层L0,同时,建立新的活动内存表,继续处理前端读写请求。所述合并过程具体为:根据存储层L0的子键空间的范围分区,将所述只读内存表划分成N个Run,记为r1,r2,...,rN,其中ri属于li,即ri中键值数据的最大键≤li中存储的键值数据的最大键(通过查询原数据存储LSMT可以得到),并且ri中键值数据的最小键>li-1中存储的键值数据的最大键(通过查询原数据存储LSMT可以得到)。然后将ri写入对应的子键空间li对应的存储文件中。同时更新这些元数据,这个更新过程包括修改num_runs和index_data等等。为了限制子键空间内部的查询IO次数,当一个子键空间li的数据量超过阈值β(64MB)或|γ(li)|>T时,将γ(li)合并成一个Run,即合并之后|γ(li)|=1,并且根据数据量等分成两个子键空间,该过程为***操作。通过引入***操作,保证每个子键空间的查询IO复杂度为O(T)。这个***操作涉及到写入子键空间文件,更新原数据LSMT。当所有的Run都完成了写入,并触发完毕***操作,那么整个合并完成。当合并完成后,索引写步骤完毕。
本发明的一个实施例中还包括自适应读优化方法,包括以下子步骤:
其中,为t-1至t时刻之间,对子键空间li的读次数,α为衰减因子,0<a<1,且这里采用指数衰减技术是为了让***能够捕捉时间局部性,即最近执行读相对于久远的读更能反应工作负载的当前状态,给予这些读更多的读权重。同时在***中定期更新这些读热度信息。
其中,为t-1至t时刻之间,对子键空间li的写入次数,且I(t)为当前时刻t与上一个时刻t-1之间流逝的时间。这里的时刻定义成每次合并的开始时间,即这些写热度信息的更新是在合并的时候进行的,这样能够降低更新开销。引入I(t)是为了处理***长时间没有写请求的情况,这种情况下,这些写入的权重也应该降低。
(c)有了读写热度之后,我们引入自适应读优化机制。首先根据写热度对子键空间进行聚类,分成四类,分别为:Cold、Warm、WriteBalanced、WriteHeavy。选择对Cold类的子键空间进行优化,因为其他三类的子键空间往往有着更多的写操作,不影响这写子键空间的写入操作性能;根据读热度对所述Cold类的子键空间进行降序排序,并且过滤掉满足如下条件的子键空间li:接着在这个排好序并过滤完毕的Cold类子键空间集合中选择前P个,l1,l2,…,lP,将每个子键空间li的γ(li)(1≤i≤P)集合合并成一个Run。
用于权衡内存使用量与读写放大,随着数据量的增长而增长。公式公式本发明的一个实施例中,还包括了读操作,所述读操作分为点读操作和范围读操作。对于点读操作,首先查询动态容量内存表,找到即返回结果,如果没有找到,则查询只读内存表,若找到,即完成点读操作。如果所有动态容量内存表都没有找到相应的数据,则通过元数据文件来确定可能包含查询键的子键空间,然后从子键空间中按Run的写入顺序逆序查找Run,如果找到则完成查询,否则宣告查询无法找到查询键。为了优化点读操作,本发明还为每个子键空间的Run配备了一个布隆过滤器,执行Run的查询之前,先查询该布隆过滤器,判断Run是否有可能包含查询键,以很低的代价免去了无效的IO。对于范围读操作,同时查询动态容量内存表和子键空间的Run,并通过归并合并得到查询结果。
将本发明的索引方法用在键值存储***上,与WiscKey和LevelDB相比较,本发明的索引方法完成相同的操作所需要写放大降低了最高4倍,同时读操作性能也保持优秀,在自适应读优化机制下,点读延迟再次降低30%。
Claims (3)
1.一种工作负载自适应单层LSMT的键值数据索引方法,其特征在于,具体包括以下步骤:
(1)对LSMT存储结构进行修改设计,包括以下子步骤:
(1.1)去除LSMT多层结构的中间层,保留最后一层,并将最后一层作为存储层L0;将原先固定容量的内存表换成动态容量内存表,所述动态容量内存表的容量值为M,引入实数参数R,R>1,满足|L0|为当前存储层的数据量;
(1.2)将存储层L0根据键范围分区成N个子键空间l1,l2,…,lN,所述子键空间不重叠,且每个子键空间li(1≤i≤N)的数据均存储在独立的存储文件中;每个子键空间li(1≤i≤N)最多存储T个来自所述动态容量内存表对该子键空间内的数据的更新Run,并且记γ(li)为所述子键空间li所含有的Run集合,|γ(li)|为集合大小;所述Run的键值数据按照键顺序排序,并且一个子键空间的Run之间可重叠;所述T≥1;
(2)将所述动态容量内存表进行合并,具体为:当所述动态容量内存表的容量值超过M,将所述动态容量内存表转换成只读内存表,并在后台线程中启动合并过程,将所述只读内存表合入存储层L0,同时,建立新的活动内存表,继续处理前端读写请求;所述合并过程具体为:根据存储层L0的子键空间的范围分区,将所述只读内存表划分成N个Run,记为r1,r2,…,rN,其中ri属于li;然后将ri写入对应的子键空间li对应的存储文件中;当一个子键空间li的数据量超过阈值β或|γ(li)|>t时,将γ(li)合并成一个Run,即合并之后|γ(li)|=1,并且根据数据量等分成两个子键空间,当合并完成后,索引写步骤完毕。
2.根据权利要求1所述键值数据索引方法,其特征在于,所述阈值β的取值为64MB。
3.根据权利要求1所述键值数据索引方法,其特征在于,该索引方法还包括自适应读优化方法,包括以下子步骤:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244527.4A CN111475507B (zh) | 2020-03-31 | 2020-03-31 | 一种工作负载自适应单层lsmt的键值数据索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244527.4A CN111475507B (zh) | 2020-03-31 | 2020-03-31 | 一种工作负载自适应单层lsmt的键值数据索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475507A CN111475507A (zh) | 2020-07-31 |
CN111475507B true CN111475507B (zh) | 2022-06-21 |
Family
ID=71749332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010244527.4A Active CN111475507B (zh) | 2020-03-31 | 2020-03-31 | 一种工作负载自适应单层lsmt的键值数据索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475507B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115113B (zh) * | 2020-09-25 | 2022-03-25 | 北京百度网讯科技有限公司 | 数据存储***、方法、装置、设备以及存储介质 |
CN112527804B (zh) * | 2021-01-27 | 2022-09-16 | 中智关爱通(上海)科技股份有限公司 | 文件存储方法、文件读取方法和数据存储*** |
CN117827818A (zh) * | 2022-09-29 | 2024-04-05 | 华为云计算技术有限公司 | 一种数据存储方法及装置 |
CN117725095B (zh) * | 2024-02-07 | 2024-05-03 | 北京四维纵横数据技术有限公司 | 面向数据集的数据存储和查询方法、装置、设备及介质 |
CN118092812B (zh) * | 2024-04-18 | 2024-06-25 | 华侨大学 | 基于内存表索引与迭代器缩减机制的键值存储及读写方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159915B (zh) * | 2015-07-16 | 2018-07-10 | 中国科学院计算技术研究所 | 可动态适应的lsm树合并方法及*** |
CN110168532B (zh) * | 2017-05-09 | 2021-08-20 | 华为技术有限公司 | 数据更新方法和存储装置 |
US20180349095A1 (en) * | 2017-06-06 | 2018-12-06 | ScaleFlux, Inc. | Log-structured merge tree based data storage architecture |
-
2020
- 2020-03-31 CN CN202010244527.4A patent/CN111475507B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111475507A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475507B (zh) | 一种工作负载自适应单层lsmt的键值数据索引方法 | |
US9449005B2 (en) | Metadata storage system and management method for cluster file system | |
US10296462B2 (en) | Method to accelerate queries using dynamically generated alternate data formats in flash cache | |
CN110825748A (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
CN102521406A (zh) | 海量结构化数据复杂查询任务的分布式查询方法和*** | |
US11886401B2 (en) | Database key compression | |
WO2013152678A1 (zh) | 元数据查询方法和装置 | |
CN107888687B (zh) | 一种基于分布式存储***的代理客户端存储加速方法及*** | |
WO2022037015A1 (zh) | 一种基于持久性内存的列式存储方法、装置及设备 | |
CN113553476B (zh) | 一种利用哈希减少写停顿的键值存储方法 | |
CN113268457B (zh) | 一种支持高效写的自适应学习索引方法和*** | |
CN110968269A (zh) | 基于scm与ssd的键值存储***及读写请求处理方法 | |
CN112306974A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111857582B (zh) | 一种键值存储*** | |
CN109783019B (zh) | 一种数据智能存储管理方法与装置 | |
CN114996275A (zh) | 一种基于多树转换机制的键值存储方法 | |
CN117370414A (zh) | 时序数据库的应用方法和装置 | |
CN108664217A (zh) | 一种降低固态盘存储***写性能抖动的缓存方法及*** | |
CN110659305B (zh) | 基于非易失存储***的高性能关系型数据库服务*** | |
CN115774699B (zh) | 数据库共享字典压缩方法、装置、电子设备及存储介质 | |
CN111444036A (zh) | 数据关联性感知的纠删码内存替换方法、设备及内存*** | |
CN110990340A (zh) | 一种大数据多层次存储架构 | |
CN110321349B (zh) | 一种面向数据起源***的自适应数据合并存储方法 | |
CN115509437A (zh) | 存储***、网卡、处理器、数据访问方法、装置及*** | |
CN115437836A (zh) | 一种元数据处理方法及相关设备 |
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 |