数据处理方法、装置及电子设备与流程

文档序号:22758416发布日期:2020-10-31 09:56阅读:103来源:国知局
数据处理方法、装置及电子设备与流程

本公开实施例涉及数据处理技术领域,尤其涉及数据处理方法、数据处理装置、电子设备及计算机可读存储介质。



背景技术:

快照是一种可以对存储区域中某一特定时间点的数据进行实时备份,且不会影响数据服务效率的备份方式,它是一个独立存在于存储媒体上的存储区域。当一个快照被建立时,使用者需要指定使用的磁盘空间、对应的存储区域等信息,快照会备份其建立时间点的数据。快照的数据是静止不能修改的,在创建快照后,对原数据集合的后续修改不影响快照数据。

目前,应用较为广泛的快照技术是cow机制(cow,即copyonwrite,写时复制)。cow机制的主要特点在后续处理某一数据时,例如对某一数据进行修改处理时,需要先把该数据所属的数据集合内的所有数据完整的拷贝一份进行存储,再读取所属的数据集合内需要修改的数据进行修改。这种先拷贝再修改数据的方式非常浪费时间。

因此,需要一种新的数据处理方案来解决上述问题。



技术实现要素:

本公开实施例的目的在于提供数据处理方法、数据处理装置、电子设备及计算机可读存储介质,可以提升数据处理的效率。

根据本公开实施例的第一方面,提供了一种数据处理方法,其中,包括:

对任一数据集合进行快照生成数据快照时,在第一预设存储空间存储所述数据快照,所述数据快照包括数据集合中进行快照的第一源数据以及第一源数据对应的元数据,所述第一源数据对应的元数据包括所述第一源数据的存储参数、所述第一源数据所属数据集合的键值信息、所述第一源数据的预分配的快照版本号以及所述第一源数据的数据序列号;

在对第一源数据快照后,若接收到写入的第二源数据时,在第二预设存储空间存储所述第二源数据;

以及,生成所述第二源数据对应的元数据,所述第二源数据对应的元数据包括所述第二源数据的存储参数、所述第二源数据所属数据集合的键值信息、所述第二源数据的预分配的快照版本号,以及所述第二源数据的数据序列号,所述第二源数据的预分配的快照版本号在所述第一源数据的预分配的快照版本号基础上顺序递增,第二源数据的数据序列号根据所述数据集合中的源数据的个数顺序递增;

在第三预设存储空间中存储所述第二源数据对应的元数据;

在接收到对该数据集合的处理操作指令时,根据所述数据集合的源数据、所述数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令;

其中,所述数据集合包括至少一条具有相同键值信息的源数据,所述第二源数据与所述第一源数据属于同一数据集合。

根据本公开实施例的第二方面,提供了一种数据处理装置,包括:

快照模块,用于对任一数据集合进行快照生成数据快照并且在第一预设存储空间存储所述数据快照,所述数据快照包括数据集合中进行快照的第一源数据以及第一源数据对应的元数据,所述第一源数据对应的元数据包括所述第一源数据的存储参数、所述第一源数据所属数据集合的键值信息、所述第一源数据的预分配的快照版本号以及所述第一源数据的数据序列号;

写入模块,在对第一源数据快照后,若接收到写入的第二源数据时,在第二预设存储空间存储所述第二源数据;以及,生成所述第二源数据对应的元数据,所述第二源数据对应的元数据包括所述第二源数据的存储参数、所述第二源数据所属数据集合的键值信息、所述第二源数据的预分配的快照版本号,以及所述第二源数据的数据序列号,所述第二源数据的预分配的快照版本号在所述第一源数据的预分配的快照版本号基础上顺序递增,第二源数据的数据序列号根据所述数据集合中的源数据的个数顺序递增;在第三预设存储空间中存储所述第二源数据对应的元数据;

处理模块,用于在接收到对该数据集合的处理操作指令时,根据所述数据集合的源数据、所述数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令;

其中,所述数据集合包括至少一条具有相同键值信息的源数据,所述第二源数据与所述第一源数据属于同一数据集合。

根据本公开实施例的第三方面,提供了一种电子设备,此电子设备包括:本公开实施例第二方面所述的数据处理装置;或者,处理器和存储器,存储器用于存储可执行的指令,所述指令用于控制处理器执行本公开实施例第一方面所述的数据处理方法。

根据本公开实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令在被处理器执行时,实现本公开实施例第一方面所述的数据处理方法。

