CN114969069B - 一种应用于键值存储系统的热度感知本地更新方法 - Google Patents

一种应用于键值存储系统的热度感知本地更新方法 Download PDF

Info

Publication number
CN114969069B
CN114969069B CN202210600978.6A CN202210600978A CN114969069B CN 114969069 B CN114969069 B CN 114969069B CN 202210600978 A CN202210600978 A CN 202210600978A CN 114969069 B CN114969069 B CN 114969069B
Authority
CN
China
Prior art keywords
data
key
updated
key value
tree
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
Application number
CN202210600978.6A
Other languages
English (en)
Other versions
CN114969069A (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.)
Huaqiao University
Original Assignee
Huaqiao University
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 Huaqiao University filed Critical Huaqiao University
Priority to CN202210600978.6A priority Critical patent/CN114969069B/zh
Publication of CN114969069A publication Critical patent/CN114969069A/zh
Application granted granted Critical
Publication of CN114969069B publication Critical patent/CN114969069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/23Updating
    • G06F16/235Update request formulation
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种应用于键值存储系统的热度感知本地更新方法,包括:对于待写入的数据,若键值对的键存在于B树中且已经写入外存设备,则将该数据插入更新缓存中,当更新缓存大小达到限制时,将该数据转换为只读结构,并生成相应的频率表,根据键信息,在B树中查询到该键值对的地址,并为键值对创建迭代器,逐条判断被更新键值对的地址与大小;对于热度相同的被更新数据,若同一哈希区内的数据同时被更新且数据总大小未发生变化,则进行本地更新;若同一哈希区内的部分数据被更新,则判断被更新数据与该哈希区内总数据量的比值,进行对应操作;本发明方法充分利用固态硬盘的随机性能,缓解层间合并过程中的IO放大,实现键值存储系统性能的提升。

Description

