数据存储方法、装置、处理设备、存储介质

未命名 09-22 阅读:101 评论:0
1.本技术涉及计算机
技术领域
:,特别是涉及一种数据存储方法、装置、处理设备、存储介质。
背景技术
::2.日志化结构合并树(log-structuredmerge-tree,lsm-tree)是一种分层、有序、面向磁盘的数据存储结构。lsm-tree的结构类比于树,lsm-tree为多层结构,当前一层中存储数据量达到一定阈值时,前一层的数据会并入到下一层。所以在lsm-tree中最上层存储的数据是最新写入的数据,下层存储的数据是之前写入的数据。3.lsm-tree的引入,使得数据能够有序的写入到存储器中,提高了数据写入效率。当需要从lsm-tree(以lsm-tree存储数据的存储器)中读取数据时,需要按照lsm-tree中各层的先后顺序,依次从对每层进行查询,直至查询到需要读取的数据,这种数据读取方式导致数据读取效率变差。4.因此相关技术中亟需一种读取效率较高的数据存储方法。技术实现要素:5.基于此,有必要针对上述技术问题,提供一种能够提高数据读取效率的数据存储方法、装置、处理设备、存储介质。6.第一方面,本技术实施例提供了一种数据存储方法,所述方法应用于日志结构合并树存储系统中,所述系统包括多层存储区域,每个所述存储区域包括至少一个数据文件,所述方法包括:7.根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域;8.将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。9.本技术实施例提供的数据压缩方法,可以在进行上下层级的数据文件压缩合并时,增加对数据文件的访问情况的考量,以使得待压缩的数据文件所对应的访问需求最低,即该数据文件中所存储的数据的热度较低,不会被反复访问。这样可以将待压缩的数据文件下放,保证热度较高的数据所在的存储区域处于低层,避免无意义的空读,从而提高了数据读取效率,降低处理器的负担。10.可选的,在本技术的一个实施例中,所述根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域,包括:11.根据各个所述数据文件的访问命中次数,确定多个候选待压缩数据文件;12.分别确定多个候选待压缩文件所在的候选层存储区域;13.根据各个所述候选层存储区域所包含的数据文件的数量,确定目标层存储区域以及对应的待压缩数据文件。14.可选的,在本技术的一个实施例中,所述根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域,包括:15.根据各个所述存储区域所包含的数据文件的大小以及所包含的各个所述数据文件的访问命中次数,确定目标层存储区域;16.根据所述各个所述数据文件的访问命中次数,确定对应的访问命中次数平均值;17.确定访问命中次数小于所述访问命中次数平均值的待压缩数据文件。18.可选的,在本技术的一个实施例中,所述将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并,包括:19.确定所述下一层存储区域中待合并数据文件;所述待合并数据文件的内部标识信息的范围与所述待压缩数据文件内部标识信息的范围有重叠;20.基于所述待合并数据文件以及所述待压缩数据文件,生成数据文件集合;21.将所述数据文件集合按序存储至新的数据文件中,所述新的数据文件位于所述下一层存储区域中。22.可选的,在本技术的一个实施例中,所述方法还包括:获取所述目标层存储区域中所包含的数据文件的排列顺序;对应的,所述确定所述下一层存储区域中待合并数据文件,包括:23.基于所述排列顺序,确定所述待压缩数据文件内部标识信息的目标排列顺序;24.根据所述目标排列顺序,对所述下一层存储区域的数据文件进行扫描,确定与所述待压缩数据文件的内部标识信息的范围有重叠的待合并数据文件。25.可选的,在本技术的一个实施例中,所述排列顺序按照下述方式构建生成:26.根据所述下一层存储区域中所包含的初始数据文件的内部标识信息,确定初始排列顺序;27.在所述存储区域新增数据文件的情况下,根据新增的数据文件的内部标识信息,将所述新增的数据文件插入至初始数据文件序列中;28.根据插入后形成的数据文件序列,确定所述排列顺序。29.可选的,在本技术的一个实施例中,所述将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并,包括:30.获取所述待压缩数据文件与所述下一层存储区域中的数据文件中各个键值对的用户标识信息;31.在不同键值对的用户标识信息相同的情况下,获取不同键值对的版本标识信息;32.在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中,所述缓存区域位于内存内。33.可选的,在本技术的一个实施例中,所述在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中之后,所述方法还包括:34.确定所述缓存区域中存储的键值对的数据大小;35.在所述数据大小大于预设数据大小阈值的情况下,将所述缓存区域的内容存储至所述目标层存储区域。36.可选的,在本技术的一个实施例中,所述方法还包括:37.确定层数大于预设层数阈值的参考存储区域中的第一数据文件;所述第一数据文件对应的访问命中次数大于预设阈值;38.根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域;所述参考存储区域的层数大于所述待迁移存储区域的层数;39.将所述第一数据文件与所述待迁移存储区域所包含的第二数据文件进行合并,并存储至所述待迁移存储区域。40.可选的,在本技术的一个实施例中,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:41.遍历所述多层存储区域的数据文件,确定与所述第一数据文件的内部标识信息范围有重叠的第二数据文件并确定所述第二数据文件所在的待迁移存储区域。42.可选的,在本技术的一个实施例中,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:43.获取各层存储区域所包含的数据文件的数量;44.在所述数量大于预设数量阈值的情况下,确定待迁移存储区域。45.第二方面,本技术实施例提供了一种数据存储装置,所述装置应用于日志结构合并树存储系统中,所述系统包括多层存储区域,每个所述存储区域包括至少一个数据文件,所述装置包括:46.确定模块,用于根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域;47.压缩合并模块,用于将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。48.第三方面,本技术实施例提供了一种处理设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述各个实施例所述的方法的步骤。49.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述各个实施例所述方法的步骤。50.第五方面,本技术实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各个实施例所述的方法的步骤。附图说明51.图1为本技术一个实施例提供的应用环境图;52.图2为本技术一个实施例提供的数据存储方法的流程示意图;53.图3为本技术一个实施例提供的数据压缩合并的示意图;54.图4为本技术一个实施例提供的数据存储装置的模块结构示意图;55.图5是本技术实施例提供的处理设备的模块结构示意图;56.图6是本技术实施例提供的计算机程序产品的概念性局部视图。具体实施方式57.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。58.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。59.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属
技术领域
:内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。60.为了方便本领域技术人员理解本技术实施例提供的技术方案,下面先对技术方案实现的技术环境进行说明。61.如图1所示,日志结构合并树(log-structuredmerge-tree,lsm-tree)如leveldb可以包括内存以及存储设备,所述存储设备可以包括磁盘、硬盘等。所述内存中可以包括内存表(memtable)。所述内存表内部维护一个高效读写的有序的数据结构,例如可以是红黑树、avl树或者跳表等结构。所述存储设备还可以包括日志文件(log)以及不同层级的存储区域如level0、level1、level2、...、levelm等。每层存储区域中可以包含多个数据文件,数据文件为有序字符串表(sortedstringtable,sstable)。可以理解的是,层级越往下,该层的存储容量越大。除第一层level0外,其他层的数据都是有序存储的,为了缩小相邻层级数据存储空间大小的差异,可以提高数据合并时的数据读取量。当某一层的数据容量达到限定值后,再选择下一层的数据文件和当前层级数据文件进行合并(compation),重新生成一个更大的存储文件存储到下一层中。随着数据量的不断写入,数据被逐层下沉到更低的层级,直到最后一级。因此,日志结构合并树读的数据在不同层级之间的分布是由数据写入时决定的。也就是说,level0层级最低,level1是磁盘中最低的数据层,levelm层级最高,levelm》level0。62.在存储数据时,可以将待存储数据如(k,v)数据先写到内存表中,同时为了保证数据可靠性,还可以将所有的写操作写到存储设备中的日志文件(log)中。在所述内存表中存储的数据达到一定数量后,可以将其拷贝一份出来成为immutablememtable(不可变的内存表),所述immutablememtable中的数据只可以读取不能进行修改。在这之后新增的数据都写入新的内存表中,这样可以使得写操作不用暂停,也可以为后续的数据处理工作提供备份。之后,可以将所述immutablememtable存储至level0层的数据文件中。63.由于日志结构合并树的查询操作会按顺序查找level0、level1、level2、...、levelm中的各个数据文件,一旦匹配便返回目标数据,不再继续查询,这样的查询策略虽然保证了查到的一定是目标键值key最新版本的数据value。但是,由于在进行数据存储以及数据压缩合并的过程中,并不会考虑到不同数据的访问需求,这样会导致不同层级的数据文件中所存储的数据的访问需求不同,例如较高层级的数据文件中所存储的数据经常被访问。在该应该场景下,在查询目标数据时需要涉及查询多层存储区域的数据文件,日志结构合并树的读性能较差,会引发大量的读取的i/o请求,增加处理器负担。64.基于上述技术需求,本技术实施例中提供了一种数据存储方法,可以在进行上下层级的数据文件压缩合并时,增加对数据文件的访问情况的考量,以使得待压缩的数据文件所对应的访问需求最低,即该数据文件中所存储的数据的热度较低,不会被反复访问。这样可以将待压缩的数据文件下放,保证热度较高的数据所在的存储区域处于低层,从而提高了数据读取效率,降低处理器的负担。65.下面结合附图对本技术所述的数据存储方法进行详细的说明。虽然本技术提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本技术实施例提供的执行顺序。所述方法在实际中的数据存储过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。66.具体的,本技术提供的数据存储方法应用于日志结构合并树存储系统中,所述系统包括多层存储区域(level0-levelm),每个所述存储区域包括至少一个数据文件(sstable),如图2所示,所述方法可以包括:67.s201:根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域。68.本技术实施例中,可以获取各个所述数据文件的访问情况,其中所述数据文件可以位于不同层级中,也可以位于同一层级中的不同存储位置处。具体来说,所述访问情况可以包括访问次数、访问命中次数、最近访问时刻等等。其中,所述访问命中次数可以是根据查询请求在数据文件中读到了所要查询的用户标识信息对应的最新的数据。也就是说,空读行为不会增加数据文件的访问命中次数。可以理解的是,所述数据文件的访问次数可以是所述数据文件中存储的各个键值对数据的访问次数的统计值。当然,所述数据文件的最近访问时刻可以是所述数据文件中最新被访问的键值对数据的访问时刻。在本技术的一个实施例中,可以通过计数器记录各个数据文件中所存储的键值对key-value的访问次数以及访问时刻。另外,还可以根据访问结果确定对应的访问命中次数。所述计数器可以包括基于count-minsketch的计数器,count-minsketch是一个概率数据结构,它使用散列函数将键值访问映射到频率,能够表示不同键值的访问计数。在本技术的一个实施例中,为了保证向下一层存储区域压缩的数据文件的热度最低即访问需求最低,可以根据各个数据文件的访问情况确定待压缩数据文件。具体的,在本技术的一个实施例中,可以直接选取访问命中次数最少的数据文件作为所述待压缩数据文件。在本技术的另一个实施例中,也可以结合不同层级的数据文件的数量,确定待压缩数据文件。例如,可以选取数据文件数量最大的存储区域中的访问次数最少的数据文件作为所述待压缩数据文件。当然,在其他实施例中,也可以根据各个数据文件的最近访问时刻确定待压缩数据文件,本技术对此不做限制。69.在实际的应用中,可能会出现多个数据文件的访问情况相似,例如访问命中次数相差较小,或者存在访问命中次数较大但最近访问时刻较早以及访问命中次数较小但最近访问时刻较晚的不同数据文件,为了更加准确地确定待压缩数据文件,在本技术的一个实施例中,所述根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域,可以包括:70.s301:根据各个所述数据文件的访问命中次数,确定多个候选待压缩数据文件;71.s303:分别确定多个候选待压缩文件所在的候选层存储区域;72.s305:根据各个所述候选层存储区域所包含的数据文件的数量,确定目标层存储区域以及对应的待压缩数据文件。73.本技术实施例中,可以从多个所述数据文件中选取访问命中次数较小的几个数据文件作为候选待压缩数据文件。之后,可以根据候选待压缩数据文件所在的存储区域所包含的数据文件的数量或者根据候选待压缩数据文件的最近访问时刻,确定最终用于压缩的待压缩数据文件。具体来说,可以首先分别确定多个候选待压缩数据文件所在的候选层存储区域,例如可以确定候选待压缩数据文件a所在的存储区域为levela层、候选待压缩数据文件b所在的存储区域为levelb层、候选待压缩数据文件c所在的存储区域为levelc层。然后,可以确定各层存储区域中所包含的数据文件的数量,并选取包含的数据文件最多的存储区域作为目标层存储区域。例如,在levela层包含3个数据文件、levelb层包含6个数据文件、levelc层包含5个数据文件的情况下,可以确定目标层存储区域为levelb层以及对应的待压缩数据文件为候选待压缩数据文件b。在本技术的另一个实施例中,也可以从多个候选待压缩数据文件中选取最近访问时刻最早的数据文件作为待压缩数据文件。可以理解的是,上述两种从候选待压缩数据文件选取待压缩数据文件的方法可以结合,以保证能够选取更加准确的待压缩数据文件。74.在本技术的另一个实施例中,也可以与lsm-tree中确定待压缩数据文件的方式结合,以便直接且准确地确定待压缩数据文件。具体来说,所述根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域,包括:75.s401:根据各个所述存储区域所包含的数据文件的大小以及所包含的各个所述数据文件的访问命中次数,确定目标层存储区域;76.s403:根据所述各个所述数据文件的访问命中次数,确定对应的访问命中次数平均值;77.s405:确定访问命中次数小于所述访问命中次数平均值的待压缩数据文件。78.本技术实施例中,可以根据每层存储区域中所包含的数据文件的大小以及数据文件对应的访问命中次数,确定目标层存储区域。具体来说,可以选取所述存储区域所包含的数据文件最大、访问命中次数最少的存储区域作为目标层存储区域。即数据压缩合并的操作产生在目标层以及目标层下一层之间。所述存储区域所包含的数据文件的大小可以根据所述存储区域中包含的每个数据文件的大小的和值确定。具体来说,在本技术的一个实施例中,可以根据各个所述存储区域所包含的数据文件的大小以及所包含的各个所述数据文件的访问命中次数,确定各层存储区域的压缩分数,所述压缩分数用于表征各层存储区域可用于压缩的概率,之后可以选择压缩分数最大的存储区域作为目标层存储区域。例如,可以利用下式确定各层存储区域的压缩分数:[0079][0080]其中,所述sst为li层内的数据文件,所述sstx.size可以是数据文件x的文件大小。所述li.sizethreshold可以为预设文件大小阈值,所述li.hitthreshold可以为预设访问命中次数阈值。所述预设文件大小阈值以及所述预设访问命中次数阈值均可以由用户根据实际的应用情况设定。在本技术的一个实施例中,在确定各层的压缩分数后,可以选取压缩分数最大的层作为目标层存储区域。可以理解的是,为了更加满足实际的压缩合并需求,可以为数据文件大小以及访问命中次数这两个因素分配不同的权重值α、β,以确定对应的权重和值作为压缩分数。例如,所述压缩分数的确定方式可以为:[0081][0082]本技术实施例中,在确定所述目标层存储区域后,可以根据各个数据文件的访问命中次数确定最终用于压缩合并的待压缩数据文件。具体的,可以选择访问命中次数较小的数据文件作为待压缩数据文件,也可以选取访问命中次数小于该层访问命中次数平均值的数据文件作为待压缩数据文件。其中,访问命中次数平均值可以由该目标层存储区域中所包含的每个数据的访问命中次数的平均值确定。可以理解的是,所述待压缩数据文件的数量可以为一个也可以为多个。[0083]在实际的应用中,每个数据文件记录了最大的内部标识信息以及最小的内部标识信息,其中所述内部标识信息为lsm-tree对用户标识信息key拼接版本标识信息得到的标识信息。例如,所述内部标识信息可以是internalkey。但各个数据文件之间的顺序是无序的,为了使得各个数据文件有序,可以按照内部标识信息的大小进行排序。具体的,在本技术的一个实施例中,各层存储区域内所包含的数据文件可以按照各数据文件的内部标识信息进行排序,并确定数据文件列表。在有新的数据文件纳入该层时,层内会基于当前的数据文件列表,将该新增的数据文件以“插入排序”的形式插入到所述数据文件列表中;同理,在删除某一数据文件时,可以通过二分查找定位到该数据文件,并从数据文件列表中删除;在确定所述待压缩数据文件的过程中,可以从上一次压缩合并的数据文件内部标识信息的位置处开始,循环遍历该层的数据文件列表,如果某一数据文件访问命中次数小于该层的访问命中次数,且紧邻的前一个数据文件已被确定为待压缩数据文件,则该数据文件也可以作为待压缩数据文件。在确定待压缩数据文件的数量大于预设阈值或者遍历次数大于预设次数阈值的情况下,可以停止遍历。这样遍历得到的多个数据文件是按照内部标识信息进行排序的,即得到的数据文件是有序的,从而简化了后续压缩合并的步骤。[0084]s203:将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。[0085]本技术实施例中,在确定所述待压缩数据文件后,可以将所述待压缩数据与下一层存储区域中的数据文件进行压缩合并。可以理解的是,在合并压缩的过程中,之前被标记删除的键值对数据可以被删除,不存储至新的数据文件中。这样,可以实现两层之间数据文件的压缩合并,清理掉冗余数据,节省了存储设备的存储空间,扩大了lsm-tree的写吞吐量。在本技术的一个实施例中,在所述待压缩数据文件的数量为多个的情况下,可以在所述下一层存储区域中分别确定要与所述待压缩数据文件进行合并的数据文件,逐一进行压缩。[0086]本技术实施例提供的数据压缩方法,可以在进行上下层级的数据文件压缩合并时,增加对数据文件的访问情况的考量,以使得待压缩的数据文件所对应的访问需求最低,即该数据文件中所存储的数据的热度较低,不会被反复访问。这样可以将待压缩的数据文件下放,保证热度较高的数据所在的存储区域处于低层,避免无意义的空读,从而提高了数据读取效率,降低处理器的负担。[0087]具体的,在本技术的一个实施例中,所述将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并,可以包括:[0088]s501:确定所述下一层存储区域中待合并数据文件;所述待合并数据文件的内部标识信息的范围与所述待压缩数据文件内部标识信息的范围有重叠;[0089]s503:基于所述待合并数据文件以及所述待压缩数据文件,生成数据文件集合;[0090]s505:将所述数据文件集合按序存储至新的数据文件中,所述新的数据文件位于所述下一层存储区域中。[0091]本技术实施例中,在进行压缩合并的过程中,可以根据内部标识信息的范围,确定与待压缩文件进行压缩合并的待合并数据文件。具体的,可以根据下一层存储区域中所包含的数据文件标识信息的范围与待压缩数据文件标识信息的范围是否有重叠,确定待合并数据文件。其中所述标识信息可以为key值。之后,可以将有重叠的数据文件与所述待压缩数据文件进行压缩合并,并将压缩合并后新生成的数据文件存储至下一层存储区域。在本技术的一个实施例中,生成新的数据文件之后,为了保证每个数据文件即sstable文件的大小尽量相似,可以先将所述新的数据文件拆分成多个子数据文件,并存储至所述下一层存储区域中。具体的,可以按照key值的顺序依次将键值对数据写入下一层存储区域中新的数据文件,每次到达数据文件的大小阈值后,就创建一个新的数据文件。例如,在一个示例中,如图3所示,level1层文件中待压缩文件[0-30]的sstable文件可以与level2层的[0-15]以及[16-32]两个sstable文件有重叠的部分进行合并。合并后生成的新的数据文件sstable文件可以存储至level2层。由于合并后生成的新的sstable文件大于了单个sstable文件所规定的最大值,进而拆分成了[0-10]、[11-19]、[20-32]三个sstable文件。[0092]在实际的应用中,由于各层存储区域所包含的数据文件的数量较多,在确定待合并数据文件的过程中,可能需要在下一层存储区域中多次查找,才能确定与所述待压缩数据文件的内部标识信息的范围有重叠的数据文件,从而增加了处理器的处理负担。基于此,在本技术的一个实施例中,可以按照内部标识信息的大小对一层中的数据文件进行排序,按照排序结果直接确定所述待合并数据文件,从而节省了查找步骤,提高了查找效率。具体来说,所述方法还包括:获取所述目标层存储区域中所包含的数据文件的排列顺序;对应的,所述确定所述下一层存储区域中待合并数据文件,可以包括:[0093]s601:基于所述排列顺序,确定所述待压缩数据文件内部标识信息的目标排列顺序;[0094]s603:根据所述目标排列顺序,对所述下一层存储区域的数据文件进行扫描,确定与所述待压缩数据文件的内部标识信息的范围有重叠的待合并数据文件。。[0095]本技术实施例中,可以先获取目标层存储区域中所包含的各个数据文件的排列顺序。这里的排列顺序指的是各个数据文件对应的内部标识信息从小到大的排列顺序。例如,在一个示例中,leveln层所包含的数据文件有数据文件a、数据文件b、数据文件c,数据文件a的internalkey范围为[00-25],数据文件b的internalkey范围为[52-60],数据文件c的internalkey范围为[26,28,…,50],则所述排列顺序为数据文件a、数据文件c、数据文件b。在确定所述排列顺序后,可以确定所述待压缩数据文件的目标排列顺序,即待压缩数据文件所对应的内部标识信息从小到大的排列顺序。基于所述目标排列顺序可以确定所述待压缩数据文件的最大内部标识信息以及最小内部标识信息。之后,可以根据最大内部标识信息以及最小内部标识信息,对所述下一层存储区域中的各个数据文件进行二分查找,以确定待合并数据文件,这样查找效率会更高。当然,在本技术的其他实施例中,也可以获取下一层存储区域中所包含的各个数据文件的排列顺序,之后可以基于所述待压缩数据文件的内部标识信息的范围,遍历所述下一层存储区域中的各个数据文件,确定待合并数据文件。例如,在一个示例中,待压缩数据文件的internalkey的范围[0-13],将[0-13]依次与数据文件a、数据文件c、数据文件b依次进行对比,确定是否有重叠范围。数据文件a的internalkey范围[00-25]与[0-13]有交集,则可以确定数据文件a为待合并数据文件。而数据文件c的internalkey范围[26,28,…,50]与[0-13]无交集,因此遍历到数据文件c即可结束,不用再进行数据文件b的对比工作,从而可以减少遍历次数,提高确定待合并数据文件的效率,且不会有遗漏保证了确定的待合并数据文件的准确性。[0096]进一步地,在本技术的一个实施例中,所述下一层存储区域所包含的数据文件的排列顺序可以按照下述方式构建生成:[0097]s701:根据所述存储区域中所包含的初始数据文件的内部标识信息,确定初始排列顺序;[0098]s703:在所述存储区域新增数据文件的情况下,根据新增的数据文件的内部标识信息,将所述新增的数据文件插入至初始数据文件序列中;[0099]s705:根据插入后形成的数据文件序列,确定所述排列顺序。[0100]本技术实施例中,可以根据所述下一层存储区域所包含的初始数据文件的内部标识信息的大小关系,确定初始排列顺序。之后,在下一层存储区域中有新的数据文件生成时,可以先确定该数据文件的最大内部标识信息、最小内部标识信息,再根据所述最大标识信息和所述最小标识信息将该数据文件插入至合适的位置处。例如,在新增的数据文件d的internalkey范围为[61-85]的情况下,可以将新增的数据文件d插入至数据文件b的后面,形成新的数据文件序列的排列顺序则为数据文件a、数据文件c、数据文件b、数据文件d。可以理解的是,所述系统中各层存储区域的数据文件的排列顺序均可以按照上述方式确定,本技术在此不再赘述。[0101]在实际的应用中,用户可能会对同一key值的数据进行多次修改,由于lsm-tree的写入是append形式的,即不管是修改还是删除,都是添加新的记录。因此,在存储设备多层存储区域中可能会存储多条key相同的数据记录。为了区分相同key值的数据,一般会根据变更记录为存储的键值对数据赋予版本号。即数据文件中可能会存在多个key值相同但版本号不同的键值对。一般,用户会对最新修改的数据较为关注,为了提高查询效率,在对数据文件进行压缩合并的过程中,可以将最新修改的数据放置在缓存区,以便用户读取。基于此,在本技术的一个实施例中,所述将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并,可以包括:[0102]s801:获取所述待压缩数据文件与所述下一层存储区域中的数据文件中各个键值对的用户标识信息;[0103]s803:在不同键值对的用户标识信息相同的情况下,获取不同键值对的版本标识信息;[0104]s805:在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中,所述缓存区域位于内存内。[0105]本技术实施例中,可以遍历所述待压缩数据文件与下一层存储区域中各个数据文件中所存储的键值对数据的key值。当然,为了提高遍历效率,更快地获取到key值相同的数据,可以只遍历待压缩数据文件和待合并数据文件。在确定多个key值相同的键值对数据后,可以获取各个键值对数据的版本标识信息。之后,可以找出多个key值相同的键值对数据中版本标识信息最大的数据,该数据记录了用户对该key值的数据最新的操作记录如删除、更改等。按照上述方式,确定多个版本标识信息最大、key值相同的数据后,可以将其放置于缓存区域。在本技术的一个实施例中,在将版本标识信息最大的键值对存入缓存区域中,可以将该键值对所在的数据文件的存储位置也存入缓存区域中,方便后续的放置处理。需要说明的是,其他key值相同的数据可以按照上述压缩合并的方式进行正常处理即可。另外,在相同key值的多个数据可以删除的情况下,则无需进行上述步骤,直接删除即可。[0106]在本技术实施例中,可以根据缓存区域占用的存储容量的大小,确定其存储的数据的放置位置。在占用的存储容量较多的情况下即缓存区域中存储的数据较大的情况下,可以将这些数据尽量放置在较低层,从而减少空读率,提高数据读取效率。具体来说,在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中之后,所述方法还可以包括:[0107]s901:确定所述缓存区域中存储的键值对的数据大小;[0108]s903:在所述数据大小大于所述预设数据大小阈值的情况下,将所述缓存区域的内容存储至所述目标层存储区域。[0109]本技术实施例中,可以确定暂存区中存储的键值对数据的数据大小。在所述数据大小大于预设数据大小阈值的情况下,可以将存储的键值对数据在目标层存储区域中输出成一个独立的数据文件,即在所述目标层存储区域中新建一个数据文件,用于存储缓存区域中存储的键值对数据。其中,所述预设数据大小阈值可以由用户根据实际的应用需求设定,例如可以设为系统数据大小的1/2。而在所述数据大小小于所述预设数据大小阈值的情况下,则存储的键值对数据应该插入其原本的存储位置,即按照上述压缩合并的方式,存储至下一层存储区域中新的数据文件内。例如,在一个示例中,可以根据键值对数据所在的数据文件的存储位置,确定对应的数据文件。之后,根据数据文件的索引表,确定该键值对数据应插入的位置,将键值对数据插入正确的位置后,可以更新该数据文件的索引表。[0110]通过上述实施例,可以根据缓存区域存储的键值对数据的数据大小,决定存储的键值对数据的放置位置,实现了存储场景的多样化,满足了不同用户的需求。[0111]在系统实际运行的过程中,前一段时间内被划定为“冷数据”的数据文件即访问命中次数较低的数据文件,很可能在后续的一段时间内,重新变为“热数据”。在此基础上,如果该数据文件还处于原来较高层的存储区域,若按照从内存-底层-高层的数据读取方式,会导致读取效率较低,增加空读率。基于此,在本技术的一个实施例中,可以将较高层中属于“热数据”的数据文件调回较低层,以满足读取要求。具体来说,在本技术的一个实施例中,所述方法还可以包括:[0112]s1001:确定层数大于预设层数阈值的参考存储区域中的第一数据文件;所述第一数据文件对应的访问命中次数大于预设阈值;[0113]s1003:根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域;所述参考存储区域的层数大于所述待迁移存储区域的层数;[0114]s1005:将所述第一数据文件与所述待迁移存储区域所包含的第二数据文件进行合并,并存储至所述待迁移存储区域。[0115]本技术实施例中,底层存储区域的数据的读取顺序较高不需要进行数据回迁,因此可以在较高层存储区域进行“回温”数据是否回迁的判断。在本技术的一个实施例中,是否属于底层或高层可以通过存储区域的层数是否大于预设层数阈值进行判断。其中,所述预设层数阈值可以根据实际的访问需求以及系统的存储情况设定,例如,在所述系统有m层存储区域的情况下,所述预设层数阈值可以设定为(m-3)。即所述参考存储区域可以为levelm、levelm-1、levelm-2、levelm-3。在确定所述参考存储区域后,可以获取各个参考存储区域中所包含的数据文件的访问命中次数,在所述访问命中次数大于预设阈值的情况下,确定该数据文件为第一数据文件。即第一数据文件可以是“回温”数据文件。其中,为了保证数据的回迁不影响正常的系统存储,可以设置所述预设阈值大于所述预设访问命中次数阈值。在本技术的一个实施例中,为了保证数据的读取效率,数据的回迁还需要满足高于所述参考存储区域层数的存储区域中所包含的数据文件的内部标识信息的范围与所述参考存储区域所包含的数据文件的内部标识信息范围没有重叠部分。[0116]本技术实施例中,在确定所述第一数据文件后,还需要确定将第一数据文件回迁至哪一层存储区域。具体来说,可以从层数小于参考存储区域层数的存储区域中选取待迁移存储区域。例如,在本技术一个实施例中,根据各层存储区域的存储状态选择待迁移存储区域,例如可以选择存储容量较小的存储区域作为待迁移存储区域。当然,在其他实施例中,也可以选取与所述第一数据文件的内部标识信息范围有重叠的数据文件所在的存储区域作为待迁移区域。在本技术的一个实施例中,可以按照上述各个实施例所述的压缩合并的方法将所述第一数据文件与所述待迁移存储区域所包含的第二数据文件进行合并,并存储至所述待迁移存储区域,从而可以将“回温”数据存储至较低层,以提高数据读取效率。[0117]通过上述实施例,可以在数据存储的过程中,加入判断数据文件是否“回温”以及将“回温”数据文件存储至较低层存储区域的步骤,可以进一步提高数据读取的效率,还可以避免在阶段性特征场景下,冷热数据判别失效的情况。[0118]具体的,在本技术的一个实施例中,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:[0119]s1101:遍历所述多层存储区域的数据文件,确定与所述第一数据文件的内部标识信息范围有重叠的第二数据文件并确定所述第二数据文件所在的待迁移存储区域。[0120]本技术实施例中,可以从所述第一数据文件所在层即参考存储区域所在层开始,向上遍历直至第0层即level0。针对遍历过程中的任一层存储区域,在确定某一层存储区域中存在数据文件的internalkey范围与所述第一数据文件的internalkey范围有交集的情况下,可以确定该层存储区域即为待迁移存储区域。在确定所述待迁移存储区域后,即可停止遍历。[0121]进一步地,在本技术的另一个实施例中,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:[0122]s1201:获取各层存储区域所包含的数据文件的数量;[0123]s1203:在所述数量大于预设数量阈值的情况下,确定待迁移存储区域。[0124]本技术实施例中,可以获取各层存储区域所包含的数据文件的数量,并从中选取数量最大或者数量大于预设数量阈值的存储区域作为待迁移存储区域。其中,所述预设数量阈值可以由用户根据实际的应用需求设定,例如可以设定为5、6、8等等。通过上述实施例,可以避免出现“回温”行为向更低层存储区域堆积数据文件从而触发频繁的数据合并压缩的现象。[0125]需要说明的是,将所述第一数据文件与所述待迁移存储区域所包含的第二数据文件进行合并的前提条件为上述压缩合并所产生的新的数据文件的数据大小小于设定值,这样可以保证“回温”数据的回迁不会产生较大的i/o压力。另外,s1101和s1301-s1303可以结合进行,例如在遍历过程中未发现internalkey范围重叠即未确定待迁移存储区域的情况下,可以利用s1301-s1303确定待迁移存储区域。[0126]可以理解的是,由于level0层所存储的数据为无序的,因此所述待迁移存储区域不可以为level0层,即在确定满足要求的存储区域所在的层数为level0层的情况下,则将待迁移存储区域所在的层数设定为level1层。[0127]本技术另一方面还提供一种数据存储装置,如图4所示,所述数据存储装置400应用于日志结构合并树存储系统中,所述系统包括多层存储区域,每个所述存储区域包括至少一个数据文件,所述装置包括:[0128]确定模块401,用于根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域;[0129]压缩合并模块403,用于将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。[0130]可选的,在本技术的一个实施例中,所述确定模块401具体用于:[0131]根据各个所述数据文件的访问命中次数,确定多个候选待压缩数据文件;[0132]分别确定多个候选待压缩文件所在的候选层存储区域;[0133]根据各个所述候选层存储区域所包含的数据文件的数量,确定目标层存储区域以及对应的待压缩数据文件。[0134]可选的,在本技术的一个实施例中,所述确定模块401具体用于:[0135]根据各个所述存储区域所包含的数据文件的大小以及所包含的各个所述数据文件的访问命中次数,确定目标层存储区域;[0136]根据所述各个所述数据文件的访问命中次数,确定对应的访问命中次数平均值;[0137]确定访问命中次数小于所述访问命中次数平均值的待压缩数据文件。[0138]可选的,在本技术的一个实施例中,所述压缩合并模块403具体用于:[0139]确定所述下一层存储区域中待合并数据文件;所述待合并数据文件的内部标识信息的范围与所述待压缩数据文件内部标识信息的范围有重叠;[0140]基于所述待合并数据文件以及所述待压缩数据文件,生成数据文件集合;[0141]将所述数据文件集合按序存储至新的数据文件中,所述新的数据文件位于所述下一层存储区域中。[0142]可选的,在本技术的一个实施例中,所述装置还用于:获取所述目标层存储区域中所包含的数据文件的排列顺序;对应的,所述确定所述下一层存储区域中待合并数据文件,包括:[0143]基于所述排列顺序,确定所述待压缩数据文件内部标识信息的目标排列顺序;[0144]根据所述目标排列顺序,对所述下一层存储区域的数据文件进行扫描,确定与所述待压缩数据文件的内部标识信息的范围有重叠的待合并数据文件。[0145]可选的,在本技术的一个实施例中,所述排列顺序按照下述方式构建生成:[0146]根据所述下一层存储区域中所包含的初始数据文件的内部标识信息,确定初始排列顺序;[0147]在所述存储区域新增数据文件的情况下,根据新增的数据文件的内部标识信息,将所述新增的数据文件插入至初始数据文件序列中;[0148]根据插入后形成的数据文件序列,确定所述排列顺序。[0149]可选的,在本技术的一个实施例中,所述压缩合并模块403具体用于:[0150]获取所述待压缩数据文件与所述下一层存储区域中的数据文件中各个键值对的用户标识信息;[0151]在不同键值对的用户标识信息相同的情况下,获取不同键值对的版本标识信息;[0152]在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中,所述缓存区域位于内存内。[0153]可选的,在本技术的一个实施例中,所述在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中之后,所述装置还包括:[0154]确定所述缓存区域中存储的键值对的数据大小;[0155]在所述数据大小大于预设数据大小阈值的情况下,将所述缓存区域的内容存储至所述目标层存储区域。[0156]可选的,在本技术的一个实施例中,所述装置迁移模块,所述迁移模块具体用于:[0157]确定层数大于预设层数阈值的参考存储区域中的第一数据文件;所述第一数据文件对应的访问命中次数大于预设阈值;[0158]根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域;所述参考存储区域的层数大于所述待迁移存储区域的层数;[0159]将所述第一数据文件与所述待迁移存储区域所包含的第二数据文件进行合并,并存储至所述待迁移存储区域。[0160]可选的,在本技术的一个实施例中,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:[0161]遍历所述多层存储区域的数据文件,确定与所述第一数据文件的内部标识信息范围有重叠的第二数据文件并确定所述第二数据文件所在的待迁移存储区域。[0162]可选的,在本技术的一个实施例中,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:[0163]获取各层存储区域所包含的数据文件的数量;[0164]在所述数量大于预设数量阈值的情况下,确定待迁移存储区域。[0165]本技术的实施例还提供了一种处理设备500,处理设备500可以是物理设备或物理设备集群,也可以是虚拟化的云设备,如云计算集群中的至少一个云计算设备。为了便于理解,本技术以处理设备500为独立的物理设备对该处理设备500的结构进行示例说明。[0166]如图5所示,处理设备500包括:处理器以及用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现上述装置。处理设备500包括存储器501、处理器503、总线505和通信接口507。存储器501、处理器503和通信接口507之间通过总线505通信。总线505可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口507用于与外部通信。[0167]其中,处理器503可以为中央处理器(centralprocessingunit,cpu)。存储器501可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram)。存储器501还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom),快闪存储器,hdd或ssd。[0168]存储器501中存储有可执行代码,处理器503执行该可执行代码以执行前述测试场景构建方法。[0169]本技术的实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。[0170]本技术的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。[0171]在一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图6示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品600是使用信号承载介质601来提供的。所述信号承载介质601可以包括一个或多个程序指令602,其当被一个或多个处理器运行时可以提供以上针对图1描述的功能或者部分功能。此外,图6中的程序指令602也描述示例指令。[0172]在一些示例中,信号承载介质601可以包含计算机可读介质603,诸如但不限于,硬盘驱动器、紧密盘(cd)、数字视频光盘(dvd)、数字磁带、存储器、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等等。在一些实施方式中,信号承载介质601可以包含计算机可记录介质604,诸如但不限于,存储器、读/写(r/w)cd、r/wdvd、等等。在一些实施方式中,信号承载介质601可以包含通信介质605,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质601可以由无线形式的通信介质605(例如,遵守ieee802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令602可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,诸如针对图2描述的计算设备的计算设备可以被配置为,响应于通过计算机可读介质603、计算机可记录介质604、和/或通信介质605中的一个或多个传达到计算设备的程序指令602,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。[0173]附图中的流程图和框图显示了根据本技术的多个实施例的装置、系统和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。[0174]也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或asic(applicationspecificintegratedcircuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。[0175]以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0176]以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。当前第1页12当前第1页12
技术特征:
1.一种数据存储方法,其特征在于,所述方法应用于日志结构合并树存储系统中,所述系统包括多层存储区域,每个所述存储区域包括至少一个数据文件,所述方法包括:根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域;将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。2.根据权利要求1所述的方法,其特征在于,所述根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域,包括:根据各个所述数据文件的访问命中次数,确定多个候选待压缩数据文件;分别确定多个候选待压缩文件所在的候选层存储区域;根据各个所述候选层存储区域所包含的数据文件的数量,确定目标层存储区域以及对应的待压缩数据文件。3.根据权利要求1所述的方法,其特征在于,所述根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域,包括:根据各个所述存储区域所包含的数据文件的大小以及所包含的各个所述数据文件的访问命中次数,确定目标层存储区域;根据所述各个所述数据文件的访问命中次数,确定对应的访问命中次数平均值;确定访问命中次数小于所述访问命中次数平均值的待压缩数据文件。4.根据权利要求1所述的方法,其特征在于,所述将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并,包括:确定所述下一层存储区域中待合并数据文件;所述待合并数据文件的内部标识信息的范围与所述待压缩数据文件内部标识信息的范围有重叠;基于所述待合并数据文件以及所述待压缩数据文件,生成数据文件集合;将所述数据文件集合按序存储至新的数据文件中,所述新的数据文件位于所述下一层存储区域中。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:获取所述目标层存储区域中所包含的数据文件的排列顺序;对应的,所述确定所述下一层存储区域中待合并数据文件,包括:基于所述排列顺序,确定所述待压缩数据文件内部标识信息的目标排列顺序;根据所述目标排列顺序,对所述下一层存储区域的数据文件进行扫描,确定与所述待压缩数据文件的内部标识信息的范围有重叠的待合并数据文件。6.根据权利要求5所述的方法,所述排列顺序按照下述方式构建生成:根据所述目标层存储区域中所包含的初始数据文件的内部标识信息,确定初始排列顺序;在所述存储区域新增数据文件的情况下,根据新增的数据文件的内部标识信息,将所述新增的数据文件插入至初始数据文件序列中;根据插入后形成的数据文件序列,确定所述排列顺序。7.根据权利要求1所述的方法,其特征在于,所述将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并,包括:
获取所述待压缩数据文件与所述下一层存储区域中的数据文件中各个键值对的用户标识信息;在不同键值对的用户标识信息相同的情况下,获取不同键值对的版本标识信息;在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中,所述缓存区域位于内存内。8.根据权利要求7所述的方法,其特征在于,所述在所述版本标识信息不同的情况下,将版本标识信息最大的键值对存入缓存区域中之后,所述方法还包括:确定所述缓存区域中存储的键值对的数据大小;在所述数据大小大于预设数据大小阈值的情况下,将所述缓存区域的内容存储至所述目标层存储区域。9.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定层数大于预设层数阈值的参考存储区域中的第一数据文件;所述第一数据文件对应的访问命中次数大于预设阈值;根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域;所述参考存储区域的层数大于所述待迁移存储区域的层数;将所述第一数据文件与所述待迁移存储区域所包含的第二数据文件进行合并,并存储至所述待迁移存储区域。10.根据权利要求9所述的方法,其特征在于,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:遍历所述多层存储区域的数据文件,确定与所述第一数据文件的内部标识信息范围有重叠的第二数据文件并确定所述第二数据文件所在的待迁移存储区域。11.根据权利要求9所述的方法,其特征在于,所述根据各层存储区域中数据文件的内部标识信息范围或各层存储区域的存储状态,确定待迁移存储区域,包括:获取各层存储区域所包含的数据文件的数量;在所述数量大于预设数量阈值的情况下,确定待迁移存储区域。12.一种数据存储装置,其特征在于,所述装置应用于日志结构合并树存储系统中,所述系统包括多层存储区域,每个所述存储区域包括至少一个数据文件,所述装置包括:确定模块,用于根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域;压缩合并模块,用于将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。13.一种处理设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。

技术总结
本申请涉及一种数据存储方法、装置、处理设备、存储介质。所述方法包括:所述方法应用于日志结构合并树存储系统中,所述系统包括多层存储区域,每个所述存储区域包括至少一个数据文件,所述方法包括:根据各个所述数据文件的访问情况,确定待压缩数据文件以及所述待压缩数据文件所在的目标层存储区域;将所述待压缩数据文件与所述目标层存储区域下一层存储区域的数据文件进行压缩合并。利用本申请实施例提供的数据存储方法可以提高数据读取效率,降低数据空读次数。低数据空读次数。低数据空读次数。


技术研发人员:方辛未 林辉 隋伟静 尹向华 吴俊
受保护的技术使用者:浙江大学医学院附属邵逸夫医院
技术研发日:2023.06.28
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