掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置、电子设备及计算机可读介质

文献发布时间:2023-06-19 11:44:10


数据处理方法、装置、电子设备及计算机可读介质

技术领域

本申请实施例涉及数据处理领域,尤其涉及一种数据处理方法、装置、电子设备及计算机可读介质。

背景技术

基于日志结构合并树(log structured merge tree,LSMtree)的存储引擎通常使用写wal(Write Ahead Log,预写日志)的方式实现故障恢复。具体地,数据在写入活跃内存表之前先持久化wal日志数据。待内存表中的数据写入持久化存储设备之后,便可回收写入持久化存储设备的数据对应的wal日志数据,以向前推进存储引擎的检查点,从而避免wal日志数据过多和存储引擎宕机恢复时间过长的问题。存储引擎宕机恢复时,通过回放检查点之后的wal日志数据,便可恢复内存表中丢失的数据,能够使得内存中的数据不丢失。如果内存表中的数据刷盘越频繁,存储引擎的检查点的推进就越靠前,存储引擎宕机恢复时间越短。然而,频繁地对内存表中的数据进行刷盘,进而造成频繁地合并持久化存储设备中的数据层的数据,加重写入放大,消耗了大量I/O读写数据,并且,还需要通过CPU进行数据比较,增加了存储引擎的资源消耗,对存储引擎的性能造成不良的影响。由此可见,如何在兼顾存储引擎宕机恢复效率的同时,有效减少对存储引擎的性能影响成为当前亟待解决的技术问题。

发明内容

本申请的目的在于提出一种数据处理方法、装置、电子设备及计算机可读介质,用于解决现有技术中存在的如何在兼顾存储引擎宕机恢复效率的同时,有效减少对存储引擎的性能影响的技术问题。

根据本申请实施例的第一方面,提供了一种数据处理方法。所述方法包括:基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点;基于所述转储位点,构建用于所述内存表中的写入数据的转储任务;通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

根据本申请实施例的第二方面,提供了一种数据处理装置。所述装置包括:第一确定模块,用于基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点;构建模块,用于基于所述转储位点,构建用于所述内存表中的写入数据的转储任务;转储模块,用于通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

根据本申请实施例的第三方面,提供了一种电子设备,包括:一个或多个处理器;计算机可读介质,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例的第一方面所述的数据处理方法。

根据本申请实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例的第一方面所述的数据处理方法。

根据本申请实施例提供的技术方案,基于采用LSM树结构的存储引擎的内存表的快照数据,确定内存表中的写入数据的转储位点,并基于转储位点,构建用于内存表中的写入数据的转储任务,再通过执行转储任务,将内存表中位于转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进存储引擎的检查点,与现有的其它方式相比,通过构建并执行转储任务,将内存表中位于转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,无需对转储至持久化存储设备中不支持读操作的数据层中的数据执行合并操作,在兼顾存储引擎宕机恢复效率的同时,有效减小了存储引擎的检查点的推进过程中对存储引擎的资源消耗,从而有效减少了对存储引擎的性能影响。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1A为本申请实施例提供的日志结构合并树的示意图;

图1B为本申请实施例一中数据处理方法的步骤流程图;

图2A为本申请实施例二中数据处理方法的步骤流程图;

图2B为根据本申请实施例二提供的数据处理过程的示意图;

图3为本申请实施例三中数据处理装置的结构示意图;

图4为本申请实施例四中数据处理装置的结构示意图;

图5为本申请实施例五中电子设备的结构示意图;