一种应用于键值存储系统的热度感知本地更新方法
技术领域
本发明涉及计算机存储领域,特别是指一种应用于键值存储系统的热度感知本地更新方法。
背景技术
随着大数据时代的到来,数据储量不断增加,数据特点发生了明显变化,非结构化数据占比已达到了数据总量的80%。在这样的数据变化趋势下,键值存储被广泛应用,它对数据结构没有明确限制,具有很高的可扩展性。目前已经有一些优秀的键值存储产品出现且被广泛应用,如Chrome浏览器使用的Leveldb,facebook基于Leveldb进一步提出改进的Rocksdb,Twitter使用的Redis和Memcached等。目前的键值存储所使用的数据结构主要有哈希结构、B树以及日志结构合并树(LSM树),这三种结构分别具有不同的优缺点。
由于基于LSM树键值存储系统具有良好的写性能,并且支持范围扫描,因此出现了许多相关产品。但由于LSM树结构固有的结构特点(外存中的层级结构),该结构的维护和使用会对键值存储系性能造成消极影响。以Leveldb为例,首先,Leveldb的写放大的来源主要是层间合并操作中的数据重写。例如,Leveldb中每一层的大小时上一层的10倍,将i层中的一个文件合并到i+1层时,在最坏的情况下,需要读取i+1层的10个文件,合并排序后再将这些数据写回i+1层,写放大倍数高达10,在这种情况下,将一个SST文件从L0层移动到L6层,写放大最高会达到50。其次,Leveldb的读放大的来源主要有两个方面。一方面,在查找一个键值对时,Leveldb可能需要在多个层级中进行查找,在最坏情况下,需要在L0中查找8个文件,在L1-L6层中每层需要查找一个文件,一共需要查找14个文件;另一方面,在一个SST文件中查找一个键值对时,Leveldb需要读取该文件的多个元数据块,实际读取的数据包括索引块、bloom过滤器块和数据块。例如,当查找1KB的键值对时,Leveldb需要读取16KB的索引块,4KB的过滤器块和4KB的数据块,共24KB的数据。在最差的情况下,需要读取14个SST文件,所以读放大会高达336。最后Leveldb的空间放大的来源主要是数据的追加写入,由于数据以追加的方式写入,而不是本地更新,所以Leveldb中的无效数据不会被马上回收,从而导致空间放大。
发明内容
本发明的主要目的在于克服现有技术中的上述缺陷,提出一种应用于键值存储系统的热度感知本地更新方法,能够充分利用固态硬盘的随机性能,缓解层间合并过程中的IO放大,实现键值存储系统性能的提升。
本发明采用如下技术方案:
一种应用于键值存储系统的热度感知本地更新方法,包括:
对于待写入的数据,在写入时进行判断,若键值对的键存在于B树中且已经写入外存设备,则将该数据插入更新缓存中,当更新缓存大小达到限制时,将该数据转换为一个只读结构,并生成相应的频率表,在创建频率表过程中,根据键信息,在B树中查询到该键值对的地址,并为键值对创建迭代器,逐条判断被更新键值对的地址与大小;
对于热度相同的被更新数据,若同一哈希区内的数据同时被更新且数据总大小未发生变化,则进行本地更新;若同一哈希区内的部分数据被更新,则判断被更新数据与该哈希区内总数据量的比值,若比值超过设定阈值,则将被更新数据进行本地更新,迁移该哈希区内的旧数据,记录不属于这个哈希区的被更新数据的旧地址并写入空闲列表中;若比值低于设定阈值,则被更新数据进行异地追加更新,并将旧地址均写入空闲列表中。
具体地,所述更新方法的数据读取流程具体为:
11)在缓存结构中查找目标数据,若存在,转步骤12);若不存在,转步骤13);
12)键值存储系统完成用户的读取请求,向用户发送读取到的目标数据;
13)在B树中查找目标键及地址信息,若存在,转步骤14);若不存在,转步骤15);
14)在外存设备中根据步骤13)得到的地址读取目标数据,转步骤12);
15)键值存储系统完成用户的读取请求,向用户发送结果,未找到目标数据。
具体地,所述更新方法的数据写入流程具体为:
21)核查缓存区的大小是否达到限制,若达到限制,转步骤23);若未达到限制,转步骤22);
22)在B树中查找目标键及地址信息,若存在,则将数据插入到更新缓存中;若不存在,则将数据插入到写入缓存中,转步骤25);
23)若是写入缓存,遍历写入缓存的数据,创建频率表并写入外存设备,并在完成后更新B树信息,返回步骤22);若是更新缓存,则转步骤24);
24)遍历更新缓存的数据,在B树中查找相应的地址信息,创建频率表,判断同一哈希区内的数据的旧地址布局,转到步骤23);
25)系统完成用户的写入请求,向用户发送写入成功的信息。
具体地,所述键值存储系统的结构具体为:
写入缓存区和更新缓存区,用于在内存中分别为写入数据和数据更新维护缓存区,当写入缓存区和更新缓存区大小达到限制时,数据转化为只读状态;
跳表结构,跳表结构用于记录插入的键值对;
数据AllCount,用于记录缓存区在内存生命周期中的总访问次数;
频率表区:根据记录的访问信息计算数据热度,并生成相应的频率表,作为数据刷新到外存设备的依据,在缓存区转换为只读状态时生成,记录键值对及其热度信息,在数据刷新操作完成后删除;
B树,B树用于维护全局的键顺序,B树节点中记录每个键值对的键和地址信息,作为范围扫描操作的依据;
空闲列表结构,用于记录存储无效数据的地址,当列表内的地址中的无效数据占比超过设定阈值时,则将该地址作为数据更新时的可用地址进行覆盖写入;
哈希区,用于存储外存设备上的哈希结构数据,热度相同的数据能够存储在相同的哈希区内。
由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:
(1)本发明提供的方法,缓解了层间合并操作带来的IO放大。一方面,数据以哈希结构进行存储,不维护LSM树中的层级结构,避免了层间合并操作中的IO放大;另一方面,数据采用本地更新,避免了数据追加写入而导致的垃圾收集操作。
(2)本发明提供的方法,使用内存中全局有序的B树结构作为索引,B树的节点中存储了数据的地址,可以根据地址信息直接读取存储目标数据的数据块,减小了读放大。
(3)本发明提供的方法,由于数据采用本地更新进行覆盖写入,数据库中的无效数据显著减少,可以在一定程度上缓解空间放大。
附图说明
图1为本发明实施例提供的一种基于键值存储系统的热度感知本地更新方法的框架图;
图2为应用于键值存储系统的热度感知本地更新策略的数据读取流程图;
图3为应用于键值存储系统的热度感知本地更新策略的数据写入流程图。
以下结合附图和具体实施例对本发明作进一步详述。
具体实施方式
图1为本发明实施例提供的一种基于键值存储系统的热度感知本地更新方法的框架图;
对于一条新写入的数据,在写入时进行判断,如果键值对的键存在于B树中且已经写入外存设备(地址不为空),那么就将该数据插入更新缓存中,当更新缓存大小达到限制时,将其转换为只读状态,为其生成相应的频率表,在创建频率表过程中,根据键信息,在B树中找到该键值对的地址,随后为其创建迭代器,逐条判断被更新键值对的地址与大小。对于热度相似的被更新数据,如果同一哈希区内的数据同时被更新且数据总大小未发生变化,则进行本地更新;若同一哈希区内的部分数据被更新,则判断被更新数据与该哈希区内总数据量的比值,如果比值超过某个阈值(如80%),那么则将被更新数据进行本地更新,迁移该哈希区内的旧数据,记录不属于这个哈希区的被更新数据的旧地址并写入空闲列表中。如果比值低于某个阈值,那么这些被更新数据进行异地进行追加更新,并将所有的旧地址写入空闲列表中,当空闲列表中的地址中的无效数据占比达到某个阈值,就使用该地址作为更新数据持久化的空间。
图2为应用于键值存储系统的热度感知本地更新策略的数据读取流程图。
101、用户向系统发送的读取请求,到102。
102、在缓存区中查找目标数据,首先在更新缓存中查找,然后在写入缓存中查找,若找到,到103,否则到104。
103、向用户返回查询结果。
104、在B树中查找目标键及其地址信息,若未找到,到103,否则到105。
105、根据上步找到的地址信息,在指定位置读取数据块,获取目标数据,到103。
图3为应用于键值存储系统的热度感知本地更新策略的数据写入流程图。
101、用户向系统发送的写入请求,到102。
102、判断缓存区的大小是否超过限制,若未超过,到103,否则到106。
103、在B树中查找目标键及其地址信息。
104、根据上步的查找结果,若未找到,将键值对插入到写入缓存中,若找到,将键值对插入到更新缓存;
105、向用户返回写入结果。
106、如果是写入缓存,则将缓存区数据写入到外存设备中,到107,否则到108。
107、更新B树中相应键的地址信息,到103。
108、判断被更新数据的旧地址的分布情况,若旧地址一致的数据占比超过80%,到109,否则到110。
109、被更新数据在该旧地址进行本地更新,如果旧地址一致的数据占比小于1,到110,否则到107。
110、迁移旧地址中有效数据,到112。
111、创建新的文件对被更新数据进行追加更新,到112。
112、将不属于使用地址的被更新数据的旧地址插入到空闲列表中,到107。
本发明实施例提供的键值存储系统的结构具体为:
写入缓存区和更新缓存区,用于在内存中分别为写入数据和数据更新维护缓存区,当写入缓存区和更新缓存区大小达到限制时,数据转化为只读状态;
跳表结构,跳表结构用于记录插入的键值对;
数据AllCount,用于记录缓存区在内存生命周期中的总访问次数;
频率表区:根据记录的访问信息计算数据热度,并生成相应的频率表,作为数据刷新到外存设备的依据,在缓存区转换为只读状态时生成,记录键值对及其热度信息,在数据刷新操作完成后删除;
B树,B树用于维护全局的键顺序,B树节点中记录每个键值对的键和地址信息,作为范围扫描操作的依据;
空闲列表结构,用于记录存储无效数据的地址,当列表内的地址中的无效数据占比超过设定阈值时,则将该地址作为数据更新时的可用地址进行覆盖写入;
哈希区,用于存储外存设备上的哈希结构数据,热度相同的数据能够存储在相同的哈希区内。
(1)本发明提供的方法,缓解了层间合并操作带来的IO放大。一方面,数据以哈希结构进行存储,不维护LSM树中的层级结构,避免了层间合并操作中的IO放大;另一方面,数据采用本地更新,避免了数据追加写入而导致的垃圾收集操作。
(2)本发明提供的方法,使用内存中全局有序的B树结构作为索引,B树的节点中存储了数据的地址,可以根据地址信息直接读取存储目标数据的数据块,减小了读放大。
(3)本发明提供的方法,由于数据采用本地更新进行覆盖写入,数据库中的无效数据显著减少,可以在一定程度上缓解空间放大。
上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。

