CN114416646A - 一种层级存储系统的数据处理方法及装置 - Google Patents

一种层级存储系统的数据处理方法及装置 Download PDF

Info

Publication number
CN114416646A
CN114416646A CN202210066308.0A CN202210066308A CN114416646A CN 114416646 A CN114416646 A CN 114416646A CN 202210066308 A CN202210066308 A CN 202210066308A CN 114416646 A CN114416646 A CN 114416646A
Authority
CN
China
Prior art keywords
data
key value
temporary storage
storage file
target layer
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.)
Pending
Application number
CN202210066308.0A
Other languages
English (en)
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.)
Shanghai Feiyu Network Technology Co ltd
Original Assignee
Shanghai Feiyu Network Technology Co ltd
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 Shanghai Feiyu Network Technology Co ltd filed Critical Shanghai Feiyu Network Technology Co ltd
Priority to CN202210066308.0A priority Critical patent/CN114416646A/zh
Publication of CN114416646A publication Critical patent/CN114416646A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

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

Abstract

本发明涉及一种层级存储系统的数据处理方法及装置,使用计数器记录每个被查询的键值的访问热度,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;在存储系统对两个数据层执行数据合并操作时,识别有效热键值,并将有效热键值通过临时存储文件保留在当前层,再通过热键值迁移操作,将临时存储文件逆向合并,上升至高层级数据层中存储,访问越频繁的键值会被存储到越上层,从而减少热键值数据的查找延时。与现有技术相比,本发明通过有效热键值识别进行了热键数据的向上合并,不仅提高了日志合并树的整体查找性能,而且增强了日志合并树对负载的适应性。

Description