图6为本申请实施例六中电子设备的硬件结构。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅配置为解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如图1A所示,根据LSMtree机制,主机的应用(英文:application)通过API接口发送写入指令至存储引擎11,存储引擎11接收到所述写入指令后,生成日志文件(英文:LOG),日志文件记录有数据的版本信息(英文:Version),然后存储引擎11将数据保存至存储器中的内存表中。当内存表中保存的所有数据的数据量达到预设阈值时,所述内存表将转化为不可变的内存表。不可变的内存表不会再接收新的数据,存储器中会再创建一个新的内存表。所述新的内存表将继续接收数据。因此,存储器中可能保存有一个或多个不可变的内存表,但只有一个内存表。每个不可变的内存表中的数据是固化的,而内存表可以不断接收新写入的数据。在LSM-Tree机制中,每个不可变的内存表中的数据被转储于持久化存储设备的一个静态排序表(Static Sorted Table,SST)文件(以下简称为文件)中。可以理解的是,所述持久化存储设备中包含多个文件,每个文件与一个不可变的内存表对应。所述文件用于接收由所述不可变的内存表转储而来的数据。本实施例中的第一层级的文件包括直接由不可变的内存表转储而来的数据,所述第一层级的文件也是未经过合并的文件。下面以一个不可变的内存表中的数据被转储于一个文件中为例说明其具体过程。首先,存储引擎11为待转储的文件分配文件标识(文件标识是文件的标识的简称),所述文件标识用于唯一指示所述待转储的文件。然后,存储引擎11为所述待转储的文件中的数据分配一段逻辑地址,并且保存所述文件标识与保存的逻辑地址之间的对应关系。存储引擎11将这些数据以及分配的逻辑地址发送给持久化存储设备44,持久化存储设备44将这些数据写入擦除块中,数据保存在擦除块中的实际地址为数据的物理地址。持久化存储设备44记录所述逻辑地址与物理地址之间的对应关系,并且将所述逻辑地址与物理地址之间的对应关系发送给存储引擎11。存储引擎11将所述逻辑地址与物理地址之间的对应关系保存在存储器中。

在存储引擎中,写日志和写数据文件是存储引擎中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证存储引擎的性能,通常存储引擎都是保证在提交完成之前要先保证日志都被写入到日志文件中,而内存表中的写入数据则保存在内存中再不定期的分批写入到数据文件中。也就是说日志写入和提交操作是同步的,而数据写入和提交操作是不同步的。这样就存在一个问题,当存储引擎宕机时并不能保证内存中内存表的写入数据全部写入到数据文件中,这样在存储引擎启动时就要使用日志文件进行恢复操作,将存储引擎恢复到崩溃之前的状态,保证数据的一致性。检查点是这个过程中的重要机制,通过它来确定,恢复时哪些日志数据应该被扫描并应用于恢复内存表中丢失的数据。在现有技术中,基于LSM树的存储引擎通常依赖将内存表的数据刷盘来推进检查点,以避免日志文件过多和存储引擎宕机恢复时间过长的问题。但是,频繁的刷盘会造成频繁地合并数据,加重写入放大,带来更多的cpu和io消耗,从而造成存储引擎的性能的下降。为此,本申请实施例提供一种数据处理方法,通过构建并执行转储任务,将内存表中位于转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,无需对转储至持久化存储设备中不支持读操作的数据层中的数据执行合并操作,在兼顾存储引擎宕机恢复效率的同时,有效减小了存储引擎的检查点的推进过程中对存储引擎的资源消耗,从而有效减少了对存储引擎的性能影响。下面提供的实施例一和实施例二将详细描述本申请实施例提供的数据处理方案。

参照图1B,示出了本申请实施例一的数据处理方法的步骤流程图。

具体地,本实施例的数据处理方法包括以下步骤:

在步骤S101中,基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点。

在本申请实施例中,所述快照数据可理解为在某一时刻对采用LSM树结构的存储引擎的内存表执行快照操作所产生的数据。具体地,可采用写时复制的方式对采用LSM树结构的存储引擎的内存表执行快照操作。所述转储位点可理解为在转储内存表中的写入数据时所需的位点,也即是转储内存表中的写入数据时所需的位置信息。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,在基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点时,基于所述存储引擎中事务提交所产生的提交数据的快照数据,获取当前时刻全局提交数据的第一最大数据版本号;基于所述存储引擎的内存表的快照数据,获取所述当前时刻所述内存表中的写入数据的第二最大数据版本号;将所述第一最大数据版本号和所述第二最大数据版本号中的较小者作为所述内存表中的写入数据的转储位点。籍此,通过获取第一最大数据版本号和内第二最大数据版本号,并基于第一最大数据版本号和第二最大数据版本号,确定内存表中的写入数据的转储位点,能够准确地确定内存表中的写入数据的转储位点。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一个具体的例子中,所述存储引擎中事务提交所产生的提交数据的快照数据可理解为当前时刻对所述存储引擎中事务提交所产生的提交数据执行快照操作所产生的数据,该数据包括所述存储引擎中事务提交所产生的所有提交数据的数据版本号。因此,可获取到当前时刻全局提交数据的第一最大数据版本号。所述存储引擎的内存表的快照数据可理解为当前时刻对所述存储引擎的内存表执行快照操作所产生的数据,该数据包括所述内存表中所有写入数据的数据版本号。因此,可获取到当前时刻所述内存表中的写入数据的第二最大数据版本号。具体地,可将当前时刻全局提交数据的第一最大数据版本号与当前时刻所述内存表中的写入数据的第二最大数据版本号进行比较,并将两者中的较小者作为内存表中的写入数据的转储位点。此外,所述两者中的较小者还可作为当前LSM树结构的预写日志数据回放点,回放点之前的预写日志数据可以回收。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在步骤S102中,基于所述转储位点,构建用于所述内存表中的写入数据的转储任务。