根据本公开实施例,在向数据集合写入源数据时,将该源数据存储到新的存储空间并且为该源数据生成对应的元数据,源数据对应的元数据中包括该源数据的存储参数、预分配的快照版本号、以及数据序列号。也就是说,对每个写入的源数据都进行存储并且生成对应的元数据。通过这种方式,在对集合中的源数据进行修改时,可以不需要进行集合所有数据的拷贝,而是直接写入需要修改的源数据即可,从而节省了数据处理时间,提升了数据处理效率。

通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。

图1为可用于实现本公开实施例的电子设备的硬件配置结构方框图。

图2为本公开实施例的数据处理方法步骤流程图。

图3为本公开实施例的数据处理装置的结构方框图。

图4为本公开实施例的电子设备的结构方框图。

图5为本公开实施例的元数据的示意图。

具体实施方式

现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开实施例的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开实施例及其应用或使用的任何限制。

对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

图1是示出可以实现本公开的实施例的电子设备1000的硬件配置的结构方框图。

电子设备1000可以是便携式电脑、台式计算机、平板电脑、服务器、工作站等。

服务器可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,内容分发网络的节点设备、分布式存储系统的存储服务器、云数据库服务器、云计算服务器、云管理服务器、网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交互服务器、存储服务器、数据库服务器或代理服务器等。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。

如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器cpu、微处理器mcu等。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,具体地可以包括wifi通信、蓝牙通信、2g/3g/4g/5g通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。

图1所示的电子设备仅仅是说明性的并且决不意味着对本公开实施例、其应用或使用的任何限制。应用于本公开的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本公开实施例提供的任意一项数据处理方法。本领域技术人员应当理解,尽管在图1中对电子设备1000示出了多个装置,但是,本公开实施例可以仅涉及其中的部分装置,例如电子设备1000可以只涉及处理器1100和存储装置1200。技术人员可以根据本公开实施例所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

<数据处理方法>

数据的快照是记录数据变化过程的一项技术。通过快照技术可以使数据的修改得以追溯,使数据损坏得以修复,从而降低数据的损失,数据的读取也可以依赖于快照。本公开实施例提供了一种数据处理方法,基于快照技术实现。

首先,对本公开实施例涉及的相关概念进行说明。

数据集合是源数据组合的集合,每个数据集合都具有唯一的键值信息(key)。也就是说,键值信息为数据集合的唯一集合标识,根据键值信息可以唯一确定一个数据集合。源数据可以是用于进行存储、修改、读取以及删除的最小数据单位。数据集合中的每一个源数据都可以分别存储在各自对应的存储空间。

元数据(dataaboutdata)是描述源数据的数据,可以用于描述源数据的属性。每一个源数据都具有与其对应的唯一一条元数据,每一条元数据都可以分别存储在各自对应的存储空间。

在本公开实施例中,在需要向数据集合中增加新的源数据时,是在一新的存储空间直接写入该新的源数据。在需要对数据集合中已有的源数据进行修改时,不采用覆盖形式,也就是不会删除该需要修改的源数据,而是在一新的存储空间直接写入修改后的源数据。也就是说,在本公开实施例中,在每次写入源数据时,都是将写入的源数据存储到一新的存储空间。同样地,在本公开实施例中,在向集合中写入源数据时,为该写入的源数据生成对应的元数据。

在本公开实施例中,在对集合进行快照时,生成的数据快照包括源数据和对应的元数据,也就是说,不仅仅是对源数据进行快照,而是将源数据和源数据对应的元数据一起进行快照。

在本公开实施例中,源数据对应的元数据包括:该源数据的存储参数、该源数据所属数据集合的键值信息、该源数据的预分配的快照版本号(epoch)以及该源数据的数据序列号(sequence)。

在本公开实施例中,快照版本号采用预先分配的方式,每进行一次快照,预分配的快照版本号增加1。下面举出一个具体的例子:为初始的数据集合预分配的快照版本号为1,此时还没有做过快照。每对数据集合做一次快照,预分配的快照版本号自增加1。第一次进行快照(快照名字例如为snapshot1,实际对应的预分配的快照版本号为1)后,预分配的快照版本号变为2。第二次进行快照(快照名字例如为snapshot2,实际对应的预分配的快照版本号为2)后,预分配的快照版本号变为3。第三次进行快照(快照名字例如为snapshot3,实际对应的预分配的快照版本号为3)后,预分配的快照版本号变为4。以此类推,在第n次快照完成后,就可以预先为第n+1次快照分配快照版本号n+1,其中,n为大于等于1的整数。