Claims (4)

1.一种应用于键值存储系统的热度感知本地更新方法,其特征在于,包括:
对于待写入的数据,若键值对的键存在于B树中且已写入外存设备,则将该数据插入更新缓存中,当更新缓存大小达到限制时,将该数据转换为只读结构,并生成相应的频率表,在创建频率表过程中,根据键信息,在B树中查询到该键值对的地址,并为键值对创建迭代器,逐条判断被更新键值对的地址与大小;
对于热度相同的被更新数据,若同一哈希区内的数据同时被更新且数据总大小未发生变化,则进行本地更新;若同一哈希区内的部分数据被更新,则判断被更新数据与该哈希区内总数据量的比值,若比值超过设定阈值,则将被更新数据进行本地更新,迁移该哈希区内的旧数据,记录被更新数据的旧地址并写入空闲列表中;若比值低于设定阈值,则被更新数据进行异地追加更新,并将旧地址均写入空闲列表中。
2.根据权利要求1所述的一种应用于键值存储系统的热度感知本地更新方法,其特征在于,所述更新方法的数据读取流程具体为:
11)在缓存结构中查找目标数据,若存在,转步骤12);若不存在,转步骤13);
12)键值存储系统完成用户的读取请求,向用户发送读取到的目标数据;
13)在B树中查找目标键及地址信息,若存在,转步骤14);若不存在,转步骤15);
14)在外存设备中根据步骤13)得到的地址读取目标数据,转步骤12);
15)键值存储系统完成用户的读取请求,向用户发送结果,未找到目标数据。
3.根据权利要求1所述的一种应用于键值存储系统的热度感知本地更新方法,其特征在于,所述更新方法的数据写入流程具体为:
21)核查缓存区的大小是否达到限制,若达到限制,转步骤23);若未达到限制,转步骤22);
22)在B树中查找目标键及地址信息,若存在,则将数据插入到更新缓存中;若不存在,则将数据插入到写入缓存中,转步骤25);
23)若是写入缓存,遍历写入缓存的数据,创建频率表并写入外存设备,并在完成后更新B树信息,返回步骤22);若是更新缓存,则转步骤24);
24)遍历更新缓存的数据,在B树中查找相应的地址信息,创建频率表,判断同一哈希区内的数据的旧地址布局,转到步骤23);
25)系统完成用户的写入请求,向用户发送写入成功的信息。
4.根据权利要求1所述的一种应用于键值存储系统的热度感知本地更新方法,其特征在于,所述键值存储系统的结构具体为:
写入缓存区和更新缓存区,用于在内存中分别为写入数据和数据更新维护缓存区,当写入缓存区和更新缓存区大小达到限制时,数据转化为只读状态;
跳表结构,跳表结构用于记录插入的键值对;
数据AllCount,用于记录缓存区在内存生命周期中的总访问次数;
频率表区:根据记录的访问信息计算数据热度,并生成相应的频率表,作为数据刷新到外存设备的依据,在缓存区转换为只读状态时生成,记录键值对及其热度信息,在数据刷新操作完成后删除;
B树,B树用于维护全局的键顺序,B树节点中记录每个键值对的键和地址信息,作为范围扫描操作的依据;
空闲列表结构,用于记录存储无效数据的地址,当列表内的地址中的无效数据占比超过设定阈值时,则将该地址作为数据更新时的可用地址进行覆盖写入;
哈希区,用于存储外存设备上的哈希结构数据,热度相同的数据能够存储在相同的哈希区内。
CN202210600978.6A 2022-05-30 2022-05-30 一种应用于键值存储系统的热度感知本地更新方法 Active CN114969069B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210600978.6A CN114969069B (zh) 2022-05-30 2022-05-30 一种应用于键值存储系统的热度感知本地更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210600978.6A CN114969069B (zh) 2022-05-30 2022-05-30 一种应用于键值存储系统的热度感知本地更新方法