在本申请实施例中,所述存储引擎可具有多个LSM树结构,每个LSM树结构对应有一个内存表。可针对多个LSM树结构中的每个LSM树结构构建用于所述内存表中的写入数据的转储任务。多个LSM树结构分别对应的多个转储任务可放入任务调度队列中等待转储线程的执行。与此同时,内存表保持工作,可以正常读写,不影响正常的冻结和刷盘。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在步骤S103中,通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

在本申请实施例中,所述内存表中位于所述转储位点之前的写入数据可理解为数据版本号小于或等于上述两者中的较小者的写入数据。所述持久化存储设备可理解为用于持久化存储数据的设备,例如,固态硬盘、磁盘、机械硬盘等。通过将内存表中位于转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,无需对转储至持久化存储设备中不支持读操作的数据层中的数据执行合并操作。这是因为在进行合并操作时,需要将待合并的两层数据层的数据从持久化存储设备读取到内存中,并对读取到内存的两层数据层的数据进行归并排序,再将归并排序后的结果写到持久化存储设备中,而本实施例是将内存表中位于转储位点之前的写入数据,转储至不支持读操作的数据层的,所以不能对转储至持久化存储设备中不支持读操作的数据层中的数据执行合并操作,也即是转储至持久化存储设备中不支持读操作的数据层中的数据不参与合并操作。因此,在兼顾存储引擎宕机恢复效率的同时,有效减小了存储引擎的检查点的推进过程中对存储引擎的资源消耗,从而有效减少了对存储引擎的性能影响。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,在将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层时,扫描所述内存表中位于所述转储位点之前的写入数据;将所述内存表中位于所述转储位点之前的写入数据,按照所述持久化存储设备的数据存储格式写到所述持久化存储设备中不支持读操作的数据层。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一个具体的例子中,扫描所述内存表中数据版本号小于或等于上述两者中的较小者的写入数据,并将所述内存表中数据版本号小于或等于上述两者中的较小者的写入数据,按照所述持久化存储设备的数据存储格式写到所述持久化存储设备中不支持读操作的数据层。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,所述方法还包括:如果在所述内存表的写入数据刷盘时确定所述持久化存储设备中存在所述数据层,则确定所述内存表中刷盘的写入数据是否与所述数据层的数据冗余;如果确定所述内存表中刷盘的写入数据与所述数据层的数据冗余,则删除所述数据层。籍此,在确定内存表中刷盘的写入数据与数据层的数据冗余时可删除不支持读操作的数据层,能够消除持久化存储设备存储的数据的冗余,从而为持久化存储设备节省存储空间。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,所述方法还包括:使用日志文件记录所述转储任务对所述持久化存储设备的所有数据层的元数据的更改操作。籍此,通过使用日志文件记录转储任务对持久化存储设备的所有数据层的元数据的更改操作,能够保证存储引擎宕机恢复时转储任务的完整性。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一个具体的例子中,所述持久化存储设备的数据层的元数据可包括数据层的每个数据文件的标识、单个数据文件中最大的关键字以及最小的关键字、每个数据文件所包含的关键字的区间以及其他元数据。其他元数据包括但不限于:数据存储在持久化存储设备中的物理地址,逻辑地址和对数据进行写入的写入记录,以及物理地址与所属文件的标识的对应关系等。写入记录包括用户对数据进行写入的方式和版本。与正常合并操作类似,转储任务对于持久化存储设备中的数据层的元数据的更改操作也是一个事务过程,需要记录转储任务对于持久化存储设备中的数据层的元数据的更改操作的日志文件,以保证存储引擎宕机恢复时转储任务的完整性。其中,所述日志文件为redo日志文件。redo日志中记录的内容可以包括:更改操作的执行步骤、更改操作执行后的数据内容等。redo日志文件又名重做日志文件,用于确保事务的持久性。通过redo日志文件可以防止在存储引擎宕机,且尚有持久化存储设备的数据层的元数据未写入持久化存储设备时,可以根据redo日志文件进行重做,以恢复存储引擎的内存中未写入持久化存储设备的数据层的元数据,从而保证事务的持久性。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,所述方法还包括:当所述存储引擎宕机恢复时,将所述数据层转换为所述持久化存储设备的最高数据层,以支持读操作,并通过回放所述内存表中位于所述转储位点之后的写入数据对应的日志数据,恢复所述内存表中位于所述转储位点之后的写入数据。其中,所述日志数据可为wal(Write Ahead Log,预写日志)日志数据。籍此,通过将不支持读操作的数据层转换为持久化存储设备中支持读操作的最高数据层,进而可使得通过回放内存表中位于转储位点之后的写入数据对应的日志数据,来恢复内存表中位于转储位点之后的写入数据,有效减小了存储引擎宕机恢复时回放日志数据的数量,从而显著提升了存储引擎宕机恢复的效率。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,在将所述数据层转换为所述持久化存储设备的最高数据层时,通过更改所述数据层的元数据,将所述数据层转换为所述持久化存储设备的最高数据层。其中,所述最高数据层可为持久存储设备的第0层级的数据层。籍此,通过更改不支持读操作的数据层的元数据,能够便捷地将不支持读操作的数据层转换为持久化存储设备的最高数据层。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在一些可选实施例中,所述将所述数据层转换为所述持久化存储设备的最高数据层之前,所述方法还包括:基于所述持久化存储设备的所有数据层的元数据的检查点和用于记录所述转储任务对所述持久化存储设备的所有数据层的元数据的更改操作的日志文件,将所述持久化存储设备的所有数据层的元数据恢复于所述存储引擎的内存中。籍此,通过基于持久化存储设备的所有数据层的元数据的检查点和用于记录转储任务对持久化存储设备的所有数据层的元数据的更改操作的日志文件,将持久化存储设备的所有数据层的元数据恢复于存储引擎的内存中,能够保证存储引擎宕机恢复时转储任务的完整性。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

