面向云计算场景的数据追加写方法、装置、设备以及介质与流程

文档序号:32888548发布日期:2023-01-12 22:26阅读:24来源:国知局
1.本公开涉及人工智能领域,具体涉及云计算、云存储和云数据库技术,可应用于智能云场景。
背景技术
::2.云磁盘cds(clouddiskservice)是一种安全可靠的高弹性存储服务,可作为云服务器的扩展块存储部件,为云服务器数据存储提供高可用和高容量支持。技术实现要素:3.本公开提供了一种面向云计算场景的数据追加写方法、装置、设备以及介质。4.根据本公开的一方面,提供了一种面向云计算场景的数据追加写方法,应用于云磁盘,云磁盘包括数据流和存储引擎,包括:5.响应于数据追加写到数据流的第一数据段,确定数据的物理地址;6.根据数据写入块设备的逻辑地址与物理地址的映射关系,更新存储引擎中的第一索引信息表,第一索引信息表用于索引数据流中待读取的数据;以及7.根据映射关系,更新存储引擎中的第二索引信息表,第二索引信息表用于确定数据流的第二数据段中所写入数据的有效性。8.根据本公开的另一方面,提供了一种面向云计算场景的数据追加写装置,包括:9.第一确定模块,用于响应于数据追加写到数据流的第一数据段,确定数据的物理地址;10.第一更新模块,用于根据数据写入块设备的逻辑地址与物理地址的映射关系,更新存储引擎中的第一索引信息表,第一索引信息表用于索引数据流中待读取的数据;以及11.第二更新模块,用于根据映射关系,更新存储引擎中的第二索引信息表,第二索引信息表用于确定数据流的第二数据段中所写入数据的有效性。12.根据本公开的另一方面,提供了一种电子设备,应用于云磁盘,云磁盘包括数据流和存储引擎,包括:13.至少一个处理器;以及14.与该至少一个处理器通信连接的存储器;其中,15.该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开中任一实施例的方法。16.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开中任一实施例的方法。17.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开中任一实施例的方法。18.根据本公开技术,可以实现数据的高效索引管理,提供稳定的索引访问性能,提高云磁盘对应的存储系统的整体性能。19.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。附图说明20.附图用于更好地理解本方案,不构成对本公开的限定。其中:21.图1是根据本公开实施例的面向云计算场景的数据追加写方法的流程示意图;22.图2是根据本公开实施例的面向云计算场景的数据追加写方法的应用示意图;23.图3是根据本公开实施例的面向云计算场景的数据追加写方法的应用示意图;24.图4是根据本公开实施例的面向云计算场景的数据追加装置的示意图;25.图5是用来实现本公开实施例的面向云计算场景的数据追加写方法的电子设备的框图。具体实施方式26.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。27.如图1所示,本公开实施例提供了一种面向云计算场景的数据追加写方法,应用于云磁盘,云磁盘包括数据流和存储引擎,包括:28.步骤s101:响应于数据追加写到数据流的第一数据段,确定数据的物理地址。29.步骤s102:根据数据写入块设备的逻辑地址与物理地址的映射关系,更新存储引擎中的第一索引信息表,第一索引信息表用于索引数据流中待读取的数据。30.步骤s103:根据映射关系,更新存储引擎中的第二索引信息表,第二索引信息表用于确定数据流的第二数据段中所写入数据的有效性。31.根据本公开实施例,需要说明的是:32.现有存储系统中的任一个或多个云磁盘(clouddiskservice)可以应用本公开实施例的面向云计算场景的数据追加写方法。在应用于存储系统的多个云磁盘时,每个云磁盘均具有对应的数据流和存储引擎。33.云磁盘的存储引擎,可以采用现有技术中任意具有数据持续化功能的数据库实例,在此不做具体限定。34.云磁盘的数据流,可以理解为一组包含有序个数据段的,有起点和终点的,用于存储数据的数据序列。追加写的数据流可以被切分成多个数据段(segment),segment内部用于追加写,某一时刻只有一个segment可写数据,当一个segment写满后,数据流会创建一个新的segment继续对数据进行追加写;每次创建segment,segmentid都会递增1;同时,当一个segment空洞比较多时,会回收这个segment的空间,所以segment也是空间回收的基本单位。35.第一数据段,可以理解为数据流的多个数据段中,当前可以进行追加写数据的数据段。36.数据追加写到数据流的第一数据段,可以理解为数据被写入到一个数据段内,也可以理解为被写入到多个第一数据段内,具体需要写入的第一数据段的个数根据数据的大小决定。在第一数据段为多个的情况下,数据对应每一个第一数据段均有对应的物理地址。37.数据的物理地址,可以包含有数据所写入的第一数据段的id(唯一标识码,identitydocument)信息和第一数据段的位置信息(offset,内偏移)。例如,数据的物理地址为segment1_offset1和segment1_offset2,则表示数据写入在数据流中id为1的第一数据段内,具体写入在id为1的第一数据段的offset1和offset2内偏移位置。offset1和offset2也表示id为1的第一数据段在整个数据流中的位置。38.块设备,可以理解为用户卷,即用户在存储系统中确定的一块存储空间。块设备由多个数据块(block)组成,每个数据块有自己的id。数据的逻辑地址可以包含有数据所写入的数据块的id和在数据块中的具体存储位置信息(offset,内偏移)。例如,逻辑地址可以写作block1_offset1和block1_offset2,表示数据存储在id为1的数据块中,具体存储在id为1的数据块中的offset1和offset2内偏移位置。39.由于追加写(append)改变了原有的数据位置,因此,需要维护一个逻辑地址(lba,logicalblockaddress)到物理地址(pba,physicalblockaddress)的映射关系,即第一索引信息表。第一索引信息表用于存储逻辑地址与物理地址之间的索引信息。40.第一索引信息表和第二索引信息表可以理解为两个columnfamily(列族)。分别通过键值对的方式存储逻辑地址与物理地址的映射关系。其中,第一索引信息表的键值对与第二索引信息表的键值对相反设置,以实现第二索引信息表作为第一索引信息表的反向索引,即第二索引信息表用于存储与第一索引信息表的索引信息对应的反向索引信息。41.根据本公开实施例,可以实现数据的高效索引管理,提供稳定的索引访问性能,提高云磁盘对应的存储系统的整体性能。本公开实施例由于将第一索引信息表和第二索引信息表存储在云磁盘的存储引擎中,而非块设备(例如内存)中,因此可以克服存储于易失性存储的块设备中,所带来的当系统重启时索引信息恢复会占用很长时间;同时索引信息的量也受内存容量限制。本公开实施例由于是通过追加写的方式写入数据流,因此可以避免引入随机写导致延迟增加。本公开实施例的第一索引信息表和第二索引信息表存储在云磁盘的存储引擎中,可以降低读写延迟,快速基于第一索引信息表和第二索引信息表读取到所需数据,保证了读性能。同时,第一索引信息表和第二索引信息表存储在云磁盘的存储引擎中而非额外的硬件设备上,可以节省云磁盘对应的存储系统的成本。根据本公开实施例,将第一索引信息和第二索引信息存储到云磁盘的存储引擎中,既能提供稳定且较低延迟的数据访问性能,又能有效降低存储系统的成本,进而可以设计出高性价比的存储系统。42.在一个示例中,块设备可以包括内存。43.在一个示例中,当数据为存储行为实时产生的日志数据时,数据流可以理解为日志流(log)。44.在一个示例中,存储引擎可以是rocksdb(database,数据库)。rocksdb是使用广泛、功能齐全、性能较好的开源键值对存储引擎,能够提供特别好的写入性能和比较快的点查询、区间查询,并且支持数据的持久化。45.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,其中,步骤s101:响应于数据追加写到数据流的第一数据段,确定数据的物理地址,包括:46.响应于数据追加写到数据流的第一数据段,确定第一数据段的唯一标识码和第一数据段在数据流中的位置信息。47.根据第一数据段的唯一标识码和第一数据段在数据流中的位置信息,确定数据的物理地址。48.根据本公开实施例,需要说明的是:49.第一数据段,可以理解为数据流中当前可以进行数据写入的数据段。数据的大小如果大于一个第一数据段的内存大小,则数据会被分割并存储到多个第一数据段中。基于此,数据的物理地址则包含有多个第一数据段的唯一标识码和位置信息。50.第一数据段在数据流中的位置信息,可以理解为第一数据段的内偏移(offset)。51.根据本公开实施例,可以准确的确定出写入数据流的数据所对应的物理地址。52.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,其中,步骤s102:根据数据写入块设备的逻辑地址与物理地址的映射关系,更新存储引擎中的第一索引信息表,包括:53.根据数据写入块设备的逻辑地址与写入数据流的物理地址的映射关系,确定数据的第一键值对,其中,第一键值对的键为逻辑地址,第一键值对的值为物理地址。54.根据第一键值对,更新存储引擎中的第一索引信息表,第一索引信息表用于索引数据流中待读取的数据。55.根据本公开实施例,需要说明的是:56.第一键值对的键为逻辑地址,可以理解为第一键值对的key为逻辑地址,第一键值对的值为物理地址,可以理解为第一键值对的value为物理地址。如图2、图3所示,data_table(数据表)可以理解为第一索引信息表,表中的blockid1_offset1……blockid3_offset5,可以理解为逻辑地址,即数据在块设备的数据块的具体存储地址。表中的ext_1……ext_5,可以理解为物理地址,即数据在数据流中的具体存储地址。ext_1……ext_5包含有数据所写入的第一数据段的id和写入第一数据段的具体位置信息(offset)。57.待读取的数据,可以理解为需要从数据流所写入的各数据中获取并反馈的数据。58.根据本公开实施例,基于逻辑地址为键,物理地址为值所构建的第一索引信息表,可以准确的根据数据读取指令,从数据流中快速且准确的索引到所需的待读取的数据。59.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,其中,步骤s103:根据映射关系,更新存储引擎中的第二索引信息表,包括:60.根据映射关系,确定数据的第二键值对,其中,第二键值对的键为物理地址,第二键值对的值为逻辑地址。61.根据第二键值对,更新存储引擎中的第二索引信息表,第二索引信息表用于确定数据流的第二数据段中所写入数据的有效性。62.根据本公开实施例,需要说明的是:63.第二键值对的键为物理地址,可以理解为第二键值对的key为物理地址,第二键值对的值为逻辑地址,可以理解为第二键值对的value为逻辑地址。如图2、图3所示,segment_table(数据段表)可以理解为第二索引信息表,表中的blockid1_offset1……blockid3_offset5,可以理解为逻辑地址,即数据在块设备的数据块的具体存储地址。表中的seg1_off1……seg2_off2,可以理解为物理地址,即数据在数据流中的具体存储地址。seg1_off1……seg2_off2包含有数据所写入的第一数据段的id和写入第一数据段的具体位置信息(offset)。64.第二数据段,可以理解为数据流的各数据段中需要进行所写入数据的有效性判断的数据段,以及可以理解为该数据段存在数据空洞,需要对其内部写入的数据进行迁移以及数据段的空间清空和回收。65.根据本公开实施例,基于物理地址为键,逻辑地址为值所构建的第二索引信息表,可以准确的确定数据流的第二数据段中所写入数据的有效性。66.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,还包括:67.步骤s104:响应于第二数据段中的数据空洞超过阈值,根据第二数据段的实际的物理地址,确定第二数据段在第二索引信息表中对应的逻辑地址。68.步骤s105:确定第二数据段在第二索引信息表中对应的逻辑地址在第一索引信息表中对应的预存的物理地址。69.步骤s106:响应于实际的物理地址与预存的物理地址匹配,将第二数据段中写入的数据确定为有效数据。70.步骤s107:将有效数据迁移至目标数据段。71.根据本公开实施例,需要说明的是:72.在对数据流的数据段进行数据删除或者覆盖写入数据大小变小的数据时,都会在数据流的数据段中造成一些数据空洞,而数据流中存在这些数据空洞,会影响云磁盘的空间使用率。73.第二数据段,可以理解为数据流的各数据段中需要进行所写入数据的有效性判断的数据段,以及可以理解为该数据段存在数据空洞,需要对其内部写入的数据进行迁移以及数据段的空间清空和回收。74.第二数据段的实际的物理地址,可以理解为第二数据段在数据流中的实际id和位置信息。75.如图2、图3所示,假设第二数据段seg1(segment1)数据段存在数据空洞,则seg1确定为实际的物理地址。基于segment_table,可以确定seg1_off1对应的blockid1_offset1、seg1_off2对应的blockid1_offset2、seg1_off3对应的blockid2_offset3为第二数据段在第二索引信息表中对应的逻辑地址。基于blockid1_offset1、blockid1_offset2、blockid2_offset3,基于data_table,确定blockid1_offset1对应的ext_1、blockid1_offset2对应的ext_2和blockid2_offset3对应的ext_3为第二索引信息表中对应的逻辑地址在第一索引信息表中对应的预存的物理地址。若,blockid1_offset1对应的ext_1包含的物理地址信息为segment1_offset1,则与第二索引信息表中blockid1_offset1对应的seg1_off1(segment1_offset1)匹配,说明第二数据段的segment1的offset1中写入的数据为有效数据。若,blockid1_offset2对应的ext_2包含的物理地址信息为segment1_offset3,则与第二索引信息表中blockid1_offset2对应的seg1_off2(segment1_offset2)不匹配,说明第二数据段的segment1的offset2中写入的数据为无效数据。76.目标数据段,可以理解为数据流中目前可以追加写数据的数据段。77.根据本公开实施例,通过确定存在数据空洞的第二数据段中的有效数据,可以实现将第二数据段中的有效数据进行数据迁移,同时还能够将数据迁移后的第二数据段进行清空回收再利用,从而提高云磁盘的空间使用率。78.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s107,还包括:79.步骤s108:响应于实际的物理地址与预存的物理地址不匹配,将第二数据段中写入的数据确定为无效数据。80.步骤s109:将无效数据从第二数据段内清空。81.根据本公开实施例,需要说明的是:82.如图2、图3所示,假设第二数据段seg1(segment1)数据段存在数据空洞,则seg1确定为实际的物理地址。基于segment_table,可以确定seg1_off1对应的blockid1_offset1、seg1_off2对应的blockid1_offset2、seg1_off3对应的blockid2_offset3为第二数据段在第二索引信息表中对应的逻辑地址。基于blockid1_offset1、blockid1_offset2、blockid2_offset3,基于data_table,确定blockid1_offset1对应的ext_1、blockid1_offset2对应的ext_2和blockid2_offset3对应的ext_3为第二索引信息表中对应的逻辑地址在第一索引信息表中对应的预存的物理地址。若,blockid1_offset1对应的ext_1包含的物理地址信息为segment1_offset1,则与第二索引信息表中blockid1_offset1对应的seg1_off1(segment1_offset1)匹配,说明第二数据段的segment1的offset1中写入的数据为有效数据。若,blockid1_offset2对应的ext_2包含的物理地址信息为segment1_offset3,则与第二索引信息表中blockid1_offset2对应的seg1_off2(segment1_offset2)不匹配,说明第二数据段的segment1的offset2中写入的数据为无效数据。83.根据本公开实施例,通过确定存在数据空洞的第二数据段中的有效数据,可以实现将第二数据段中的有效数据进行数据迁移,同时通过确定第二数据段中的无效数据,可以实现将第二数据段内的无效数据清空,从而能够将数据迁移后的第二数据段进行清空回收再利用,从而提高云磁盘的空间使用率。84.在一个示例中,如图2、图3所示,数据删除或者覆盖写就是删除或者更改data_table中的索引信息,此时,日志当中会有一些空洞。日志流中存在这些空洞,会影响空间使用率。因此,日志流被切成segment,一个segment空洞比较多时,需要搬迁有效数据到日志流的头部,然后老的segment就可以清空,完成空间清理。具体的:85.对于待回收的segment(第二数据段),从segment_table(第二索引信息表)中获取该segmentid下的所有键值对,其中的value记录的是data_table(第一索引信息表)索引表的blockkey;86.根据上一步获取的blockkey,从data_table中读取该key的索引信息ext,根据ext记录的segmentid、segmentoffset信息是否跟上一步segment_table中读到的segmentid和segment_offset匹配,如果匹配,说明这段数据仍有效,需要搬移;否则为无效数据;87.将segment中仍有效的数据搬移到新的segment,然后再将新的索引信息更新到data_table,以及新的segmentid、segmentoffset到blockkey的映射写入segment_table中;88.搬完segment有效数据后,原segment可以清空,该segment空间回收完成。89.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,还包括:90.基于预设写入频率,将数据流的当前日志状态信息,以检查点(checkpoint)的形式写入云磁盘。其中,检查点用于在云磁盘对应的存储系统重启的情况下,基于检查点加载数据流以及数据流对应的第一索引信息表和第二索引信息表。91.根据本公开实施例,利用检查点可以实现在存储系统重启时,可以从最近一次写入云磁盘的检查点加载日志流,起到快速重启的作用。同时,还能够基于重新加载的日志流,快速加载存储引擎,以实现基于重新加载的日志流,更新存储引擎中的第一索引信息表和第二索引信息表。92.在一个示例中,为了缩短存储系统的重启时间,存储引擎会定期把数据流的日志应用的状态以checkpoint的形式写到disk上,重启时,可以从checkpoint处开始加载数据,避免全量日志读取。由于存储引擎rocksdb本身会持久化数据,所以checkpoint时,只需要把日志应用的状态写到disk上。重启时:加载rocksdb数据;读取checkpoint,加载日志应用状态信息;从checkpoint点开始,加载日志,构建数据流中重新加载的数据在存储引擎中的第一索引信息表和第二索引信息表。93.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,还包括:94.响应于数据读取指令,确定待读取的数据的逻辑地址。95.根据待读取的数据的逻辑地址,确定在第一索引信息表中对应的物理地址。96.根据在第一索引信息表中对应的物理地址,从数据流中索引待读取的数据。97.根据本公开实施例,利用第一索引信息表,可以快速的从数据流中获取到与数据读取指令对应的数据,并能够将其反馈至数据读取指令的发送对象。98.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,其中,在步骤s101:响应于数据追加写到数据流的第一数据段,确定数据的物理地址,之前,还包括:99.响应于数据追加写指令,根据数据的大小,从数据流中确定至少一个第一数据段。100.将数据对应写入至少一个第一数据段。101.根据本公开实施例,需要说明的是:102.在数据的大小大于一个数据段的存储空间时,则需要通过多个第一数据段共同实现对数据的存储。同一时刻,仅在一个第一数据段中存储数据,存储满后,在下一个第一数据段中继续存储数据。103.在一种实施方式中,本公开实施例的面向云计算场景的数据追加写方法,包括步骤s101至步骤s103,其中,在步骤s102:根据数据写入块设备的逻辑地址与物理地址的映射关系,更新存储引擎中第一索引信息表的第一索引信息,之前,还包括:104.根据数据所写入的块设备的数据块,确定数据块的唯一标识码和数据在数据块中的写入位置信息。105.根据数据块的唯一标识码和数据在数据块中的写入位置信息,确定数据的逻辑地址。106.根据本公开实施例,需要说明的是:107.把用户卷(即块设备)根据逻辑地址切分成多个数据块(block),每个block会有唯一标识码,记为blockid。108.在一个示例中,如图2、图3所示,存储引擎包括多个disk(即云磁盘),每个disk包含一个存储日志流(即数据流)和一个rocksdb实例(即存储引擎)。存储引擎还包括块设备(内存,memory),内存的数据块(block)用于存储数据的逻辑地址。内存的逻辑地址与日志流的物理地址的映射关系,存储在rocksdb实例。内存和日志流直接的日志状态信息定期通过checkpoint的形式写入云磁盘。每个rocksdb实例包含两个columnfamily(列族):data_table(即第一索引信息表)和segment_table(即第二索引信息表),其中data_table用于存储用户数据的索引信息,key为blockid+block内偏移,value是用户数据在日志流中的位置信息;segment_table用于存储segment的反向索引信息,key为segmentid+seement内偏移,value是data_table中对应的key。引入segment_table的主要原因是方便空间回收,避免扫描整个data_table来确定某个segment中的有效数据,直接读取segment_table找到包含对应segment的键值对,就可以从value中确定包含哪些data_table中的key,进而确定有效数据。109.在一个示例中,如图2、图3所示,数据写入流程如下:110.用户数据写入到log中;根据用户数据的逻辑地址,更新dbdata_table中数据的索引信息;更新dbsegment_table中segment的反向索引信息。111.在一个示例中,如图2、图3所示,数据读取流程如下:112.根据逻辑地址,在dbdata_table中查找对应的索引信息ext;如果找到逻辑地址对应的ext,根据ext读取log中的数据,将数据返回给用户,结束读过程;如果没有找到ext,则返回空数据给用户。113.如图4所示,本公开实施例提供了一种面向云计算场景的数据追加写装置,应用于云磁盘,云磁盘包括数据流和存储引擎,包括:114.第一确定模块410,用于响应于数据追加写到数据流的第一数据段,确定数据的物理地址。115.第一更新模块420,用于根据数据写入块设备的逻辑地址与物理地址的映射关系,更新存储引擎中的第一索引信息表,第一索引信息表用于索引数据流中待读取的数据。以及116.第二更新模块430,用于根据映射关系,更新存储引擎中的第二索引信息表,第二索引信息表用于确定数据流的第二数据段中所写入数据的有效性。117.在一种实施方式中,第一确定模块410包括:118.第一确定子模块,用于响应于数据追加写到数据流的第一数据段,确定第一数据段的唯一标识码和第一数据段在数据流中的位置信息。119.第二确定子模块,用于根据第一数据段的唯一标识码和第一数据段在数据流中的位置信息,确定数据的物理地址。120.在一种实施方式中,第一更新模块420包括:121.第三确定子模块,用于根据数据写入块设备的逻辑地址与物理地址的映射关系,确定数据的第一键值对,其中,第一键值对的键为逻辑地址,第一键值对的值为物理地址。122.第一更新子模块,用于根据第一键值对,更新存储引擎中的第一索引信息表,第一索引信息表用于索引数据流中待读取的数据。123.在一种实施方式中,第二更新模块430包括:124.第四确定子模块,用于根据映射关系,确定数据的第二键值对,其中,第二键值对的键为物理地址,第二键值对的值为逻辑地址。125.第二更新子模块,用于根据第二键值对,更新存储引擎中的第二索引信息表,第二索引信息表用于确定数据流的第二数据段中所写入数据的有效性。126.在一种实施方式中,面向云计算场景的数据追加写装置还包括:127.第二确定模块,用于响应于第二数据段中的数据空洞超过阈值,根据第二数据段的实际的物理地址,确定第二数据段在第二索引信息表中对应的逻辑地址。128.第三确定模块,用于确定第二数据段在第二索引信息表中对应的逻辑地址在第一索引信息表中对应的预存的物理地址。129.第四确定模块,用于响应于实际的物理地址与预存的物理地址匹配,将第二数据段中写入的数据确定为有效数据。130.迁移模块,用于将有效数据迁移至目标数据段。131.在一种实施方式中,面向云计算场景的数据追加写装置还包括:132.第五确定模块,用于响应于实际的物理地址与预存的物理地址不匹配,将第二数据段中写入的数据确定为无效数据。133.清空模块,用于将无效数据从第二数据段内清空。134.在一种实施方式中,面向云计算场景的数据追加写装置还包括:135.检查点模块,用于基于预设写入频率,将数据流的当前日志状态信息,以检查点的形式写入云磁盘。其中,检查点用于在云磁盘对应的存储系统重启的情况下,基于检查点加载数据流以及数据流对应的第一索引信息表和第二索引信息表。136.在一种实施方式中,面向云计算场景的数据追加写装置还包括:137.第六确定模块,用于响应于数据读取指令,确定待读取的数据的逻辑地址。138.第七确定模块,用于根据待读取的数据的逻辑地址,确定在第一索引信息表中对应的物理地址。139.索引模块,用于根据在第一索引信息表中对应的物理地址,从数据流中索引待读取的数据。140.在一种实施方式中,面向云计算场景的数据追加写装置还包括:141.第八确定模块,用于响应于数据追加写指令,根据数据的大小,从数据流中确定至少一个第一数据段。142.写入模块,用于将数据对应写入至少一个第一数据段。143.在一种实施方式中,面向云计算场景的数据追加写装置还包括:144.第九确定模块,用于根据数据所写入的块设备的数据块,确定数据块的唯一标识码和数据在数据块中的写入位置信息。145.第十确定模块,用于根据数据块的唯一标识码和数据在数据块中的写入位置信息,确定数据的逻辑地址。146.本公开实施例的装置的各模块、子模块的具体功能和示例的描述,可以参见上述方法实施例中对应步骤的相关描述,在此不再赘述。147.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。148.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。149.图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。150.如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(rom)502中的计算机程序或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序,来执行各种适当的动作和处理。在ram503中,还可存储设备500操作所需的各种程序和数据。计算单元501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。151.设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等。输出单元507,例如各种类型的显示器、扬声器等。存储单元508,例如磁盘、光盘等。以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。152.计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如面向云计算场景的数据追加写方法。例如,在一些实施例中,面向云计算场景的数据追加写方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到ram503并由计算单元501执行时,可以执行上文描述的面向云计算场景的数据追加写方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行面向云计算场景的数据追加写方法。153.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。154.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。155.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。156.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器)。以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互。例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈)。并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。157.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。158.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。159.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。160.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1