在本公开实施例中,源数据的预分配的快照版本号,就是写入源数据的时间点所对应的预分配的快照版本号。举例说明,在第n次快照完成后,预分配的分配快照版本号变为n+1,在第n次快照完成后至第n+1次快照完成时这段时间内写入的源数据所对应的预分配的快照版本号均为n+1。

在本公开实施例中,数据序列号根据源数据所属数据集合中的源数据的个数顺序递增。也就是说,对于任一个数据集合,第1个写入到集合中的源数据所对应的数据序列号为1,第2个写入到集合中的源数据所对应的数据序列号为2,…,第m个写入到集合中的源数据所对应的数据序列号为m,其中,m为大于等于1的整数。根据数据序列号,可以获知到数据集合中最新写入的源数据是哪一个源数据。

本公开实施例中,在对集合进行数据快照时,可以是对数据集合中的数据序列号最高的源数据以及对应的元数据进行快照。在这种情况下,数据快照的数据序列号,也就是数据快照中的源数据所对应的数据序列号。

参见图5所示,在本公开实施例中,源数据的存储参数包括:存储该源数据的数据文件的文件名(file)、该源数据在该数据文件中的偏移量(offset)以及该源数据的大小(size)。具体来说,文件名是指存储该源数据的数据文件的具体名称,通过文件名可以定位到具体的数据文件。偏移量是指在该数据文件中,以某一个预设的位置为基准,该源数据相对于该基准位置的位置偏移,偏移量指明了该源数据在该数据文件中的起始位置,用于给该源数据在该数据文件中定位。结合起始位置,就可以定位出该源数据在该数据文件中的终点位置。源数据的大小是指该源数据所占用的存储空间的大小,通过这种结构的存储参数,可以快速准确的读取该源数据。

参见图5所示,基于元数据“<键值:3;快照版本号:2;数据序列号:2;文件名:10;偏移量:300;数据大小:8>”以及元数据“<键值信息:3;快照版本号:2;数据序列号:3;存储的数据文件名:10;偏移量:200;数据大小:8>”,可知,在键值信息为3的数据集合中,最新一次写入的源数据的数据序列号为3,最新一次写入的源数据存储在文件名为10的数据文件中偏移量200的位置处。

在本公开实施例中,可以利用元数据达成数据检索的目的,实现在存储空间中快速准确的查找和读取源数据,方便对源数据进行读取、修改以及删除的操作。

根据本公开实施例,在向数据集合写入源数据时,将该源数据存储到新的存储空间并且为该源数据生成对应的元数据,源数据对应的元数据中包括该源数据的存储参数、预分配的快照版本号、以及数据序列号。也就是说,对每个写入的源数据都进行存储并且生成对应的元数据。通过这种方式,在对集合中的源数据进行修改时,可以不需要进行集合所有数据的拷贝,而是直接写入需要修改的源数据即可,从而节省了数据处理时间,提升了数据处理效率。

下面参照图2所示,说明本公开实施例提供的数据处理方法,包括步骤s102-s108。该数据处理方法可以是由电子设备实施,该电子设备例如可以是如图1所示的电子设备1000。

s102、对任一数据集合进行快照生成数据快照时,在第一预设存储空间存储数据快照。数据快照包括数据集合中进行快照的第一源数据以及第一源数据对应的元数据。第一源数据对应的元数据包括第一源数据的存储参数、第一源数据所属数据集合的键值信息、第一源数据的预分配的快照版本号以及第一源数据的数据序列号。

在本公开实施例中,数据集合中包括至少一条具有相同键值信息的源数据。

在一个具体的例子中,在对该数据集合进行快照时,首先确定数据集合中的需进行快照的第一源数据,根据需进行快照的第一源数据及与其对应的元数据确定该数据集合的数据快照。在一个具体的例子中,第一源数据是数据集合中数据序列号最高的源数据。也就是说,在对集合进行数据快照时,可以是对数据集合中的数据序列号最高的源数据以及对应的元数据进行快照。

在一个具体的例子中,可以是在接收到快照指令时,对数据集合进行快照,以生成数据快照。在一个具体的例子中,可以根据预设的快照指令周期,对数据集合进行快照,以生成数据快照。本公开实施例的方法不受限于快照的触发机制。