一种层级存储系统的数据处理方法及装置
技术领域
本发明涉及计算机系统数据存储领域,尤其是涉及一种层级存储系统的数据处理方法及装置。
背景技术
日志结构合并树,是一种基于硬盘的数据结构,常用于NoSQL数据库中,核心思想就是放弃部分读能力,换取写入的最大化能力,其假定内存足够大,因此不需要每次有数据更新就必须将数据立即写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到足够多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾(因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。和B/B+树等索引相比,日志合并树能够将多个随机写转换为顺序写,利用存储设备的顺序写性能比随机写性能高的特征,明显提升数据的写入延时和吞吐。因此,日志合并树被广泛的应用在NoSQL数据库、键值存储系统,甚至传统的关系型数据库也逐渐采用日志合并树存储数据。
日志合并树将数据先写到内存中,同时为了保证数据可靠性,以追加写的方式将日志写入到磁盘。等聚集到一定数据或等待一定时间后,在批量更新到存储设备中。可以这样理解,日志结构合并树分为Level0、Level1、Level2、...、LevelM多棵新的树,其中只有Level0在内存中,其余Level1-LevelM在磁盘中,内存中的Level0新的树一般采用跳表等有序的数据结构,方便后续顺序写磁盘,磁盘中的Level1-LevelM新的树,本质是数据排好序后顺序写到磁盘上的文件,只是叫做树而已,每一层的新的树都有一个阈值大小,达到阈值后会与下一层的新的树进行合并,合并结果写入下一层,只有内存中数据允许原地更新,磁盘上数据的变更只允许追加写,不做原地更新。
为了提高存储设备的读取效率,日志合并树通常会将数据分为多层存储,层级越往上,该层的存储容量越小。其目的是提升内存刷盘时的存储设备读取效率,因为除第一层Level0外,其他层的数据都是有序存储的,缩小相邻层级数据存储空间大小的差异,可以提高数据合并时的数据读取量。当某一层的数据容量达到限定值后,再选择下一层的数据存储文件(Sorted Strings Table,SSTable)和当前层级数据存储文件进行合并,重新生成一个更大的存储文件存储到下一层中。随着数据量的不断写入,数据被逐层下沉到更低的层级,直到最后一级。因此,日志合并树读的数据在不同层级之间的分布是由数据写入时决定的。
日志合并树的查询操作会按顺序查找Level0、Level1、Level2、...、LevelM每一棵树,一旦匹配便返回目标数据,不再继续查询,该策略保证了查到的一定是目标键值key最新版本的数据value。但是,数据的访问特征会随着负载的变化而不断变化,比如机器学习,在不同时期数据的读写比例不同,数据的冷热分布也不同。特别是,读取不同层级的数据的延时也不同,层级越往上读取延时越低。因此,在一些应用场景下,如果查询目标数据时需要涉及查询多级数据层,日志合并树的读性能较差,会引发大量的读取的I/O请求。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种层级存储系统的数据处理方法及装置,访问越频繁的键值会被存储到越上层,从而减少热键值数据的查找延时,不仅能够提高日志合并树的整体查找性能,而且增强了日志合并树对负载的适应性。
本发明的目的可以通过以下技术方案来实现:
根据本发明的一个方面,提供了一种层级存储系统的数据处理方法,应用于按照日志结构合并树存储数据的存储系统中,存储系统包括内存和存储设备,方法包括:
存储系统执行数据查询操作时,使用计数器记录每个被查询的键值的访问热度,基于计数器得到高热访问键值,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;
存储系统对两个数据层执行数据合并操作时,将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件,在中间存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间存储文件中有效热键值的键值数据迁移至一个临时存储文件中,将临时存储文件存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
存储系统对两个数据层执行热键值迁移操作时,将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
进一步的,使用计数器记录每个被查询的键值的访问热度包括:
构建一个基于Count-Min Sketch的计数器,计数器包括多个数组,每个数组对应设置一个哈希函数;
每接收一次查询请求,则分别使用哈希函数对被查询的键值计算哈希值,将哈希值作为各个数组的位置索引,在各个数组的对应位置处更新数组的元素值,再记录各个数组更新后在对应位置处的元素值,将其中最小的元素值作为此次查询的键值的访问热度。
进一步的,基于计数器得到高热访问键值包括:
将访问热度最高的前h个键值的访问热度存入一个大小为h的最小堆,h>1,最小堆的根节点存放访问热度排在第h位的键值的访问热度accessmin
每接收一次查询请求,从计数器中获取被查询的键值更新后的访问热度accessnew,若accessnew≥accessmin,则使用accessnew替换accessmin,更新最小堆,使得最小堆的根节点存放访问热度排在第h位的键值的访问热度,否则,最小堆保持不变。
进一步的,使用数据过滤器记录每个被查询的键值的层级包括:
构建一个布谷鸟过滤器,布谷鸟过滤器的每个存储位置用于存储键值的指纹信息以及层级;每接收一次查询请求,则记录被查询的键值key以及键值key被查询到的层级m,计算键值key在布谷鸟过滤器中的存储位置,若该存储位置未存放键值key,则将键值key的指纹信息和层级m存入,否则,将布谷鸟过滤器中记录的层级level返回,进行层级更新。
进一步的,层级更新具体为:若level>m,则将布谷鸟过滤器中存储的层级更新为m,若level≤m,则布谷鸟过滤器中存储的层级不做改变。
进一步的,基于计数器和数据过滤器识别有效热键值具体为:
获取键值,检查该键值是否为高热访问键值,若是,则查询数据过滤器,若数据过滤器中未记录该键值或记录了该键值且数据过滤器中该键值的层级大于等于第二目标层的层级,则该键值为有效热键值,否则,该键值不是有效热键值。
进一步的,选定两个相邻的数据层,将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,第一目标层中至少存在一个临时存储文件,存储系统执行热键值迁移操作具体为:
把第一目标层中的临时存储文件转移至第二目标层,若第二目标层中存在键值范围重叠的临时存储文件,则合并第一目标层和第二目标层中的临时存储文件得到一个中间临时存储文件,否则,将第一目标层中的临时存储文件作为中间临时存储文件;
在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
将第二目标层的相邻高层数据层作为新的第二目标层,将原第二目标层作为新的第一目标层,再次进行热键值迁移操作,直至第二目标层为存储设备的最高数据层。
进一步的,在存储系统执行数据合并操作和上述热键值迁移操作时,若数据层中新增了临时存储文件,则检查临时存储文件是否满足大小约束,若不满足,则将临时存储文件转换为正式的存储文件存入数据层。
进一步的,分别为各个数据层设置临时存储阈值,所述大小约束为:数据层中的临时存储文件的大小需小于该数据层预设的临时存储阈值。
根据本发明的另一个方面,提供了一种层级存储系统的数据处理装置,应用于按照日志结构合并树存储数据的存储系统中,包括:
访问热键记录单元,在存储系统执行数据查询操作时,所述访问热键记录单元使用计数器记录每个被查询的键值的访问热度,基于计数器得到高热访问键值,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;
数据合并单元,在存储系统对两个数据层执行数据合并操作时,所述数据合并单元将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件,在中间存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间存储文件中有效热键值的键值数据迁移至一个临时存储文件中,将临时存储文件存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
热键数据迁移单元,在存储系统对两个数据层执行热键值迁移操作时,所述热键数据迁移单元将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
与现有技术相比,本发明具有以下有益效果:
(1)通过Count-Min Sketch计数器能够有效识别出当前负载访问的热键值,并通过最小堆维护访问频率较高的键值,便于在接收到查询请求后进行高热访问键值的更新,也便于识别一个键值是否为高热访问键值,数据结构简单,大大简化了操作复杂度。
(2)使用布谷鸟过滤器记录键值的层级,在识别高热访问键值后,结合层级分布识别有效热键值,能更准确的识别键值数据是否对应负载访问的键值数据,避免将底层旧键值数据向上迁移。
(3)通过临时存储文件在日志合并树重写时保留高热访问且层级有效的键值数据,避免有效热键值的键值数据下沉,导致访问延时过长,能够提高日志合并树的读性能,而且增强日志合并树对负载的适应性。
(4)通过热键值迁移操作将临时存储文件向上逆向合并,使得高热访问的有效热键值在靠近内存的较高层级分布,访问延时小,进一步提高了日志合并树的读性能,增强了日志合并树对负载的适应性。
附图说明
图1为计数器的结构示意图;
图2为布谷鸟过滤器的结构示意图;
图3为数据合并操作的流程图;
图4为热键值迁移操作的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件。
实施例1:
一种层级存储系统的数据处理方法,应用于按照日志结构合并树存储数据的存储系统中,存储系统包括内存和存储设备,存储设备为磁盘等,方法包括:
存储系统执行数据查询操作时,使用计数器记录每个被查询的键值的访问热度,基于计数器得到高热访问键值,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;
存储系统对两个数据层执行数据合并操作时,将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件,在中间存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间存储文件中有效热键值的键值数据迁移至一个临时存储文件中,将临时存储文件存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
存储系统对两个数据层执行热键值迁移操作时,将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
在应用日志结构合并树存储数据的存储系统中,包括多个数据层:Level0、Level1、Level2、...、LevelM,其中,数据层Level0在内存中,其余数据层在磁盘中,每个数据层中存放多组键值数据,数据层中存放的多组键值数据为:
<keyi,1,valuei,1>,<keyi,2,valuei,2>,…,<keyi,Ni,valuei,Ni>
其中,i∈[1,M],M表示日志结构合并树的数据层的层数,<keyi,j,valuei,j>表示日志结构合并树中第i层数据层中第j组键值数据,keyi,j表示键值,指示所存储的数据的标识信息,valuei,j表示数据,即所存储的数据本身,j∈[1,Ni],Ni表示日志结构合并树中第i层数据层中键值数据的数量;磁盘中的数据层中,键值数据以数据存储文件(Sorted StringsTable,SSTable)的格式存储,每个SSTable中键值数据都是根据键值有序排列的。
为了便于理解,从内存到磁盘,数据层的层级依次变低,若a>b,则说明层级a低于层级b,如Level0层级最高,Level1是磁盘中最高的数据层,LevelM层级最低,LevelM>Level0,层级越低,该层级的键值数据的读取速度越慢;
(1)高热访问键值,也称热键值
构建一个基于Count-Min Sketch的计数器,Count-Min Sketch是一个概率数据结构,它使用散列函数将键值访问映射到频率,能够表示不同键值的访问计数。计数器包括x个长度为y的数组,每个数组对应设置一个哈希函数;
每接收一次查询请求,则使用x个哈希函数分别对被查询的键值计算哈希值,将哈希值作为各个数组的位置索引,在各个数组的对应位置处更新元素值,再记录各个数组更新后在对应位置处的元素值,将其中最小的元素值作为此次查询的键值的访问热度。
如图1所示,本实施例中x取4,y取5,对于被查询的键值key,分别进行哈希计算,在第一个数组中的哈希值对应的位置索引为第1格,更新该处的元素值;在第二个数组中的哈希值对应的位置索引为第2格,更新该处的元素值;在第三个数组中的哈希值对应的位置索引为第4格,更新该处的元素值;在第四个数组中的哈希值对应的位置索引为第3格,更新该处的元素值;
由于哈希可能会有冲突,即在一个数组中不同的键值哈希到同一个位置索引,因此,y的长度越大,冲突的可能性就越小;另一方面,使用多个数组和多个哈希函数,来计算一个键值对应的数组的位置索引,每个数组对键值进行了一次计数,这样,想知道某个键值的频率时,获取该键值在x个数组中的计数值的最小值即可。因此,计数器的大小需要根据键值范围以及精确度要求进行合理设置。
本实施例中,设计数组的哈希函数时,使得任一键值被哈希后的哈希值在数组小标范围内,这样,直接将哈希值作为数组下标,即位置索引,更新元素值时直接加1即可。
使用最小堆维护访问频率较高的键值,将访问热度最高的前h个键值的访问热度存入一个大小为h的最小堆,h>1,最小堆的每个节点中,存放键值key以及其对应的访问热度。最小堆的根节点存放访问热度排在第h位的键值的访问热度accessmin
每接收一次查询请求,从计数器中获取被查询的键值更新后的访问热度accessnew,若accessnew≥accessmin,则使用accessnew替换accessmin,更新最小堆,使得最小堆的根节点存放访问热度排在第h位的键值的访问热度,否则,最小堆保持不变。
如本实施例中h为100,即将被查询次数排序在前100位的键值作为高热访问键值,构建的最小堆包括100个节点,在最小堆中,根节点存放访问频率最低的高热访问键值(即排在第100位的高热访问键值的访问热度)。
每当存储系统接收到一次查询请求(即读操作)时,就将被查询的键值记录到计数器中,并得到该键值更新后的访问热度。将该键值的访问热度accessnew与最小堆根节点accessmin(第100位的高热访问键值的访问热度)进行比较,若accessnew<accessmin,则显然,该键值的访问热度没有达到前100,因此最小堆保持不变,否则,accessnew>accessmin,说明该键值的访问热度已经超过第100位,则将其替换最小堆的根节点,最小堆内部再更新调整节点的位置,accessnew=accessmin时,虽然没有超过排在第100位的访问热度,但是由于是最新查询的,因此也用其替换最小堆的根节点。
为了减少存储空间,只记录近期访问的查询键值,每隔一段时间,将Count-MinSketch计数器和最小堆节点中的值都减1,如果计数已经为0则不再减。
对于数据层中的一个键值,在判断其是否为高热访问键值时,只需在最小堆中进行查找,如果最小堆中存在该键值且计数不为0,则该键值就是高热访问键值。
(2)键值的层级
在日志合并树中,同一个键值如果被多次插入会有多个版本,但是只有在最上面层级的键值才是有效热键值,其他都是无效的。为了实现对无效的热键值进行迁移,本发明基于低存储开销的布谷鸟过滤器记录热键值在不同层级的分布信息。其基本思路是将布谷鸟过滤器的指纹扩展为指纹+一个表示层级信息的整数。日志合并树一般情况下为7层,因此,只需要4个比特就可以记录层级,在布谷鸟过滤器原来的指纹后面多存储4比特数据即可,当然,如果日志合并树的层级M大于8,则可以通过对层级进行取对数操作,将结果作为层级存储的比特数。
如图2所示,构建一个布谷鸟过滤器,布谷鸟过滤器的每个存储位置用于存储键值的指纹信息以及层级;传统的布谷鸟过滤器中只存放指纹信息,本发明在指纹信息后扩展了层级记录,实现了对键值层级的记录。键值的指纹信息存入布谷鸟过滤器或布谷鸟过滤器更新的操作按照常规的操作实现即可,层级随指纹存入布谷鸟过滤器的操作如下:
每接收一次查询请求,则记录被查询的键值key以及键值key被查询到的层级m,根据指纹信息找到键值key在布谷鸟过滤器中的存储位置,若存储位置未存放键值key的指纹信息,则将键值key的指纹信息和层级m存入,否则,将布谷鸟过滤器中记录的层级level返回,进行层级更新。
层级更新具体为:若level>m,则将布谷鸟过滤器中存储的层级更新为m,若level≤m,则布谷鸟过滤器中存储的层级不做改变;这样可以使得布谷鸟过滤器中存储的层级是该键值版本最新的层级。
由于哈希计数冲突的原因,两个键值的指纹信息可能相同,因此,布谷鸟过滤器中已经存放的指纹信息fp可能是其他键值的层级。在层级更新时,则取level和m中的最小值,这样会使冲突的键值有可能被当作热键值处理并有可能提升到上层存储,同样不会影响正确性。因为布谷鸟过滤器中的误判率极低,所以对整体影响较小。
同时,为了减少存储开销,布谷鸟过滤器的容量远小于日志合并树的键值数量,因此新键值会替换掉布谷鸟过滤器中的旧键值,从而使得布谷鸟过滤器只记录近期的热键值及层级分布。
需要注意,查询键值层级时不对布谷鸟过滤器进行更新和改变,因此,进行有效热键值识别时,无论是否查询到,都不会影响布谷鸟过滤器中的数据记录。
(3)数据层的合并
存储系统对两个数据层执行数据合并操作时,将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件SSTablenew,到此的操作均为日志合并树常规的数据合并操作,按照日志合并树刷盘或重写时的compaction合并即可。一般,日志合并树的数据合并会将合并后的中间存储文件SSTablenew存入第二目标层,完成数据的下沉,结束数据合并过程。但本申请增加了有效热键值识别和迁移的步骤,如图3所示:
在中间存储文件SSTablenew中遍历其中的键值,基于计数器和数据过滤器识别出有效热键值,将中间存储文件SSTablenew中有效热键值的键值数据迁移至一个临时存储文件SSTabletempz中,将临时存储文件SSTabletempz存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
可以为中间存储文件SSTablenew中的所有键值创建一个迭代器,然后遍历迭代器中的每一个键值,先识别是否为高热访问键值,若不是,则忽略,若是,则识别其层级,判断是否为有效热键值,若不是,则忽略,若是,则将有效热键值的键值数据迁移至临时存储文件SSTabletempz中。
以迭代器中的键值key为例,在最小堆中查询是否存在该键值,若最小堆中存在,则key为高热访问键值,若最小堆中不存在,则不是高热访问键值。
若key为高热访问键值,则对其进行映射,得到指纹信息,进而计算pos1和pos2,查询布谷鸟过滤器中是否记录了该键值的指纹信息和层级。若布谷鸟过滤器中未记录该键值,则该键值为有效热键值,若记录了该键值且布谷鸟过滤器中该键值的层级大于等于第二目标层的层级,则该键值为有效热键值,否则,该键值不是有效热键值。
需要注意的是因为哈希冲突的原因,此步骤中键值不能被丢弃,以防止发生数据丢失,因此将识别的有效热键值放入临时存储文件SSTabletempz,仍然留在第一目标层,其他没有被识别的键值的键值数据仍在中间存储文件中,将移走有效热键值数据后的中间存储文件中的键值数据转换为正式的存储文件存入第二目标层,完成数据的下沉,保证热键值数据没有被下沉。
存储系统对两个数据层执行数据合并操作时,合并后第一目标层中新增了临时存储文件,检查临时存储文件是否满足大小约束,若不满足,则将临时存储文件转换为正式的存储文件存入数据层,即第一目标层,大小约束为:数据层中的临时存储文件的大小需小于该数据层预设的临时存储阈值。
本发明在日志合并树的数据重写时通过计数器和最小堆发现数据层中的热键值,并通过布谷鸟过滤器判断层次分布,识别是否为有效热键值,若是有效热键值,则放入临时存储文件并保留在本层级,若不是,则按照正常的日志合并树合并到层级更低的下层。
一般来讲,因为热键值的数量要小于冷键值,所以SSTabletempz的大小会比较小,而过小的存储文件SSTable会增加日志合并树的查找延时,小文件过多会影响读性能,本发明会继续进行热键数据迁移,通过合并临时存储文件来解决此问题。
(4)热键值迁移操作
存储系统对两个数据层执行热键值迁移操作时,将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
热键值迁移操作实际上是逆向的存储文件合并。常规的日志结构合并树中,高层级的数据存储达到一定大小或经过固定时间后,会从高层级中选择存储文件合并至低层级,实现存储数据的下沉。本申请的方案设计中,临时存储文件中存储的是有效热键值的键值数据,有效热键值访问热度高,无疑,其分布越靠近内存、即层级越高,则读取速度越快,为了提升存储系统的读性能,应使得热键值数据尽可能在高层级中分布。因此,对于数据合并时生成的临时存储文件,会通过逆向合并实现热键数据的上升,从而提高系统的整体吞吐率。
出于反向重写的思想,如图4所示,热键值迁移(临时存储文件合并)操作是将低层的临时存储文件合并至靠近内存的高层,具体为:
选定两个相邻的数据层,将层级较低的数据层作为第一目标层(m层),将层级较高的数据层作为第二目标层(m-1层),第一目标层中至少存在一个临时存储文件,存储系统执行热键值迁移操作具体为:
把第一目标层中的临时存储文件转移至第二目标层,若第二目标层中存在键值范围重叠的临时存储文件,则合并第一目标层和第二目标层中的临时存储文件得到一个中间临时存储文件,否则,将第一目标层中的临时存储文件作为中间临时存储文件;
在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
将第二目标层的相邻高层数据层作为新的第二目标层,将原第二目标层作为新的第一目标层,再次进行热键值迁移操作,直至第二目标层为存储设备的最高数据层。
在上述热键值迁移操作过程中,若一个数据层中新增了临时存储文件(如下层的临时存储文件转移至高层),则检查临时存储文件是否满足大小约束,若不满足,则将临时存储文件转换为正式的存储文件存入数据层,即第二目标层,大小约束为:数据层中的临时存储文件的大小需小于该数据层预设的临时存储阈值,一般来说,层级越高的数据层的临时存储阈值越小。
关于热键值迁移操作的执行,可以由管理员根据需要设置,如每当日志合并树进行一次重写,则从最底层LevelM开始执行热键值迁移操作,直至将有效热键值数据迁移至磁盘的最高层或迁移过程中临时存储文件转换为正式的存储文件;或者,每经过一个固定时间,则选择相邻且存在临时存储文件的两个数据层进行热键值迁移操作,直至将热键值迁移至磁盘的最高层或迁移过程中临时存储文件转换为正式的存储文件;具体情形不再进行分析,相关从业人员可以理解。
本发明还保护一种层级存储系统的数据处理装置,应用于按照日志结构合并树存储数据的存储系统中,包括:
访问热键记录单元,在存储系统执行数据查询操作时,访问热键记录单元使用计数器记录每个被查询的键值的访问热度,基于计数器得到高热访问键值,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;
数据合并单元,在存储系统对两个数据层执行数据合并操作时,数据合并单元将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件,在中间存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间存储文件中有效热键值的键值数据迁移至一个临时存储文件中,将临时存储文件存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
热键数据迁移单元,在存储系统对两个数据层执行热键值迁移操作时,热键数据迁移单元将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (10)

1.一种层级存储系统的数据处理方法,其特征在于,应用于按照日志结构合并树存储数据的存储系统中,存储系统包括内存和存储设备,方法包括:
存储系统执行数据查询操作时,使用计数器记录每个被查询的键值的访问热度,基于计数器得到高热访问键值,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;
存储系统对两个数据层执行数据合并操作时,将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件,在中间存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间存储文件中有效热键值的键值数据迁移至一个临时存储文件中,将临时存储文件存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
存储系统对两个数据层执行热键值迁移操作时,将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
2.根据权利要求1所述的一种层级存储系统的数据处理方法,其特征在于,使用计数器记录每个被查询的键值的访问热度包括:
构建一个基于Count-Min Sketch的计数器,计数器包括多个数组,每个数组对应设置一个哈希函数;
每接收一次查询请求,则分别使用哈希函数对被查询的键值计算哈希值,将哈希值作为各个数组的位置索引,在各个数组的对应位置处更新数组的元素值,再记录各个数组更新后在对应位置处的元素值,将其中最小的元素值作为此次查询的键值的访问热度。
3.根据权利要求2所述的一种层级存储系统的数据处理方法,其特征在于,基于计数器得到高热访问键值包括:
将访问热度最高的前h个键值的访问热度存入一个大小为h的最小堆,h>1,最小堆的根节点存放访问热度排在第h位的键值的访问热度accessmin
每接收一次查询请求,从计数器中获取被查询的键值更新后的访问热度accessnew,若accessnew≥accessmin,则使用accessnew替换accessmin,更新最小堆,使得最小堆的根节点存放访问热度排在第h位的键值的访问热度,否则,最小堆保持不变。
4.根据权利要求1所述的一种层级存储系统的数据处理方法,其特征在于,使用数据过滤器记录每个被查询的键值的层级包括:
构建一个布谷鸟过滤器,布谷鸟过滤器的每个存储位置用于存储键值的指纹信息以及层级;每接收一次查询请求,则记录被查询的键值key以及键值key被查询到的层级m,计算键值key在布谷鸟过滤器中的存储位置,若该存储位置未存放键值key,则将键值key的指纹信息和层级m存入,否则,将布谷鸟过滤器中记录的层级level返回,进行层级更新。
5.根据权利要求4所述的一种层级存储系统的数据处理方法,其特征在于,层级更新具体为:若level>m,则将布谷鸟过滤器中存储的层级更新为m,若level≤m,则布谷鸟过滤器中存储的层级不做改变。
6.根据权利要求1所述的一种层级存储系统的数据处理方法,其特征在于,基于计数器和数据过滤器识别有效热键值具体为:
获取键值,检查该键值是否为高热访问键值,若是,则查询数据过滤器,若数据过滤器中未记录该键值或记录了该键值且数据过滤器中该键值的层级大于等于第二目标层的层级,则该键值为有效热键值,否则,该键值不是有效热键值。
7.根据权利要求1所述的一种层级存储系统的数据处理方法,其特征在于,选定两个相邻的数据层,将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,第一目标层中至少存在一个临时存储文件,存储系统执行热键值迁移操作具体为:
把第一目标层中的临时存储文件转移至第二目标层,若第二目标层中存在键值范围重叠的临时存储文件,则合并第一目标层和第二目标层中的临时存储文件得到一个中间临时存储文件,否则,将第一目标层中的临时存储文件作为中间临时存储文件;
在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
将第二目标层的相邻高层数据层作为新的第二目标层,将原第二目标层作为新的第一目标层,再次进行热键值迁移操作,直至第二目标层为存储设备的最高数据层。
8.根据权利要求7所述的一种层级存储系统的数据处理方法,其特征在于,在存储系统执行数据合并操作和上述热键值迁移操作时,若数据层中新增了临时存储文件,则检查临时存储文件是否满足大小约束,若不满足,则将临时存储文件转换为正式的存储文件存入数据层。
9.根据权利要求8所述的一种层级存储系统的数据处理方法,其特征在于,分别为各个数据层设置临时存储阈值,所述大小约束为:数据层中的临时存储文件的大小需小于该数据层预设的临时存储阈值。
10.一种层级存储系统的数据处理装置,其特征在于,基于如权利要求1-9中任一所述的层级存储系统的数据处理方法,应用于按照日志结构合并树存储数据的存储系统中,包括:
访问热键记录单元,在存储系统执行数据查询操作时,所述访问热键记录单元使用计数器记录每个被查询的键值的访问热度,基于计数器得到高热访问键值,使用数据过滤器记录每个被查询的键值的层级,键值数据所在层级越低则访问速度越慢;
数据合并单元,在存储系统对两个数据层执行数据合并操作时,所述数据合并单元将层级较高的数据层作为第一目标层,将层级较低的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标存储文件合并入一个中间存储文件,在中间存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间存储文件中有效热键值的键值数据迁移至一个临时存储文件中,将临时存储文件存入第一目标层,将中间存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层;
热键数据迁移单元,在存储系统对两个数据层执行热键值迁移操作时,所述热键数据迁移单元将层级较低的数据层作为第一目标层,将层级较高的数据层作为第二目标层,将第一目标层和第二目标层中选定的目标临时存储文件合并入一个中间临时存储文件,在中间临时存储文件中遍历其键值,基于计数器和数据过滤器识别有效热键值,将中间临时存储文件中有效热键值的键值数据迁移至一个新的临时存储文件中,将新的临时存储文件作为第二目标层的临时存储文件存入第二目标层,将中间临时存储文件中剩余的键值数据转换为正式的存储文件存入第二目标层。
CN202210066308.0A 2022-01-20 2022-01-20 一种层级存储系统的数据处理方法及装置 Pending CN114416646A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210066308.0A CN114416646A (zh) 2022-01-20 2022-01-20 一种层级存储系统的数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210066308.0A CN114416646A (zh) 2022-01-20 2022-01-20 一种层级存储系统的数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN114416646A true CN114416646A (zh) 2022-04-29

Family

ID=81275185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210066308.0A Pending CN114416646A (zh) 2022-01-20 2022-01-20 一种层级存储系统的数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN114416646A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114969069A (zh) * 2022-05-30 2022-08-30 华侨大学 一种应用于键值存储系统的热度感知本地更新方法
CN114996275A (zh) * 2022-06-22 2022-09-02 华侨大学 一种基于多树转换机制的键值存储方法
CN116450591A (zh) * 2023-06-15 2023-07-18 北京数巅科技有限公司 一种数据处理方法、装置、计算机设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114969069A (zh) * 2022-05-30 2022-08-30 华侨大学 一种应用于键值存储系统的热度感知本地更新方法
CN114996275A (zh) * 2022-06-22 2022-09-02 华侨大学 一种基于多树转换机制的键值存储方法
CN116450591A (zh) * 2023-06-15 2023-07-18 北京数巅科技有限公司 一种数据处理方法、装置、计算机设备及存储介质
CN116450591B (zh) * 2023-06-15 2023-09-12 北京数巅科技有限公司 一种数据处理方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
EP2735978B1 (en) Storage system and management method used for metadata of cluster file system
CN104246764B (zh) 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置
Li et al. Tree indexing on solid state drives
Zhong et al. {REMIX}: Efficient Range Query for {LSM-trees}
CN114416646A (zh) 一种层级存储系统的数据处理方法及装置
Mei et al. SifrDB: A unified solution for write-optimized key-value stores in large datacenter
US8065304B2 (en) Using asymmetric memory
CN110188108B (zh) 数据存储方法、装置、系统、计算机设备及存储介质
CN111026329B (zh) 基于主机管理瓦记录磁盘的键值存储系统及数据处理方法
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
CN110968269A (zh) 基于scm与ssd的键值存储系统及读写请求处理方法
KR101438667B1 (ko) 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
CN109407985B (zh) 一种数据管理的方法以及相关装置
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
Carniel et al. A generic and efficient framework for flash-aware spatial indexing
US20240220470A1 (en) Data storage device and storage control method based on log-structured merge tree
KR20180135390A (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
CN114077378A (zh) 一种构建索引方法及装置
CN116382588A (zh) 一种基于学习索引的LSM-Tree存储引擎读放大问题优化方法
CN116774937A (zh) 数据存储方法、装置、处理设备、存储介质
Ray et al. FlashKey: A high-performance flash friendly key-value store
KR100982591B1 (ko) 단계적 인덱싱을 위한 파일 시스템, 메인 기억장치 및플래시 기억장치 그리고 상기 단계적 인덱싱을 통한 데이터관리 방법
Ton That et al. PLI^++: efficient clustering of cloud databases
CN118312515B (zh) 应用于WiscKey的协同无效键值对确认方法及垃圾回收方法
CN118277392B (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
CB02 Change of applicant information

Country or region after: China

Address after: 201822 room jt2473, floor 7, building 7, No. 328, Jiayi highway, Jiading District, Shanghai

Applicant after: Shanghai Feiyu Digital Technology Co.,Ltd.

Address before: 201822 room jt2473, floor 7, building 7, No. 328, Jiayi highway, Jiading District, Shanghai

Applicant before: Shanghai Feiyu Network Technology Co.,Ltd.

Country or region before: China

CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: Room 401, Building 6, No. 1328 Yixian Road, Baoshan District, Shanghai, 200439

Applicant after: Shanghai Feiyu Digital Technology Co.,Ltd.

Address before: 201822 room jt2473, floor 7, building 7, No. 328, Jiayi highway, Jiading District, Shanghai

Applicant before: Shanghai Feiyu Digital Technology Co.,Ltd.

Country or region before: China

CB02 Change of applicant information