通过本申请实施例提供的数据处理方法,基于采用LSM树结构的存储引擎的内存表的快照数据,确定内存表中的写入数据的转储位点,并基于转储位点,构建用于内存表中的写入数据的转储任务,再通过执行转储任务,将内存表中位于转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进存储引擎的检查点,与现有的其它方式相比,通过构建并执行转储任务,将内存表中位于转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,无需对转储至持久化存储设备中不支持读操作的数据层中的数据执行合并操作,在兼顾存储引擎宕机恢复效率的同时,有效减小了存储引擎的检查点的推进过程中对存储引擎的资源消耗,从而有效减少了对存储引擎的性能影响。

本实施例的数据处理方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备等。

参照图2A,示出了本申请实施例二的数据处理方法的步骤流程图。

具体地,本实施例的数据处理方法包括以下步骤:

在步骤S201中,基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点。

由于该步骤S201与上述步骤S101类似,在此不再赘述。

在步骤S202中,基于所述转储位点,构建用于所述内存表中的写入数据的转储任务。

由于该步骤S202与上述步骤S102类似,在此不再赘述。

在步骤S203中,通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

由于该步骤S203与上述步骤S103类似,在此不再赘述。

在步骤S204中,如果确定所述持久化存储设备中存在旧的所述不支持读操作的数据层,则删除旧的所述不支持读操作的数据层。