Publications (2)

Publication Number Publication Date
CN114969069A CN114969069A (zh) 2022-08-30
CN114969069B true CN114969069B (zh) 2024-06-18

Family

ID=82957813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210600978.6A Active CN114969069B (zh) 2022-05-30 2022-05-30 一种应用于键值存储系统的热度感知本地更新方法

Country Status (1)

Country Link
CN (1) CN114969069B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109683811A (zh) * 2018-11-22 2019-04-26 华中科技大学 一种混合内存键值对存储系统的请求处理方法
CN110347336A (zh) * 2019-06-10 2019-10-18 华中科技大学 一种基于nvm与ssd混合存储结构的键值存储系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190034427A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Data management system employing a hash-based and tree-based key-value data structure
CN110968266B (zh) * 2019-11-07 2021-03-26 华中科技大学 一种基于热度的存储管理方法及系统
CN110968269A (zh) * 2019-11-18 2020-04-07 华中科技大学 基于scm与ssd的键值存储系统及读写请求处理方法
CN113704260B (zh) * 2021-08-25 2023-09-29 中山大学 一种基于改进lsm树结构的数据存储方法及系统
CN113821171B (zh) * 2021-09-01 2024-06-11 上海沄熹科技有限公司 一种基于哈希表与lsm树的键值存储方法
CN114416646A (zh) * 2022-01-20 2022-04-29 上海妃鱼网络科技有限公司 一种层级存储系统的数据处理方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109683811A (zh) * 2018-11-22 2019-04-26 华中科技大学 一种混合内存键值对存储系统的请求处理方法
CN110347336A (zh) * 2019-06-10 2019-10-18 华中科技大学 一种基于nvm与ssd混合存储结构的键值存储系统