在一个具体的例子中,在进行快照后,生成并且存储数据快照对应的快照链路信息,快照链路信息包括该数据快照所属数据集合的键值信息和该数据快照的预分配的快照版本号。根据快照链路信息,可以迅速确定与数据快照对应的数据集合和快照版本号。

s104、在对第一源数据快照后,若接收到写入的第二源数据时,在第二预设存储空间存储第二源数据,其中,第二源数据与第一源数据属于同一数据集合。

在本公开实施例中,第二预设存储空间和第一预设存储空间为不同的存储空间,也就是说,第二源数据的写入不会导致数据集合中的已有的源数据被覆盖。

s106、生成第二源数据对应的元数据,在第三预设存储空间中存储第二源数据对应的元数据。第二源数据对应的元数据包括第二源数据的存储参数、第二源数据所属数据集合的键值信息、第二源数据的预分配的快照版本号,以及第二源数据的数据序列号。第二源数据的预分配的快照版本号在第一源数据的预分配的快照版本号基础上顺序递增,第二源数据的数据序列号根据数据集合中的源数据的个数顺序递增。在第三预设存储空间中存储第二源数据对应的元数据。

根据前述内容可知,在本公开实施例中,每写入一个源数据,均为该源数据生成对应的元数据。

s108、在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令。

本公开实施例提供的数据处理方法,在对集合中的源数据进行修改时,可以不需要进行集合所有数据的拷贝,而是直接写入需要修改的源数据即可,从而节省了数据处理时间,提升了数据处理效率。通过为每一次写入的源数据生成元数据,以及利用源数据和对应的元数据来制作快照,方便后续对源数据进行读取、修改以及删除等操作,提高了数据处理效率。

在本公开实施例中,该处理操作指令可以是读取、修改、删除的操作指令。该读取、修改、删除的操作指令可以是对单一数据的操作,也可以是对批量数据的操作。下面进行举例说明。

<例子1>:

处理操作指令为数据读取指令,用于读取待读取数据,数据读取指令中包括目标键值信息以及目标快照版本号。

在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令的步骤,包括:

s202、获取数据读取指令中目标键值信息以及目标快照版本号。

s204、从数据集合的所有元数据中查找包括有目标键值信息以及目标快照版本号的第一目标元数据。

也就是说,查找与数据读取指令中的目标键值信息以及目标快照版本号一致的元数据,作为第一目标元数据。

s206、将第一目标元数据中数据序列号最大的元数据确定为第二目标元数据。

查找出的第一目标元数据可能有多个,从这些第一目标元数据中选择数据序列号最大的元数据确定为第二目标元数据。

s208、从第二目标元数据中确定出待读取数据的存储参数。

s210、根据第二目标元数据中的存储参数读取待读取数据。

在一个具体的例子中,参见图5所示,客户端发送给服务器一个数据读取指令,数据读取指令中的目标键值信息为1,目标快照版本号为2,即客户端想要读取键值信息为1的数据集合中快照版本号为2的源数据。服务器根据目标键值信息1,目标快照版本号2查找出两条第一目标元数据,确定其中数据序列号为5的元数据作为第二目标元数据,根据第二目标元数据中的存储参数读取源数据返给客户端。

<例子2>:

处理操作指令为数据读取指令,用于读取待读取数据,数据读取指令中包括目标键值信息以及目标快照版本号。

在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令的步骤,包括:

s302、获取数据读取指令中目标键值信息以及目标快照版本号。

s304、从数据集合的所有元数据中确定出是否具有与目标键值信息、目标快照版本号均一致的元数据。

当确定数据集合的所有元数据中存在与目标键值信息、目标快照版本号均一致的元数据时,将这些元数据作为第一目标元数据,执行步骤s306-310。

s306、将第一目标元数据中数据序列号最大的元数据确定为第二目标元数据。

s308、从第二目标元数据中确定出待读取数据的存储参数。

s310、根据第二目标元数据中的存储参数读取待读取数据。

当确定数据集合的所有元数据中不存在与目标键值信息、目标快照版本号均一致的元数据时,执行步骤s312-s318。

s312、对目标快照版本号进行顺序递减处理直至从数据集合的所有元数据中确定出第三目标元数据;第三目标元数据包括目标键值信息和已进行顺序递减处理的目标快照版本号。