在一个具体的例子中,本实施例提供的数据处理方案的实现主要包含以下几个组成部分:1、构建转储任务,依据内存表当前的快照记录转储位点,并将基于转储位点构建得到的转储任务放入任务调度队列等待执行,如图2B所示。2、转储功能的实现,按照持久化存储设备的数据存储格式将内存表中数据写到持久化存储设备中不支持读操作的数据层M0,并删除旧的数据层M0。3、存储引擎宕机恢复,恢复时先恢复正常的LSM树结构,再将数据层M0恢复成最新的一层数据层L0,再通过回放转储位点之后的写入数据对应的wal日志数据,便可恢复内存表中丢失的写入数据。下面详细介绍每个组成部分的实现细节。1、转储任务的构建。构建转储任务时,获取到全局已提交的数据的最大数据版本号与当前内存表中的写入数据的最大数据版本号,两者取其较小者作为转储的一个位点,也作为当前LSM树结构的日志回放点,回放点之前的wal日志可以回收。与此同时,当前内存表保持工作,可以正常读写,不影响正常的冻结和刷盘。多个LSM树结构分别对应的多个转储任务放入任务调度队列中等待转储线程的执行。2、转储功能的实现。转储时,扫描内存表中数据版本号小于等于上述两者中的较小者的所有数据,并将其按照持久化存储设备的数据存储格式写到数据层M0。同时,若持久化存储设备中存在旧的数据层M0,则将其删掉,数据层M0不支持读操作,从而也不参与数据的合并,如图2B所示。内存表正常刷盘时也需要检查持久化存储设备中是否存在数据层M0,因为刷盘的数据与数据层M0的数据冗余,也需要将数据层M0删除。与正常合并类似,转储任务对于持久化存储设备的数据层的元数据的更改也是一个事务过程,需要记录转储任务对于持久化存储设备的数据层的元数据的更改操作的redo日志,以保证存储引擎宕机恢复时转储任务的完整性。3、存储引擎宕机恢复的实现。恢复时,通过数据层的元数据的检查点和redo日志将持久化存储设备中所有数据层的元数据恢复到内存中,包括数据层M0。之后,将数据层M0的数据添加到持久化存储设备中的最高数据层L0,成为最新的一层数据层L0并将数据层M0删除,这里的添加不涉及读取数据只修改数据层M0的元数据,如图2B所示。再通过构建转储任务时保存的回放位点,将回放位点之后的日志数据回放到内存表中。籍此,通过冗余转储一份内存表中的数据,从而避免频繁刷盘和合并影响存储引擎的性能,并通过恢复数据层M0到最高数据层L0,可以减少回放的日志量,提高恢复效率。其中,转储任务为后台任务,可以在存储引擎的低峰时期多做来推进检查点,以达到更短的恢复时间。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。

在本申请实施例一的基础上,如果确定所述持久化存储设备中存在旧的所述不支持读操作的数据层,则删除旧的所述不支持读操作的数据层,与现有的其它方式相比,如果确定所述持久化存储设备中存在旧的所述不支持读操作的数据层,则删除旧的所述不支持读操作的数据层,能够消除持久化存储设备存储的数据的冗余,从而为持久化存储设备节省存储空间。

本实施例的数据处理方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备等。

参照图3,示出了本申请实施例三中数据处理装置的结构示意图。

本实施例的数据处理装置包括:第一确定模块301,用于基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点;构建模块302,用于基于所述转储位点,构建用于所述内存表中的写入数据的转储任务;转储模块303,用于通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

本实施例的数据处理装置用于实现前述多个方法实施例中相应的数据处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。

参照图4,示出了本申请实施例四中数据处理装置的结构示意图。

本实施例的数据处理装置包括:第一确定模块401,用于基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点;构建模块402,用于基于所述转储位点,构建用于所述内存表中的写入数据的转储任务;转储模块403,用于通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

可选地,所述第一确定模块401,具体用于:基于所述存储引擎中事务提交所产生的提交数据的快照数据,获取当前时刻全局提交数据的第一最大数据版本号;基于所述存储引擎的内存表的快照数据,获取所述当前时刻所述内存表中的写入数据的第二最大数据版本号;将所述第一最大数据版本号和所述第二最大数据版本号中的较小者作为所述内存表中的写入数据的转储位点。

可选地,所述转储模块403,具体用于:扫描所述内存表中位于所述转储位点之前的写入数据;将所述内存表中位于所述转储位点之前的写入数据,按照所述持久化存储设备的数据存储格式写到所述持久化存储设备中不支持读操作的数据层。

可选地,所述装置还包括:第一删除模块404,用于如果确定所述持久化存储设备中存在旧的所述数据层,则删除旧的所述数据层。

可选地,所述装置还包括:第二确定模块406,用于如果在所述内存表的写入数据刷盘时确定所述持久化存储设备中存在所述数据层,则确定所述内存表中刷盘的写入数据是否与所述数据层的数据冗余;第二删除模块407,用于如果确定所述内存表中刷盘的写入数据与所述数据层的数据冗余,则删除所述数据层。