Also Published As

Publication number Publication date
CN114969069A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
CN111399777B (zh) 一种基于数据值分类的差异化键值数据存储方法
Sarkar et al. Lethe: A tunable delete-aware LSM engine
KR102564170B1 (ko) 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체
KR101289931B1 (ko) 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치
CN105912687B (zh) 海量分布式数据库存储单元
CN110347852B (zh) 嵌入横向扩展键值存储系统的文件系统及文件管理方法
CN111026329B (zh) 基于主机管理瓦记录磁盘的键值存储系统及数据处理方法
CN110109927A (zh) 基于LSM树的Oracle数据库数据处理方法
Amur et al. Design of a write-optimized data store
CN105095113A (zh) 一种缓存管理方法和系统
CN113553476A (zh) 一种利用哈希减少写停顿的键值存储方法
CN114996275A (zh) 一种基于多树转换机制的键值存储方法
CN116257523A (zh) 一种基于非易失存储器的列式存储索引方法及装置
CN111581218A (zh) 一种利用双粒度加速访问基于日志结构合并树的键值数据存储的方法
CN109299143B (zh) 基于Redis缓存的数据互操作测试知识库的知识快速索引方法
US10558636B2 (en) Index page with latch-free access
KR101806394B1 (ko) 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법
CN109002400B (zh) 一种内容感知型计算机缓存管理系统及方法
CN111831691A (zh) 一种数据读写方法及装置、电子设备、存储介质
CN112732725B (zh) 基于nvm混合内存的自适应前缀树构建方法及其系统、介质
CN113253926A (zh) 提升新型存储器的查询和存储性能的存储内索引构建方法
CN114969069B (zh) 一种应用于键值存储系统的热度感知本地更新方法
CN110515897B (zh) Lsm存储系统读性能的优化方法及系统
Fevgas et al. A study of R-Tree performance in hybrid flash/3DXPoint storage

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