具体来说,当确定数据集合的所有元数据中不存在与目标键值信息、目标快照版本号均一致的元数据时,为了避免数据读取过程中出现遗漏,可以按照目标快照版本号顺序递减的规则重新选取目标快照版本号进行源数据的读取。

例如,数据读取指令中的目标键值信息为2,目标快照版本号为6。将目标键值信息为2的数据集合的所有元数据视为候选元数据集合。当该候选元数据集合中不存在快照版本号为6的元数据时,尝试在该候选元数据集合中获取快照版本号为5的元数据作为第三目标元数据。如果该候选元数据集合也不存在快照版本号为5的元数据,则继续递减目标快照版本号,尝试在该候选元数据集合中获取快照版本号为4的元数据作为第三目标元数据。以此类推,直到在该候选元数据集合中获取到第三目标元数据为止。

s314、将第三目标元数据中数据序列号最大的元数据确定为第四目标元数据。

s316、从第四目标元数据中确定出待读取数据的存储参数。

s318、根据第四目标元数据中的存储参数读取待读取数据。

<例子3>:

处理操作指令为数据快照读取指令,用于读取数据快照,数据读取指令中包括目标键值信息以及目标快照版本号。

在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令的步骤,包括:

s402、获取数据读取指令中目标键值信息以及目标快照版本号,以构建目标快照链路信息。

s404、从存储的快照链路信息中查找目标快照链路信息,以读取与目标快照联系信息对应的数据快照。

在一个具体的例子中,利用快照链路信息所记录的数据集合的键值信息和快照版本号来确定目标快照链路,通过点击该目标快照链路,就可以迅速读取目标快照链路所指示的数据快照。

<例子4>:

处理操作指令为数据清理指令。

在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令的步骤包括:

s502、当接收到数据清理指令时,针对该数据集合,基于数据集合的元数据、数据快照从数据集合中确定出待清理数据。

s506、对待清理数据执行数据清理指令。

在一个具体的例子中,对待清理数据执行数据清理指令,包括:根据待清理数据所对应的元数据,确定待清理数据的存储参数,根据存储参数删除待清理数据。

在另一个具体的例子中,对待清理数据执行数据清理指令,进一步还包括:清除待清理数据所对应的元数据。在该例子中,在执行数据清理指令时,不仅要清理待清理的源数据,还要把待清理源数据的元数据也进行一并清除,既释放了源数据的存储空间,还要对应释放元数据的存储空间,以充分利用存储空间。

下面说明针对一个数据集合,如何基于数据集合的元数据、数据快照从数据集合中确定出待清理数据。

假设键值信息为1的数据集合经过一系列处理,对应的元数据包括:

<键值信息:1,快照版本号:1,数据序列号:5,…>

<键值信息:1,快照版本号:2,数据序列号:20,…>

<键值信息:1,快照版本号:2,数据序列号:22,…>

<键值信息:1,快照版本号:3,数据序列号:23,…>

<键值信息:1,快照版本号:3,数据序列号:24,…>

<键值信息:1,快照版本号:3,数据序列号:25,…>

<键值信息:1,快照版本号:5,数据序列号:30,…>

<键值信息:1,快照版本号:5,数据序列号:31,…>

<键值信息:1,快照版本号:6,数据序列号:33,…>

<键值信息:1,快照版本号:6,数据序列号:38,…>

<键值信息:1,快照版本号:7,数据序列号:40,…>

<键值信息:1,快照版本号:7,数据序列号:45,…>

对于该键值信息为1的数据集合,先后做过快照snapshot1(对应于快照版本号1),快照snapshot2(对应于快照版本号2),快照snapshot3(对应于快照版本号3),快照snapshot4(对应于快照版本号4),快照snapshot5(对应于快照版本号5),快照snapshot6(对应于快照版本号6)。

快照版本号7对应于快照snapshot7,需要说明的是,当前可能还没有做快照snapshot7,只是预先为数据集合分配了快照版本号7。如果当前已经做过快照snapshot7(对应于快照版本号7),则当前的最新的预分配的快照版本号为8,由于没有快照版本号为8的元数据,说明在快照snapshot7完成之后,没有对数据集合进行过写入源数据的操作。

基于上述假设可知,在快照snapshot3(对应于快照版本号3)之后至快照snapshot4(对应于快照版本号4)的这段期间内,没有对数据集合进行过写入源数据的操作,因此不存在快照版本号为4的元数据。在读取快照snapshot4(对应于快照版本号4)的源数据时,需要使用与快照版本号4最接近的低级的快照版本号所对应的元数据(可以参见前述的执行数据读取指令时,顺序递减数据读取指令中的目标照版本号的过程),也就是需要引用快照版本号3的元数据。