可选地,所述装置还包括:记录模块405,用于使用日志文件记录所述转储任务对所述持久化存储设备的所有数据层的元数据的更改操作。

可选地,所述装置还包括:第一恢复模块409,用于当所述存储引擎宕机恢复时,将所述数据层转换为所述持久化存储设备的最高数据层,以支持读操作,并通过回放所述内存表中位于所述转储位点之后的写入数据对应的日志数据,恢复所述内存表中位于所述转储位点之后的写入数据。

可选地,所述第一恢复模块409,具体用于:通过更改所述数据层的元数据,将所述数据层转换为所述持久化存储设备的最高数据层。

可选地,所述第一恢复模块409之前,所述装置还包括:第二恢复模块408,用于基于所述持久化存储设备的所有数据层的元数据的检查点和用于记录所述转储任务对所述持久化存储设备的所有数据层的元数据的更改操作的日志文件,将所述持久化存储设备的所有数据层的元数据恢复于所述存储引擎的内存中。

本实施例的数据处理装置用于实现前述多个方法实施例中相应的数据处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。

图5为本申请实施例五中电子设备的结构示意图;该电子设备可以包括:

一个或多个处理器501;

计算机可读介质502,可以配置为存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例一或实施例二所述的数据处理方法。

图6为本申请实施例六中电子设备的硬件结构;如图6所示,该电子设备的硬件结构可以包括:处理器601,通信接口602,计算机可读介质603和通信总线604;

其中处理器601、通信接口602、计算机可读介质603通过通信总线604完成相互间的通信;

可选地,通信接口602可以为通信模块的接口,如GSM模块的接口;

其中,处理器601具体可以配置为:基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点;基于所述转储位点,构建用于所述内存表中的写入数据的转储任务;通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

处理器601可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

计算机可读介质603可以是,但不限于,随机存取存储介质(Random AccessMemory,RAM),只读存储介质(Read Only Memory,ROM),可编程只读存储介质(Programmable Read-Only Memory,PROM),可擦除只读存储介质(Erasable ProgrammableRead-Only Memory,EPROM),电可擦除只读存储介质(Electric Erasable ProgrammableRead-Only Memory,EEPROM)等。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含配置为执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写配置为执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络:包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个配置为实现规定的逻辑功能的可执行指令。上述具体实施例中有特定先后关系,但这些先后关系只是示例性的,在具体实现的时候,这些步骤可能会更少、更多或执行顺序有调整。即在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一确定模块、构建模块和转储模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一确定模块还可以被描述为“基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点的模块”。

作为另一方面,本申请还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一或实施例二所描述的数据处理方法。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:基于采用LSM树结构的存储引擎的内存表的快照数据,确定所述内存表中的写入数据的转储位点;基于所述转储位点,构建用于所述内存表中的写入数据的转储任务;通过执行所述转储任务,将所述内存表中位于所述转储位点之前的写入数据,转储至持久化存储设备中不支持读操作的数据层,以推进所述存储引擎的检查点。

在本公开的各种实施方式中所使用的表述“第一”、“第二”、“所述第一”或“所述第二”可修饰各种部件而与顺序和/或重要性无关,但是这些表述不限制相应部件。以上表述仅配置为将元件与其它元件区分开的目的。例如,第一用户设备和第二用户设备表示不同的用户设备,虽然两者均是用户设备。例如,在不背离本公开的范围的前提下,第一元件可称作第二元件,类似地,第二元件可称作第一元件。

当一个元件(例如,第一元件)称为与另一元件(例如,第二元件)“(可操作地或可通信地)联接”或“(可操作地或可通信地)联接至”另一元件(例如,第二元件)或“连接至”另一元件(例如,第二元件)时,应理解为该一个元件直接连接至该另一元件或者该一个元件经由又一个元件(例如,第三元件)间接连接至该另一个元件。相反,可理解,当元件(例如,第一元件)称为“直接连接”或“直接联接”至另一元件(第二元件)时,则没有元件(例如,第三元件)插入在这两者之间。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

相关技术
  • 数据处理方法及装置、电子设备和计算机可读存储介质
  • 数据处理方法、装置、电子设备及计算机可读存储介质
技术分类

06120113034525