一种数据落盘方法、系统、设备及计算机可读存储介质与流程

未命名 07-19 阅读:127 评论:0


1.本发明涉及数据存储技术领域,更具体地说,涉及一种数据落盘方法、系统、设备及计算机可读存储介质。


背景技术:

2.在存储系统中,磁盘的读写速度相对于内存等其他存储介质较慢,因此,数据会先缓存在内存中,再在需要时由内存写入到磁盘中进行持久化存储,也即进行落盘。然而,数据由内存写入到磁盘中的速率较慢,导致整个存储系统的性能瓶颈出现在磁盘上,从而降低整个存储系统的运行效率。
3.综上所述,如何提高数据的落盘效率是目前本领域技术人员亟待解决的问题。


技术实现要素:

4.本发明的目的是提供一种数据落盘方法,其能在一定程度上解决如何提高数据的落盘效率的技术问题。本发明还提供了一种数据落盘系统、设备及计算机可读存储介质。
5.根据本发明实施例的第一方面,提供一种数据落盘方法,包括:响应于数据落盘指令,获取存储的第一红黑树;遍历所述第一红黑树,对于遍历到的红黑树节点,读取所述红黑树节点记录的第一地址链表;确定所述第一地址链表在内存中对应的第一缓存数据;按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中。
6.在一示例性实施例中,所述响应于数据落盘指令,获取存储的第一红黑树之前,还包括:获取第一待缓存数据;判断所述内存中是否有所述第一待缓存数据对应的旧版数据;若所述内存中未有所述第一待缓存数据对应的旧版数据,则将所述第一待缓存数据存入所述内存中;确定所述第一待缓存数据在所述目标磁盘中的第一存储地址;在所述第一红黑树记录的所述第一地址链表中,将记录有所述第一存储地址的相邻存储地址的所述第一地址链表,作为待插入地址链表;将所述第一存储地址按序添加至所述待插入地址链表中。
7.在一示例性实施例中,所述将记录有所述第一存储地址的相邻存储地址的所述第一地址链表,作为待插入地址链表,包括:将记录有所述第一存储地址的前序存储地址的所述第一地址链表,作为所述待插入地址链表。
8.在一示例性实施例中,所述将记录有所述第一存储地址的相邻存储地址的所述第
一地址链表,作为待插入地址链表,包括:将记录有所述第一存储地址的后序存储地址的所述第一地址链表,作为所述待插入地址链表。
9.在一示例性实施例中,所述判断所述内存中是否有所述第一待缓存数据对应的旧版数据之后,还包括:若所述内存中有所述第一待缓存数据对应的旧版数据,则基于所述第一待缓存数据更新所述旧版数据,并保持所述第一红黑树不变。
10.在一示例性实施例中,所述确定所述第一待缓存数据在目标磁盘中的第一存储地址,包括:确定所述第一待缓存数据在所述目标磁盘中的目标逻辑区块地址。
11.在一示例性实施例中,所述目标磁盘包括机械磁盘。
12.在一示例性实施例中,所述判断所述内存中是否有所述第一待缓存数据对应的旧版数据,包括:计算所述第一待缓存数据的目标哈希值;判断所述内存对应的哈希表中是否存在所述目标哈希值;若所述哈希表中存在所述目标哈希值,则判定所述内存中有所述第一待缓存数据对应的所述旧版数据;若所述哈希表中不存在所述目标哈希值,则判定所述内存中未有所述第一待缓存数据对应的所述旧版数据;其中,所述哈希表用于记录所述内存中缓存的数据的哈希值。
13.在一示例性实施例中,所述响应于数据落盘指令,获取存储的第一红黑树之后,还包括:获取第二待缓存数据;确定所述第二待缓存数据在所述目标磁盘中的第二存储地址;将所述第二存储地址按序添加至第二地址链表中;将所述第二地址链表添加至第二红黑树中。
14.在一示例性实施例中,所述将所述第二地址链表添加至第二红黑树中之后,还包括:按照所述第二地址链表中存储地址的先后顺序,对所述内存中的缓存数据进行排序。
15.在一示例性实施例中,所述按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中的过程中,还包括:判断所述第一缓存数据的标记是否为热度数据标记;若所述第一缓存数据的标记为所述热度数据标记,则保留所述第一缓存数据在所述内存中,并将所述第一缓存数据的存储地址按序添加至所述第二红黑树的所述第二地址链表中。
16.在一示例性实施例中,所述响应于数据落盘指令,获取存储的第一红黑树之后,还包括:对所述第一红黑树进行加锁,以禁止更改所述第一红黑树。
17.在一示例性实施例中,所述将所述第一缓存数据顺序写入目标磁盘中之后,还包括:待遍历完所述第一红黑树之后,删除所述第一红黑树。
18.在一示例性实施例中,所述按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中之后,还包括:判断是否中断数据落盘过程;若中断数据落盘过程,则记录所述第一红黑树中未被遍历的红黑树节点作为待插入红黑树节点;获取第三待缓存数据;确定所述第三待缓存数据在所述目标磁盘中的第三存储地址;将所述第三存储地址按序添加至所述待插入红黑树节点的所述第一地址链表中,得到第三红黑树。
19.在一示例性实施例中,所述将所述第三存储地址按序添加至所述待插入红黑树节点的所述第一地址链表中之后,还包括:判断是否继续数据落盘过程;若继续数据落盘过程,则遍历所述第三红黑树中的所述待插入红黑树节点,读取所述待插入红黑树节点记录的第三地址链表;确定所述第三地址链表在内存中对应的第二缓存数据;按照所述第三地址链表记录的所述第二缓存数据的顺序存储地址,将所述第二缓存数据顺序写入所述目标磁盘中。
20.在一示例性实施例中,所述响应于数据落盘指令,获取存储的第一红黑树,包括:响应于所述数据落盘指令,解析与所述数据落盘指令对应的目标业务场景;在存储的至少一个红黑树中,获取所述目标业务场景对应的所述第一红黑树。
21.在一示例性实施例中,所述遍历所述第一红黑树,包括:中序遍历所述第一红黑树。
22.根据本发明实施例的第二方面,提供一种数据落盘系统,包括:第一红黑树获取模块,用于响应于数据落盘指令,获取存储的第一红黑树;遍历模块,用于遍历所述第一红黑树,对于遍历到的红黑树节点,读取所述红黑树节点记录的第一地址链表;第一缓存数据确定模块,用于确定所述第一地址链表在内存中对应的第一缓存数据;第一落盘模块,用于按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中。
23.根据本发明实施例的第三方面,提供一种数据落盘设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一所述数据落盘方法的步骤。
24.根据本发明实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述数据落盘方法的步骤。
25.本发明提供的一种数据落盘方法,响应于数据落盘指令,获取存储的第一红黑树;遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表;确定第一地址链表在内存中对应的第一缓存数据;按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。本发明的有益效果在于:本发明借助第一红黑树方便地保存内存中第一缓存数据的顺序存储地址,实现了对内存中第一缓存数据的存储地址进行排序,并且在数据落盘过程中,是按照第一缓存数据的顺序存储地址将第一缓存数据顺序写入目标磁盘中的,符合目标磁盘的顺序写入性能,与将第一缓存数据随机写入目标磁盘相比,可以提高写入第一缓存数据至目标磁盘的速率,也即提高了数据落盘效率。本发明提供的一种数据落盘系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
26.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
27.图1为本发明实施例提供的一种数据落盘方法的第一示意图;图2为本发明实施例提供的一种数据落盘方法的第二示意图;图3为本发明中红黑树的示意图;图4为本发明实施例提供的一种数据落盘方法的第三示意图;图5为本发明实施例提供的一种数据落盘方法的第四示意图;图6为本发明实施例提供的一种数据落盘方法的第五示意图;图7为本发明实施例提供的一种数据落盘系统的结构示意图;图8为本发明实施例提供的一种数据落盘设备的结构示意图;图9为本发明实施例提供的一种数据落盘设备的另一结构示意图。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.请参阅图1,图1为本发明实施例提供的一种数据落盘方法的第一示意图。
30.本发明实施例提供的一种数据落盘方法,可以包括以下步骤:步骤s101:响应于数据落盘指令,获取存储的第一红黑树。
31.实际应用中,可以在接收到数据落盘指令后,通过响应来数据落盘指令来执行本发明的数据落盘方法,其中数据落盘指令可以是内存缓存已满时生成的数据落盘指令,也可以是业务执行完毕后生成的数据落盘指令等,本发明在此不做具体限定。其中,第一红黑树用于存储内存中缓存数据的存储地址链表,该存储地址链表用于记录缓存数据在目标磁盘中的顺序存储地址,且该存储地址指的是缓存数据在目标磁盘中的存储地址,以存储地
址为逻辑区块地址(logical block address,lba)为例,存储地址链表可以记录逻辑区块地址7、逻辑区块地址8、逻辑区块地址9等,可以理解的是,两个存储地址链表中记录的存储地址间不连续,比如另一存储地址链表中记录逻辑区块地址17、逻辑区块地址18、逻辑区块地址19等。
32.需要说明的是,本发明涉及的红黑树(red black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,且本技术红黑树中的节点用于存储内存中的缓存数据在磁盘中的存储地址的地址链表,也即在构建本技术中的红黑树的过程中,需确定内存中的缓存数据在磁盘中的存储地址,再将该存储地址构建成存储地址链表,比如将存储地址按序排序后作为地址链表,最后再将该地址链表作为红黑树节点插入红黑树中;此外,还需说明的是,本发明中数据落盘方法的执行主体可以根据具体应用场景来确定,比如本发明的数据落盘方法可以应用于服务器、电脑等,当然,内存中缓存的数据类型也可以根据具体应用场景来确定,比如内存中缓存的数据可以为业务执行过程中所使用的运行参数、性能数据等。
33.步骤s102:遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表。
34.实际应用中,在获取到存储的第一红黑树之后,便可以遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表,以借助该第一地址链表确定内存中相对应的第一缓存数据在目标磁盘中的顺序存储地址。
35.可以理解的是,在具体应用场景中,可以中序遍历第一红黑树来快速对第一红黑树进行遍历,因为中序遍历的时间复杂度低,且能够快速的找到最小值,所以中序遍历本技术的红黑树可以在降低遍历时间复杂度的同时,保证遍历出来的地址链表中的存储地址是按序排列好的,也即中序遍历红黑树可以保证遍历出的存储地址的顺序性,继而可以保证缓存数据可以按序落盘,提高数据落盘效率。
36.步骤s103:确定第一地址链表在内存中对应的第一缓存数据。
37.步骤s104:按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。
38.实际应用中,在读取红黑树节点记录的第一地址链表之后,便可以确定第一地址链表在内存中对应的第一缓存数据,比如可以根据预先建立的存储地址与缓存数据在内存中的地址间的关联关系,来确定第一地址链表中记录的各个存储地址对应的第一缓存数据等;且在确定第一缓存数据之后,便可以按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中,比如写入至机械磁盘中等,以应用目标磁盘的顺序写数据性能将内存中的缓存数据顺序落盘,提高数据落盘效率。
39.本发明提供的一种数据落盘方法,响应于数据落盘指令,获取存储的第一红黑树;遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表;确定第一地址链表在内存中对应的第一缓存数据;按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。本发明的有益效果在于:本发明借助第一红黑树方便地保存内存中第一缓存数据的顺序存储地址,实现了对内存中第一缓存数据的存储地址进行排序,并且在数据落盘过程中,是按照第一缓存数据的顺序存储地址将第一缓存数据顺序写入目标磁盘中的,符合目标磁盘的顺序写入性能,与将第一缓存数据随机
写入目标磁盘相比,可以提高写入第一缓存数据至目标磁盘的速率,也即提高了数据落盘效率。
40.请参阅图2,图2为本发明实施例提供的一种数据落盘方法的第二示意图。
41.本发明实施例提供的一种数据落盘方法,可以包括以下步骤:步骤s201:获取第一待缓存数据。
42.实际应用中,在数据落盘之前,需先生成记录内存中缓存数据的顺序存储地址的第一红黑树,也即在响应于数据落盘指令,获取存储的第一红黑树之前,还可以获取第一待缓存数据,以借助第一红黑树来保存第一待缓存数据的顺序存储地址,此时的第一待缓存数据指的是在应用第一红黑树进行数据落盘之前写入到内存中的缓存数据。
43.步骤s202:判断内存中是否有第一待缓存数据对应的旧版数据;若内存中未有第一待缓存数据对应的旧版数据,则执行步骤s203;若内存中有第一待缓存数据对应的旧版数据,则执行步骤s206。
44.步骤s203:将第一待缓存数据存入内存中,确定第一待缓存数据在目标磁盘中的第一存储地址。
45.步骤s204:在第一红黑树记录的第一地址链表中,将记录有第一存储地址的相邻存储地址的第一地址链表,作为待插入地址链表。
46.步骤s205:将第一存储地址按序添加至待插入地址链表中,执行步骤s207。
47.步骤s206:基于第一待缓存数据更新旧版数据,并保持第一红黑树不变,执行步骤s207。
48.实际应用中,考虑到第一缓存数据第一次被缓存至内存中时,可以直接确定第一缓存数据的第一存储地址并添加至第一红黑树中即可;但第一缓存数据是第二次被缓存至内存且有旧版数据时,由于第一红黑树中已有旧版数据的相应存储地址,此时只需更新旧版数据即可,无需更改第一红黑数据;所以在添加第一存储地址至第一红黑树的过程中,为了准确将第一存储地址添加至第一红黑树中,可以先判断内存中是否有第一待缓存数据对应的旧版数据;若内存中未有第一待缓存数据对应的旧版数据,则将第一待缓存数据存入内存中,确定第一待缓存数据在目标磁盘中的第一存储地址,比如确定第一缓存数据在目标磁盘中的逻辑区块地址等,在第一红黑树记录的第一地址链表中,将记录有第一存储地址的相邻存储地址的第一地址链表,作为待插入地址链表,将第一存储地址按序添加至待插入地址链表中;相应的,若内存中有第一待缓存数据对应的旧版数据,则可以基于第一待缓存数据更新旧版数据,并保持第一红黑树不变。
49.具体应用场景中,在将记录有第一存储地址的相邻存储地址的第一地址链表,作为待插入地址链表的过程中,可以将记录有第一存储地址的前序存储地址的第一地址链表,作为待插入地址链表,也即将记录有第一存储地址的前一存储地址的第一地址链表作为待插入地址链表,相应的,在将第一存储地址按序添加至待插入地址链表中的过程中,可以直接将第一存储地址添加至待插入地址链表中的该前序节点之后,以图3所示第一红黑树及待插入地址链表为例,其中的空白方块表示黑色节点,带填充方块表示红色节点,假设第一地址链表为逻辑区块地址11,则可以将第一地址链表添加至逻辑区块地址10之后等。
50.具体应用场景中,在将记录有第一存储地址的相邻存储地址的第一地址链表,作为待插入地址链表的过程中,可以将记录有第一存储地址的后序存储地址的第一地址链
表,作为待插入地址链表,也即将记录有第一存储地址的后一存储地址的第一地址链表作为待插入地址链表,相应的,在将第一存储地址按序添加至待插入地址链表中的过程中,可以直接将第一存储地址添加至待插入地址链表中的该后序节点之后,仍以图3所示第一红黑树及待插入地址链表为例,假设第一地址链表为逻辑区块地址6,则可以将第一地址链表添加至逻辑区块地址7之前等。需要说明的是,虽然可以灵活根据需要来将第一存储地址添加到待插入地址链表中的前序节点之后或后续节点之前,但考虑到将第一存储地址添加到后续节点之前对待插入地址链表的影响较大,比如需重新改写待插入地址链表等,影响系统性能,为此,可以先选择将第一存储地址添加到前序节点之后,在没有前序节点的情况下,再将第一存储地址添加到后续节点之前等,本技术在此不做具体限定。
51.具体应用场景中,为了快速确定第一待缓存数据的旧版数据是否在内存中,可以通过哈希计算的方式来进行此操作,也即在判断内存中是否有第一待缓存数据对应的旧版数据的过程中,可以计算第一待缓存数据的目标哈希值,比如依据第一待缓存数据的编号与内存地址数量来计算目标哈希值;判断内存对应的哈希表中是否存在目标哈希值;若哈希表中存在目标哈希值,则判定内存中有第一待缓存数据对应的旧版数据;若哈希表中不存在目标哈希值,则判定内存中未有第一待缓存数据对应的旧版数据;其中,哈希表用于记录内存中缓存的数据的哈希值。
52.步骤s207:响应于数据落盘指令,获取存储的第一红黑树。
53.步骤s208:遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表。
54.步骤s209:确定第一地址链表在内存中对应的第一缓存数据。
55.步骤s210:按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。
56.请参阅图4,图4为本发明实施例提供的一种数据落盘方法的第三示意图。
57.本发明实施例提供的一种数据落盘方法,可以包括以下步骤:步骤s301:响应于数据落盘指令,获取存储的第一红黑树。
58.步骤s302:遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表。
59.步骤s303:确定第一地址链表在内存中对应的第一缓存数据。
60.步骤s304:按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。
61.步骤s305:获取第二待缓存数据。
62.实际应用中,考虑到进行一次数据落盘之后,仍有数据会被缓存至内存中并进行落盘,但之前的第一红黑树中记录的存储地址已失效,此时继续应用第一红黑树来记录新的第二待缓存数据的存储地址的话,需要对第一红黑树进行删除、旋转等操作,而这些操作会消耗资源,损耗性能,为了减轻此种情况,可以将新获取的第二待缓存数据的存储地址添加至新的第二红黑树中,以避免对第一红黑树进行删除、旋转等。
63.需要说明的是,此实施例中涉及的第二待缓存数据指的是应用第一红黑树进行数据落盘操作之后待写入至内存中的缓存数据。
64.步骤s306:确定第二待缓存数据在目标磁盘中的第二存储地址。
65.步骤s307:将第二存储地址按序添加至第二地址链表中。
66.步骤s308:将第二地址链表添加至第二红黑树中。
67.实际应用中,在获取第二待缓存数据之后,便可以确定第二待缓存数据在目标磁盘中的第二存储地址;将第二存储地址按序添加至第二地址链表中;将第二地址链表添加至第二红黑树中。
68.具体应用场景中,考虑到内存中的缓存数据是无序的,这样,根据顺序存储地址,将缓存数据写入目标磁盘的话,会消耗时间在对缓存数据的再次排序上,为避免此种情况,在将第二地址链表添加至第二红黑树中之后,还可以按照第二地址链表中存储地址的先后顺序,对内存中的缓存数据进行排序,比如可以在内存的数据出队列中对缓存数据进行相应排序等,以便后续在数据落盘时,可以直接读取排序后的缓存数据顺序写入目标磁盘,为便于理解,假设缓存数据a的存储地址为逻辑区块地址3,缓存数据b的存储地址为逻辑区块地址5,缓存数据c的存储地址为逻辑区块地址4,则顺序存储地址为逻辑区块地址3、逻辑区块地址4、逻辑区块地址5,此时缓存数据在内存中的排序结果便为缓存数据a、缓存数据b、缓存数据c,这样,缓存数据在内存中的排序与存储地址在地址链表中的排序结果一致,可以避免在数据落盘时,再根据地址链表对缓存数据进行排序。
69.具体应用场景中,在响应于数据落盘指令,获取存储的第一红黑树之后,为了避免对第一红黑树进行删除、旋转等操作,还可以对第一红黑树进行加锁,以禁止更改第一红黑树,这样,第一红黑树只能用于指导缓存数据的落盘,而不能再保存新缓存数据的存储地址;此外,在应用场景中,对第一红黑树进行加锁之后,还可以先修改第一红黑树的名称、属性等信息,以使得第一红黑树无法再保存新缓存数据的存储地址,然后再取消第一红黑树的锁,以在避免长期对第一红黑树加锁的情况下禁止更改第一红黑树。相应的,在将第一缓存数据顺序写入目标磁盘中之后,还可以在遍历完第一红黑树,完成数据落盘操作之后,删除第一红黑树,以进一步避免对第一红黑树进行删除、旋转等操作。
70.具体应用场景中,考虑到不同业务对缓存数据的落盘要求不同,如果将内存中的所有缓存数据的存储地址记录在同一个红黑树中的话,容易出现部分缓存数据需落盘,而部分缓存数据无需落盘的情况,且此情况会导致需修改红黑树,由此带来性能损耗,为了避免此种情况,考虑到单个业务的缓存数据的落盘时间较一致,所以可以以业务为标准来将对应缓存数据的存储地址记录在对应的红黑树中,比如业务a的缓存数据的存储地址记录在红黑树1中,业务b的缓存数据的存储地址记录在红黑树2中,以避免在对业务a的缓存数据落盘时修改红黑树2,相应的,在响应于数据落盘指令,获取存储的第一红黑树的过程中,需响应于数据落盘指令,解析与数据落盘指令对应的目标业务场景;在存储的至少一个红黑树中,获取目标业务场景对应的第一红黑树。需要说明的是,考虑到业务对磁盘存储地址的占用,为了保证每个业务均有充足的存储地址可用,在本实施例中,可以先根据业务数量及各个业务对磁盘空间的需求,来将磁盘划分为各个业务对应的磁盘分区,比如将磁盘划分为业务a对应的磁盘分区1和业务b对应的磁盘分区2等,且后续业务的缓存数据的存储地址只能在自身对应的磁盘分区中确定,比如磁盘分区1按设定存储空间划分的话能划分出20个存储地址,则业务a的缓存数据的存储地址需在这20个存储地址中确定,且业务a的缓存数据后续需按本技术方案顺序写入该磁盘分区1。
71.请参阅图5,图5为本发明实施例提供的一种数据落盘方法的第四示意图。
72.本发明实施例提供的一种数据落盘方法,可以包括以下步骤:步骤s401:响应于数据落盘指令,获取存储的第一红黑树。
73.步骤s402:遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表。
74.步骤s403:确定第一地址链表在内存中对应的第一缓存数据。
75.步骤s404:按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中,并在此过程中,若第一缓存数据的标记为热度数据标记,则保留第一缓存数据在内存中,并将第一缓存数据的存储地址按序添加至第二红黑树的第二地址链表中。
76.实际应用中,在按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中的过程中,考虑到因业务需求,内存中的某些数据会被频繁使用,如果将该类数据进行落盘的话,后续可能还需再将其从目标磁盘中写入至内存中,为了避免重复在内存和目标磁盘中写入该类数据,可以判断第一缓存数据的标记是否为热度数据标记;若第一缓存数据的标记为热度数据标记,则保留第一缓存数据在内存中,并将第一缓存数据的存储地址按序添加至第二红黑树的第二地址链表中。
77.具体应用场景中,第一缓存数据的热度数据标记可以是在确定第一缓存数据的访问频率大于设定值后添加的标记等,本发明在此不做具体限定。
78.步骤s405:获取第二待缓存数据。
79.步骤s406:确定第二待缓存数据在目标磁盘中的第二存储地址。
80.步骤s407:将第二存储地址按序添加至第二地址链表中。
81.步骤s408:将第二地址链表添加至第二红黑树中。
82.请参阅图6,图6为本发明实施例提供的一种数据落盘方法的第五示意图。
83.本发明实施例提供的一种数据落盘方法,可以包括以下步骤:步骤s501:响应于数据落盘指令,获取存储的第一红黑树。
84.步骤s502:遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表。
85.步骤s503:确定第一地址链表在内存中对应的第一缓存数据。
86.步骤s504:按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。
87.步骤s505:判断是否中断数据落盘过程;若中断数据落盘过程,则执行步骤s506。
88.步骤s506:记录第一红黑树中未被遍历的红黑树节点作为待插入红黑树节点。
89.步骤s507:获取第三待缓存数据。
90.步骤s508:确定第三待缓存数据在目标磁盘中的第三存储地址。
91.步骤s509:将第三存储地址按序添加至待插入红黑树节点的第一地址链表中,得到第三红黑树。
92.实际应用中,在进行数据落盘的过程中,可能因用户需求或磁盘故障等需中断数据落盘过程,此时当内存中无新写入的缓存数据时,可以记录第一红黑树的遍历情况,在后续因用户需求或磁盘故障修复等需继续数据落盘过程时,可以根据已记录的遍历情况,继续对第一红黑树中之前未遍历的红黑树节点进行遍历并进行数据落盘等,而当出现内存中
写入了新的缓存数据的情况时,也即获取到第三缓存数据时,因为将第三缓存数据的存储地址写入至第一红黑树中的未编码第一地址链表中的话,不会过多消耗性,所以在按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中之后,还可以判断是否中断数据落盘过程;若中断数据落盘过程,则记录第一红黑树中未被遍历的红黑树节点作为待插入红黑树节点;获取第三待缓存数据;确定第三待缓存数据在目标磁盘中的第三存储地址;将第三存储地址按序添加至待插入红黑树节点的第一地址链表中,得到第三红黑树。相应的,若无法将第三存储地址按序添加至待插入红黑树节点的第一地址链表中,则可以将第三存储地址添加至新的红黑树中等。
93.具体应用场景中,在将第三存储地址按序添加至待插入红黑树节点的第一地址链表中之后,还可以判断是否继续数据落盘过程;若继续数据落盘过程,则遍历第三红黑树中的待插入红黑树节点,读取待插入红黑树节点记录的第三地址链表;确定第三地址链表在内存中对应的第二缓存数据;按照第三地址链表记录的第二缓存数据的顺序存储地址,将第二缓存数据顺序写入目标磁盘中。
94.请参阅图7,图7为本发明实施例提供的一种数据落盘系统的结构示意图。
95.本发明实施例提供的一种数据落盘系统,可以包括:第一红黑树获取模块101,用于响应于数据落盘指令,获取存储的第一红黑树;遍历模块102,用于遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表;第一缓存数据确定模块103,用于确定第一地址链表在内存中对应的第一缓存数据;第一落盘模块104,用于按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。
96.本发明实施例提供的一种数据落盘系统,还可以包括:第一获取模块,用于第一红黑树获取模块响应于数据落盘指令,获取存储的第一红黑树之前,获取第一待缓存数据;第一判断模块,用于判断内存中是否有第一待缓存数据对应的旧版数据;若内存中未有第一待缓存数据对应的旧版数据,则将第一待缓存数据存入内存中;确定第一待缓存数据在目标磁盘中的第一存储地址;在第一红黑树记录的第一地址链表中,将记录有第一存储地址的相邻存储地址的第一地址链表,作为待插入地址链表;将第一存储地址按序添加至待插入地址链表中。
97.本发明实施例提供的一种数据落盘系统,第一判断模块可以包括:第一处理单元,用于将记录有第一存储地址的前序存储地址的第一地址链表,作为待插入地址链表。
98.本发明实施例提供的一种数据落盘系统,第一判断模块可以包括:第二处理单元,用于将记录有第一存储地址的后序存储地址的第一地址链表,作为待插入地址链表。
99.本发明实施例提供的一种数据落盘系统,第一判断模块还可以用于:判断内存中是否有第一待缓存数据对应的旧版数据之后,若内存中有第一待缓存数据对应的旧版数据,则基于第一待缓存数据更新旧版数据,并保持第一红黑树不变。
100.本发明实施例提供的一种数据落盘系统,第一判断模块可以包括:第一确定单元,用于确定第一待缓存数据在目标磁盘中的目标逻辑区块地址。
101.本发明实施例提供的一种数据落盘系统,目标磁盘包括机械磁盘。
102.本发明实施例提供的一种数据落盘系统,第一判断模块可以包括:第一计算单元,用于计算第一待缓存数据的目标哈希值;第一判断模块,用于判断内存对应的哈希表中是否存在目标哈希值;若哈希表中存在目标哈希值,则判定内存中有第一待缓存数据对应的旧版数据;若哈希表中不存在目标哈希值,则判定内存中未有第一待缓存数据对应的旧版数据;其中,哈希表用于记录内存中缓存的数据的哈希值。
103.本发明实施例提供的一种数据落盘系统,还可以包括:第二获取模块,用于第一红黑树获取模块响应于数据落盘指令,获取存储的第一红黑树之后,获取第二待缓存数据;第一确定模块,用于确定第二待缓存数据在目标磁盘中的第二存储地址;第一添加模块,用于将第二存储地址按序添加至第二地址链表中;第二添加模块,用于将第二地址链表添加至第二红黑树中。
104.本发明实施例提供的一种数据落盘系统,还可以包括:第一排序模块,用于第二添加模块将第二地址链表添加至第二红黑树中之后,按照第二地址链表中存储地址的先后顺序,对内存中的缓存数据进行排序。
105.本发明实施例提供的一种数据落盘系统,第一落盘模块在按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中的过程中,还可以用于判断第一缓存数据的标记是否为热度数据标记;若第一缓存数据的标记为热度数据标记,则保留第一缓存数据在内存中,并将第一缓存数据的存储地址按序添加至第二红黑树的第二地址链表中。
106.本发明实施例提供的一种数据落盘系统,还可以包括:第一加锁模块,用于第一红黑树获取模块响应于数据落盘指令,获取存储的第一红黑树之后,对第一红黑树进行加锁,以禁止更改第一红黑树。
107.本发明实施例提供的一种数据落盘系统,还可以包括:删除模块,用于第一落盘模块将第一缓存数据顺序写入目标磁盘中之后,待遍历完第一红黑树之后,删除第一红黑树。
108.本发明实施例提供的一种数据落盘系统,还可以包括:第二判断模块,用于第一落盘模块按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中之后,判断是否中断数据落盘过程;若中断数据落盘过程,则记录第一红黑树中未被遍历的红黑树节点作为待插入红黑树节点;获取第三待缓存数据;确定第三待缓存数据在目标磁盘中的第三存储地址;将第三存储地址按序添加至待插入红黑树节点的第一地址链表中,得到第三红黑树。
109.本发明实施例提供的一种数据落盘系统,还可以包括:第三判断模块,用于第二判断模块将第三存储地址按序添加至待插入红黑树节点的第一地址链表中之后,判断是否继续数据落盘过程;若继续数据落盘过程,则遍历第三红黑树中的待插入红黑树节点,读取待插入红黑树节点记录的第三地址链表;确定第三地址
链表在内存中对应的第二缓存数据;按照第三地址链表记录的第二缓存数据的顺序存储地址,将第二缓存数据顺序写入目标磁盘中。
110.本发明实施例提供的一种数据落盘系统,第一红黑树获取模块可以用于:响应于数据落盘指令,解析与数据落盘指令对应的目标业务场景;在存储的至少一个红黑树中,获取目标业务场景对应的第一红黑树。
111.本发明实施例提供的一种数据落盘系统,遍历模块可以用于:中序遍历第一红黑树。
112.本发明还提供了一种数据落盘设备及计算机可读存储介质,其均具有本发明实施例提供的一种数据落盘方法具有的对应效果。请参阅图8,图8为本发明实施例提供的一种数据落盘设备的结构示意图。
113.本发明实施例提供的一种数据落盘设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如上任一实施例所描述数据落盘方法的步骤。
114.请参阅图9,本发明实施例提供的另一种数据落盘设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现数据落盘设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线连接:无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术。
115.本发明实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例所描述数据落盘方法的步骤。
116.本发明所涉及的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
117.本发明实施例提供的数据落盘系统、设备计算机可读存储介质中相关部分的说明请参见本发明实施例提供的数据落盘方法中对应部分的详细说明,在此不再赘述。另外,本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
118.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
119.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限
制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种数据落盘方法,其特征在于,包括:响应于数据落盘指令,获取存储的第一红黑树;遍历所述第一红黑树,对于遍历到的红黑树节点,读取所述红黑树节点记录的第一地址链表;确定所述第一地址链表在内存中对应的第一缓存数据;按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中。2.根据权利要求1所述的方法,其特征在于,所述响应于数据落盘指令,获取存储的第一红黑树之前,还包括:获取第一待缓存数据;判断所述内存中是否有所述第一待缓存数据对应的旧版数据;若所述内存中未有所述第一待缓存数据对应的旧版数据,则将所述第一待缓存数据存入所述内存中;确定所述第一待缓存数据在所述目标磁盘中的第一存储地址;在所述第一红黑树记录的所述第一地址链表中,将记录有所述第一存储地址的相邻存储地址的所述第一地址链表,作为待插入地址链表;将所述第一存储地址按序添加至所述待插入地址链表中。3.根据权利要求2所述的方法,其特征在于,所述将记录有所述第一存储地址的相邻存储地址的所述第一地址链表,作为待插入地址链表,包括:将记录有所述第一存储地址的前序存储地址的所述第一地址链表,作为所述待插入地址链表。4.根据权利要求2所述的方法,其特征在于,所述将记录有所述第一存储地址的相邻存储地址的所述第一地址链表,作为待插入地址链表,包括:将记录有所述第一存储地址的后序存储地址的所述第一地址链表,作为所述待插入地址链表。5.根据权利要求2所述的方法,其特征在于,所述判断所述内存中是否有所述第一待缓存数据对应的旧版数据之后,还包括:若所述内存中有所述第一待缓存数据对应的旧版数据,则基于所述第一待缓存数据更新所述旧版数据,并保持所述第一红黑树不变。6.根据权利要求2所述的方法,其特征在于,所述确定所述第一待缓存数据在目标磁盘中的第一存储地址,包括:确定所述第一待缓存数据在所述目标磁盘中的目标逻辑区块地址。7.根据权利要求6所述的方法,其特征在于,所述目标磁盘包括机械磁盘。8.根据权利要求2所述的方法,其特征在于,所述判断所述内存中是否有所述第一待缓存数据对应的旧版数据,包括:计算所述第一待缓存数据的目标哈希值;判断所述内存对应的哈希表中是否存在所述目标哈希值;若所述哈希表中存在所述目标哈希值,则判定所述内存中有所述第一待缓存数据对应的所述旧版数据;
若所述哈希表中不存在所述目标哈希值,则判定所述内存中未有所述第一待缓存数据对应的所述旧版数据;其中,所述哈希表用于记录所述内存中缓存的数据的哈希值。9.根据权利要求1所述的方法,其特征在于,所述响应于数据落盘指令,获取存储的第一红黑树之后,还包括:获取第二待缓存数据;确定所述第二待缓存数据在所述目标磁盘中的第二存储地址;将所述第二存储地址按序添加至第二地址链表中;将所述第二地址链表添加至第二红黑树中。10.根据权利要求9所述的方法,其特征在于,所述将所述第二地址链表添加至第二红黑树中之后,还包括:按照所述第二地址链表中存储地址的先后顺序,对所述内存中的缓存数据进行排序。11.根据权利要求9所述的方法,其特征在于,所述按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中的过程中,还包括:判断所述第一缓存数据的标记是否为热度数据标记;若所述第一缓存数据的标记为所述热度数据标记,则保留所述第一缓存数据在所述内存中,并将所述第一缓存数据的存储地址按序添加至所述第二红黑树的所述第二地址链表中。12.根据权利要求1所述的方法,其特征在于,所述响应于数据落盘指令,获取存储的第一红黑树之后,还包括:对所述第一红黑树进行加锁,以禁止更改所述第一红黑树。13.根据权利要求1所述的方法,其特征在于,所述将所述第一缓存数据顺序写入目标磁盘中之后,还包括:待遍历完所述第一红黑树之后,删除所述第一红黑树。14.根据权利要求1所述的方法,其特征在于,所述按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中之后,还包括:判断是否中断数据落盘过程;若中断数据落盘过程,则记录所述第一红黑树中未被遍历的红黑树节点作为待插入红黑树节点;获取第三待缓存数据;确定所述第三待缓存数据在所述目标磁盘中的第三存储地址;将所述第三存储地址按序添加至所述待插入红黑树节点的所述第一地址链表中,得到第三红黑树。15.根据权利要求14所述的方法,其特征在于,所述将所述第三存储地址按序添加至所述待插入红黑树节点的所述第一地址链表中之后,还包括:判断是否继续数据落盘过程;若继续数据落盘过程,则遍历所述第三红黑树中的所述待插入红黑树节点,读取所述待插入红黑树节点记录的第三地址链表;
确定所述第三地址链表在内存中对应的第二缓存数据;按照所述第三地址链表记录的所述第二缓存数据的顺序存储地址,将所述第二缓存数据顺序写入所述目标磁盘中。16.根据权利要求1所述的方法,其特征在于,所述响应于数据落盘指令,获取存储的第一红黑树,包括:响应于所述数据落盘指令,解析与所述数据落盘指令对应的目标业务场景;在存储的至少一个红黑树中,获取所述目标业务场景对应的所述第一红黑树。17.根据权利要求1所述的方法,其特征在于,所述遍历所述第一红黑树,包括:中序遍历所述第一红黑树。18.一种数据落盘系统,其特征在于,包括:第一红黑树获取模块,用于响应于数据落盘指令,获取存储的第一红黑树;遍历模块,用于遍历所述第一红黑树,对于遍历到的红黑树节点,读取所述红黑树节点记录的第一地址链表;第一缓存数据确定模块,用于确定所述第一地址链表在内存中对应的第一缓存数据;第一落盘模块,用于按照所述第一地址链表记录的所述第一缓存数据的顺序存储地址,将所述第一缓存数据顺序写入目标磁盘中。19.一种数据落盘设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至17任一项所述数据落盘方法的步骤。20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17任一项所述数据落盘方法的步骤。

技术总结
本发明公开了一种数据落盘方法、系统、设备及计算机可读存储介质,涉及数据存储技术领域,响应于数据落盘指令,获取存储的第一红黑树;遍历第一红黑树,对于遍历到的红黑树节点,读取红黑树节点记录的第一地址链表;确定第一地址链表在内存中对应的第一缓存数据;按照第一地址链表记录的第一缓存数据的顺序存储地址,将第一缓存数据顺序写入目标磁盘中。本发明借助第一红黑树方便地保存内存中第一缓存数据的顺序存储地址,实现了对内存中第一缓存数据的存储地址进行排序,并且在数据落盘过程中,是按照第一缓存数据的顺序存储地址将第一缓存数据顺序写入目标磁盘中的,符合目标磁盘的顺序写入性能,解决了如何提高数据落盘效率的技术问题。的技术问题。的技术问题。


技术研发人员:牛跃 王见 孙明刚
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.06.09
技术公布日:2023/7/17
版权声明

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

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

分享:

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

相关推荐