在一个具体的例子中,基于数据集合的元数据、数据快照从数据集合中确定出待清理数据,包括步骤s602-s604:

s602、从数据集合的元数据中确定出待清理目标元数据,待清理目标元数据中所包含的数据序列号均小于待清理目标数据快照的数据序列号,且待清理目标元数据与待清理目标数据快照具有相同的预分配的快照版本号。

s604、将待清理目标元数据对应的源数据确定为待清理数据。

在该例子中,针对该键值信息为1的数据集合,确定出的待清理元数据,包括:

<键值信息:1,快照版本号:1,数据序列号:5,…>

<键值信息:1,快照版本号:2,数据序列号:22,…>

<键值信息:1,快照版本号:3,数据序列号:25,…>

<键值信息:1,快照版本号:5,数据序列号:31,…>

<键值信息:1,快照版本号:6,数据序列号:38,…>

<键值信息:1,快照版本号:7,数据序列号:45,…>

在一个具体的例子中,基于数据集合的元数据、数据快照从数据集合中确定出待清理数据,可以包括步骤s702-s706:

s702、在数据集合出现任一数据快照为无效快照的情况下,将无效快照的快照版本号作为第一目标快照版本号,将无效快照的下一个快照处理所产生的数据快照的快照版本号作为第二目标快照版本号。

s704、确定数据集合的所有元数据中是否存在具有第二目标快照版本号的元数据。

s706、当确定数据集合的所有元数据中存在具有第二目标快照版本号的元数据时,将具有第一目标快照版本号的元数据对应的源数据确定为待清理数据。

下面说明在数据集合出现任一数据快照为无效快照的情况下,如何确定该无效快照所对应的待清理数据。

(1)假设快照snapshot5(对应于快照版本号5)被删除成为无效快照,剩余的有效快照包括:快照snapshot1(对应于快照版本号1),快照snapshot2(对应于快照版本号2),snapshot3(对应于快照版本号3),snapshot4(对应于快照版本号4),快照snapshot6(对应于快照版本号6)。如果当前已经做过快照snapshot7(对应于快照版本号7),剩余的有效快照还包括快照snapshot7(对应于快照版本号7)。

对于每一个有效快照来说,该有效快照的快照版本号所对应的数据序列号最高的源数据应当是有效源数据。如果当前还没有做快照snapshot7,快照版本号7所对应的数据序列号最高的源数据也应当是有效源数据。

在快照snapshot5(对应于快照版本号5)被删除的情况下,有效源数据所对应的元数据包括:

<键值信息:1,快照版本号:1,数据序列号:5,…>

<键值信息:1,快照版本号:2,数据序列号22,…>

<键值信息:1,快照版本号:3,数据序列号25,…>

<键值信息:1,快照版本号:6,数据序列号38,…>

<键值信息:1,快照版本号:7,数据序列号45,…>

在快照snapshot5(对应于快照版本号5)被删除的情况下,与元数据<键值信息:1,快照版本号:1,数据序列号:5,…>,<键值信息:1,快照版本号:2,数据序列号22,…>,<键值信息:1,快照版本号:3,数据序列号25,…>,<键值信息:1,快照版本号:6,数据序列号38,…>,<键值信息:1,快照版本号:7,数据序列号45,…>对应的源数据为有效源数据,与其他元数据对应的源数据是待清理数据。

(2)假设快照snapshot3(对应于快照版本号3)被删除成为无效快照,剩余的有效快照包括:快照snapshot1(对应于快照版本号1),快照snapshot2(对应于快照版本号2),快照snapshot4(对应于快照版本号4),快照snapshot5(对应于快照版本号5),快照snapshot6(对应于快照版本号6)。如果当前已经做过快照snapshot7(对应于快照版本号7),剩余的有效快照还包括快照snapshot7(对应于快照版本号7)。

对于每一个有效快照来说,该有效快照的快照版本号所对应的数据序列号最高的源数据应当是有效源数据。如果当前还没有做快照snapshot7,快照版本号7所对应的数据序列号最高的源数据也应当是有效源数据。此外,由于有效快照snapshot4(对应于快照版本号4)需要引用无效快照snapshot3(对应于快照版本号3),快照版本号3所对应的数据序列号最高的源数据也应当是有效源数据。

在快照snapshot3(对应于快照版本号3)被删除的情况下,有效源数据所对应的元数据包括:

<键值信息:1,快照版本号:1,数据序列号:5,…>

<键值信息:1,快照版本号:2,数据序列号22,…>

<键值信息:1,快照版本号:3,数据序列号25,…>

<键值信息:1,快照版本号:5,数据序列号31,…>

<键值信息:1,快照版本号:6,数据序列号38,…>

<键值信息:1,快照版本号:7,数据序列号45,…>

在快照snapshot3(对应于快照版本号3)被删除的情况下,与元数据<键值信息:1,快照版本号:1,数据序列号:5,…>,<键值信息:1,快照版本号:2,数据序列号22,…>,<键值信息:1,快照版本号:3,数据序列号25,…>,<键值信息:1,快照版本号:5,数据序列号31,…>,<键值信息:1,快照版本号:6,数据序列号38,…>,<键值信息:1,快照版本号:7,数据序列号45,…>对应的源数据为有效源数据,与其他元数据对应的源数据是待清理数据。

在一个具体的例子中,基于数据集合的元数据、数据快照从数据集合中确定出待清理数据,可以包括上述的步骤s602-s604和步骤s702-s706。

在本公开实施例中,可以利用元数据达成数据检索的目的,实现在存储空间中快速准确的查找和读取源数据,方便对源数据进行读取、修改以及删除的操作。

根据本公开实施例,在向数据集合写入源数据时,将该源数据存储到新的存储空间并且为该源数据生成对应的元数据,源数据对应的元数据中包括该源数据的存储参数、预分配的快照版本号、以及数据序列号。也就是说,对每个写入的源数据都进行存储并且生成对应的元数据。通过这种方式,在对集合中的源数据进行修改时,可以不需要进行集合所有数据的拷贝,而是直接写入需要修改的源数据即可,从而节省了数据处理时间,提升了数据处理效率。

<数据处理装置>

如图3所示,在本公开再一个实施例中,提供了一种数据处理装置200。数据处理装置200包括:

数据快照存储模块21,用于对任一数据集合进行快照生成数据快照时,在第一预设存储空间存储数据快照,数据快照包括数据集合中进行快照的第一源数据以及第一源数据对应的元数据,第一源数据对应的元数据包括第一源数据的存储参数、第一源数据所属数据集合的键值信息、第一源数据的预分配的快照版本号以及第一源数据的数据序列号;其中,数据集合包括至少一条具有相同键值信息的源数据。

源数据写入模块22,用于在对第一源数据快照后,若接收到写入的第二源数据时,在第二预设存储空间存储第二源数据;其中,第二源数据与第一源数据属于同一数据集合。

元数据生成模块23,用于生成第二源数据对应的元数据,第二源数据对应的元数据包括第二源数据的存储参数、第二源数据所属数据集合的键值信息、第二源数据的预分配的快照版本号,以及第二源数据的数据序列号,第二源数据的预分配的快照版本号在第一源数据的预分配的快照版本号基础上顺序递增,第二源数据的数据序列号根据数据集合中的源数据的个数顺序递增;在第三预设存储空间中存储第二源数据对应的元数据。

处理模块24,用于在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令;

在一个具体的例子中,数据处理装置200还可以包括快照源数据确定模块。快照源数据确定模块,用于在对该数据集合进行快照时,确定数据集合的需进行快照的第一源数据;根据需进行快照的第一源数据及与其对应的元数据确定该数据集合的数据快照。

在一个具体的例子中,数据处理装置200还可以包括快照模块。快照模块,用于对任一数据集合进行快照生成数据快照,包括:在接收到快照指令时,对任一数据集合进行快照,以生成数据快照;或者,根据预设的快照指令周期,对任一数据集合进行快照,以生成数据快照。

在一个具体的例子中,数据处理装置200还可以包括快照链路信息存储模块。快照链路信息存储模块,用于存储数据快照对应的快照链路信息,快照链路信息包括数据快照所属数据集合的键值信息和数据快照的预分配的快照版本号。

在一个具体的例子中,处理操作指令为数据读取指令,用于读取待读取数据,数据读取指令中包括目标键值信息以及目标快照版本号。

在一个具体的例子中,处理模块24包括第一读指令处理模块。第一读指令处理模块,用于:获取数据读取指令中目标键值信息以及目标快照版本号;从数据集合的所有元数据中查找包括有目标键值信息以及目标快照版本号的第一目标元数据,数据集合至少包括第一源数据和第二源数据;将第一目标元数据中数据序列号最大的元数据确定为第二目标元数据;从第二目标元数据中确定出待读取数据的存储参数;根据第二目标元数据中的存储参数读取待读取数据。

在一个具体的例子中,处理模块24包括第二读指令处理模块。第二读指令处理模块,用于:在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令的步骤,包括:获取数据读取指令中目标键值信息以及目标快照版本号;从数据集合的所有元数据中确定出是否具有与目标键值信息、目标快照版本号均一致的元数据;当确定数据集合的所有元数据中不存在与目标键值信息、目标快照版本号均一致的元数据时,对目标快照版本号进行顺序递减处理直至从数据集合的所有元数据中确定出第三目标元数据;第三目标元数据包括目标键值信息和已进行顺序递减处理的目标快照版本号;将第三目标元数据中数据序列号最大的元数据确定为第四目标元数据;从第四目标元数据中确定出待读取数据的存储参数;根据第四目标元数据中的存储参数读取待读取数据。

在一个具体的例子中,处理模块24包括第三读指令处理模块。第三读指令处理模块,用于:在接收到对该数据集合的处理操作指令时,根据数据集合的源数据、数据集合的源数据对应的元数据和/或数据快照,对该数据集合执行处理操作指令的步骤,包括:获取数据读取指令中目标键值信息以及目标快照版本号,以构建目标快照链路信息;从存储的快照链路信息中查找目标快照链路信息,以读取与目标快照联系信息对应的数据快照。

在一个具体的例子中,处理操作指令为数据清理指令。

在一个具体的例子中,处理模块24包括清理指令处理模块。清理指令处理模块,用于:当接收到数据清理指令时,针对该数据集合,基于数据集合的元数据、数据快照从数据集合中确定出待清理数据;对待清理数据执行数据清理指令。

在一个具体的例子中,清理指令处理模块包括第一待清理数据确定模块。第一待清理数据确定模块,用于基于数据集合的元数据、数据快照从数据集合中确定出待清理数据。具体地,第一待清理数据确定模块,用于:从数据集合的元数据中确定出待清理目标元数据,待清理目标元数据中所包含的数据序列号均小于待清理目标数据快照的数据序列号,且待清理目标元数据与待清理目标数据快照具有相同的预分配的快照版本号;将待清理目标元数据对应的源数据确定为待清理数据。

在一个具体的例子中,清理指令处理模块包括第二待清理数据确定模块。第二待清理数据确定模块,用于基于数据集合的元数据、数据快照从数据集合中确定出待清理数据。具体地,第二待清理数据确定模块,用于:在数据集合出现任一数据快照为无效快照的情况下,将无效快照的快照版本号作为第一目标快照版本号,将无效快照的下一个快照处理所产生的数据快照的快照版本号作为第二目标快照版本号;确定数据集合的所有元数据中是否存在具有第二目标快照版本号的元数据;当确定数据集合的所有元数据中存在具有第二目标快照版本号的元数据时,将具有第一目标快照版本号的元数据对应的源数据确定为待清理数据。

在一个具体的例子中,清理指令处理模块包括清理模块。清理模块,用于对待清理数据执行数据清理指令。具体地,清理模块,用于根据待清理数据所对应的元数据,确定待清理数据的存储参数;根据存储参数确定的待清理数据的具体位置删除待清理数据。或者,清理模块,用于根据待清理数据所对应的元数据,确定待清理数据的存储参数;根据存储参数确定出的待清理数据的具体位置删除待清理数据,以及清除待清理数据所对应的元数据。

<电子设备>

在本公开实施例再一个实施例中,提供了一种电子设备300,一方面,该电子设备300可以包括前述的数据处理装置,用于实施本公开任意实施例的数据处理方法。

另一方面,如图4所示,电子设备300可以包括存储器32和处理器31,存储器32用于存储可执行的指令;该指令用于控制处理器31执行前述的数据处理方法。

在本实施例中,电子设备300可以是台式机、笔记本电脑、服务器、工作站等任意具有存储器32以及处理器31的电子产品。

<计算机可读存储介质>

最后,根据本公开的又一个实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现根据本公开任意实施例所述的数据处理方法。

本公开实施例可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开实施例的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本公开实施例操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开实施例的各个方面。

这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本公开实施例的范围由所附权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1