一种数据处理的方法及相关装置
未命名
08-01
阅读:159
评论:0
1.本技术实施例涉及计算机技术领域:
:,尤其涉及一种数据处理的方法及相关装置。
背景技术:
::2.后写日志(writebehindlogging,wbl)是针对非易失性内存(non-volatilememory,nvm)而设计的一种新的日志记录及恢复协议。其关键思想是记录数据库哪些部分的数据发生了变化,而不是数据如何发生变化。使用wbl需要在持久化日志之前先持久化事务,日志用于追踪事务修改的数据以供撤销未提交事务。3.zen的无日志策略则是wbl的一种实现方式。zen机制中,将日志信息写入了事务的每一个元组,减少了对于日志的写操作。但是,zen在面对进行数据恢复的场景时,需要对数据库中全表的数据进行两次扫描,来分辨出哪些是未提交完成的事务,从而进行数据回滚。4.由于数据库存储的数据内容较多,因此,对全表的数据进行两次扫描,需要较大的系统开销,数据恢复的时间太长。技术实现要素:5.本技术实施例提供了一种数据处理的方法及相关装置,用于提高数据处理的效率。6.第一方面,本技术实施例提供了一种数据处理的方法,第一设备获取事务表,事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;第一设备根据事务表获取待恢复事务的日志链,其中,事务表中处于undo状态的事务为待恢复事务;第一设备根据待恢复事务的日志链确定待恢复事务的元组的存储地址,以获取待恢复事务的元组;第一设备删除待恢复事务的日志链和元组。7.本技术中,可以通过事务表查询到待恢复事务,并根据该待恢复事务的日志链获取到该待恢复事务的元组,从而不需要对第一设备进行全表扫描,提高了数据恢复、数据处理的效率。另一方面,由于本技术中的日志链,其本身并不承载事务的元组信息,从而可以避免在使用日志链过程中带来额外的写操作的开销,从而相较于日志文件承载了事务元组的预写日志(writeaheadlogging,wal)机制也具有极大的性能优势。8.基于第一方面,一种可选的实施方式中,日志链包括多个串行的链节点,多个串行的链节点之间存在关联关系。9.基于第一方面,一种可选的实施方式中,日志链的存储地址为日志链的链头节点的存储地址。10.基于第一方面,一种可选的实施方式中,第一设备根据事务表获取待恢复事务的日志链,包括:11.第一设备根据事务表,确定处于undo状态的事务为待恢复事务;12.第一设备根据事务表确定待恢复事务的日志链的存储地址;13.第一设备根据待恢复事务的日志链的存储地址,获取待恢复事务的日志链。14.基于第一方面,一种可选的实施方式中,方法应用于主备数据库系统,第一设备为主数据库,第二设备为备数据库,事务表还用于指示事务的提交时间,方法还包括:15.第一设备根据事务表确定增量事务,增量事务的提交时间在主备数据库系统的最新备份时间之后;16.第一设备根据事务表获取增量事务的日志链;17.第一设备根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组;18.第一设备将增量事务的日志链和元组同步至第二设备。19.基于第一方面,一种可选的实施方式中,第一设备根据事务表获取增量事务的日志链,包括:20.第一设备根据事务表确定增量事务的日志链的存储地址;21.第一设备根据增量事务的日志链的存储地址,获取增量事务的日志链。22.第二方面,本技术实施例提供了一种数据处理的方法,其特征在于,方法应用于主备数据库系统,第一设备为主数据库,第二设备为备数据库,方法包括:23.第一设备获取事务表,事务表用于指示事务的提交时间以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;24.第一设备根据事务表确定增量事务,增量事务的提交时间在主备数据库系统最新的数据同步的时间之后;25.第一设备根据事务表获取增量事务的日志链;26.第一设备根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组;27.第一设备将增量事务的日志链和元组同步至第二设备。28.基于第二方面,一种可选的实施方式中,日志链包括多个串行的链节点,多个串行的链节点之间存在关联关系。29.基于第二方面,一种可选的实施方式中,日志链的存储地址为日志链的链头节点的存储地址。30.基于第二方面,一种可选的实施方式中,第一设备根据事务表获取增量事务的日志链,包括:31.第一设备根据事务表确定增量事务的日志链的存储地址;32.第一设备根据增量事务的日志链的存储地址,获取增量事务的日志链。33.第三方面,本技术实施例提供了一种数据处理装置,其特征在于,包括:34.获取单元,用于获取事务表,事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;35.获取单元,还用于根据事务表获取待恢复事务的日志链,其中,事务表中处于undo状态的事务为待恢复事务;36.获取单元,还用于根据待恢复事务的日志链确定待恢复事务的元组的存储地址,以获取待恢复事务的元组;37.删除单元,用于删除待恢复事务的日志链和元组。38.基于第三方面,一种可选的实施方式中,日志链包括多个串行的链节点,多个串行的链节点之间存在关联关系。39.基于第三方面,一种可选的实施方式中,日志链的存储地址为日志链的链头节点的存储地址。40.基于第三方面,一种可选的实施方式中,获取单元具体用于:41.根据事务表,确定处于undo状态的事务为待恢复事务;42.根据事务表确定待恢复事务的日志链的存储地址;43.根据待恢复事务的日志链的存储地址,获取待恢复事务的日志链。44.基于第三方面,一种可选的实施方式中,数据处理装置应用于主备数据库系统,数据处理装置为主数据库,第二设备为备数据库,事务表还用于指示事务的提交时间,数据处理装置还包括确定单元和同步单元,45.确定单元,用于根据事务表确定增量事务,增量事务的提交时间在主备数据库系统的最新备份时间之后;46.获取单元,还用于根据事务表获取增量事务的日志链;47.获取单元,还用于根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组;48.同步单元,用于将增量事务的日志链和元组同步至第二设备。49.基于第三方面,一种可选的实施方式中,获取单元具体用于:50.根据事务表确定增量事务的日志链的存储地址;51.根据增量事务的日志链的存储地址,获取增量事务的日志链。52.第四方面,本技术实施例提供了一种数据处理装置,数据处理装置应用于主备数据库系统,数据处理装置为主数据库,第二设备为备数据库,数据处理装置包括:53.获取单元,用于获取事务表,事务表用于指示事务的提交时间以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;54.确定单元,用于根据事务表确定增量事务,增量事务的提交时间在主备数据库系统最新的数据同步的时间之后;55.获取单元,还用于根据事务表获取增量事务的日志链;56.确定单元,还用于根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组;57.同步单元,用于将增量事务的日志链和元组同步至第二设备。58.基于第四方面,一种可选的实施方式中,日志链包括多个串行的链节点,多个串行的链节点之间存在关联关系。59.基于第四方面,一种可选的实施方式中,日志链的存储地址为日志链的链头节点的存储地址。60.基于第四方面,一种可选的实施方式中,获取单元具体用于:61.根据事务表确定增量事务的日志链的存储地址;62.根据增量事务的日志链的存储地址,获取增量事务的日志链。63.第五方面,本发明实施例提供了一种计算机设备,包括存储器、通信接口及与所述存储器和通信接口耦合的处理器;所述存储器用于存储指令,所述处理器用于执行所述指令,所述通信接口用于在所述处理器的控制下与其他设备进行通信;其中,所述处理器执行所述指令时执行上述任一方面所述的数据处理的方法。64.第六方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述任一方面所述的数据处理的方法。65.第七方面,本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,当其在计算机上运行时,使得计算机执行上述任一方面所述的数据处理的方法。66.从以上技术方案可以看出,本技术实施例具有以下优点:67.本技术公开了一种数据处理的方法及相关装置,第一设备获取事务表,事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;第一设备根据事务表获取待恢复事务的日志链,其中,事务表中处于undo状态的事务为待恢复事务;第一设备根据待恢复事务的日志链确定待恢复事务的元组的存储地址,以获取待恢复事务的元组;第一设备删除待恢复事务的日志链和元组。本技术中,可以通过事务表查询到待恢复事务,并根据该待恢复事务的日志链获取到该待恢复事务的元组,从而不需要对第一设备进行全表扫描,提高了数据恢复、数据处理的效率。另一方面,由于本技术中的日志链,其本身并不承载事务的元组信息,从而可以避免在使用日志链过程中带来额外的写操作的开销,从而相较于日志文件承载了事务元组的预写日志(writeaheadlogging,wal)机制也具有极大的性能优势。附图说明68.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。69.图1为数据库系统中预写日志与后写日志的示意图;70.图2为基于zen系统的架构示意图;71.图3为本技术所提供的日志机制的示意图;72.图4为本技术中的数据处理方法的流程示意图;73.图5为本技术中的主备数据库系统的架构示意图;74.图6为本技术中日志链的结构示意图;75.图7为本技术实施例中数据恢复的场景示意图;76.图8为本技术中的数据同步流程的示意图;77.图9为本技术实施例中主备数据库系统的数据同步的一种场景示意图;78.图10为本技术实施例中主备数据库系统的数据同步的另一场景示意图;79.图11为本技术实施例中日志链机制应用于数据恢复场景和数据同步场景的示意图;80.图12为本技术实施例提供的一种数据处理装置的结构示意图;81.图13为本技术实施例提供的另一种数据处理装置的结构示意图;82.图14为本技术实施例提供的计算机设备一种结构示意图。具体实施方式83.本技术实施例提供了一种数据处理的方法及相关装置,用于提高数据处理的效率。84.下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。85.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。86.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。87.数据库的安全涉及到各方面,数据库中数据的丢失或者被篡改将会带来无法估量的损失,所以数据库的安全尤为重要。目前主要通过数据库的日志(logging)来分析数据库中的数据,然后针对分析结果采取相应的措施,例如数据恢复或数据同步等。88.接下来,先对几种常见的日志机制进行介绍。89.a:预写日志(writeaheadlogging,wal),是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性。在计算机科学中,wal是关系数据库系统中用于提供原子性和持久性的一系列技术。在使用wal的数据库系统中,所有的修改在提交之前都要先写入日志(logging)中。90.日志文件中通常包括redo信息和undo信息。这样做的目的可以通过一个例子来说明。假设一个程序在执行某些操作的过程中机器掉电了,那么在重新启动时,程序可能需要知道当时执行的操作是成功了还是部分成功或者是失败了。如果使用了wal,程序就可以检查日志文件,并对突然掉电时计划执行的操作内容跟实际上执行的操作内容进行比较。在这个比较的基础上,程序就可以决定是撤销已做的操作还是继续完成已做的操作,或者是保持原样。91.但是,wal技术存在的一个问题是,日志文件里已经包含了日志信息和数据信息,同一份数据会在数据库文件和日志文件中各保存一份,数据写了两次,存在写放大的问题。尤其在主备数据库系统的场景下,主数据库设备在将执行数据同步时,wal日志会造成写操作的巨大开销。92.b:后写日志(writebehindlogging,wbl)是针对非易失性内存(non-volatilememory,nvm)数据库而设计的一种新的日志记录及恢复协议。nvm的优点是可字节寻址、接近内存的高性能、顺序访问和随机访问差距不大,并且,当电流关掉后,nvm所存储的数据不会消失。93.请参阅图1,图1为数据库系统中预写日志与后写日志的示意图。如图1所示,wal机制中,每个事务对数据库的修改会先顺序写在wal日志中,事务的数据在持久化之前需要先持久化对应的日志,同时记录新值和旧值以在提交的关键路径上只需要以顺序写的方式持久化日志;而wbl机制与wal机制不同,其关键思想是记录数据库哪些部分的数据发生了变化,而不是数据如何发生变化。使用wbl需要在持久化日志之前先持久化事务,日志用于追踪事务修改的数据以供撤销未提交事务。94.c:zen系统,是一种用于nvm的高吞吐量无日志联机事务处理(onlinetransactionprocessing,oltp)引擎。zen的无日志策略算是wbl的一种实现方式。在zen机制中,将日志信息写入了事务的每一个元组。请参阅图2,图2为基于zen系统的架构示意图。如图2所示,在事务提交时,把在内存中的元组写进nvm中,并更新事务写入的最后一个元组的(dirty-bit,lp)值,代表这个事务数据已经完全持久化。在进行数据库的数据恢复时,会扫描全表检查所有的元组,若某一个事务对应的所有元组的lp位都没有置1,说明该事务没有成功持久化。zen通过在对每个区域扫描的过程中,用ts-commit变量保存当前扫描遇到的最大时间戳,每次遇到lp值为1的元组都会更新时间戳,扫描过程中如果一个元组的时间戳≤ts-commit,则zen认为关联的事务已经提交。如果一个元组的时间戳》ts-commit时,则会放到等待二次扫描的队列,在整个区域扫描完以后,得到最大的ts-commit,然后再去处理等待二次扫描的队列。95.综上所述,上述三种日志机制,都存在一定的缺陷。具体的,对于wal机制,日志文件里已经包含了日志信息和数据信息,同一份数据会在数据库文件和日志文件中各保存一份,因此在执行写操作时会带来额外的重复开销;对于wbl机制,在执行数据恢复后,每次访问都要判断当前访问的数据是否为脏数据,同样带来一定的额外开销;zen在面对进行数据恢复的场景时,需要对数据库中全表的数据进行两次扫描,来分辨出哪些是未提交完成的事务,从而进行数据回滚。由于数据库存储的数据内容较多,因此,对全表的数据进行两次扫描,需要较大的系统开销,数据恢复的时间太长。96.有鉴于此,本技术实施例中,提供了一种日志机制,应用于本技术中的数据处理的方法及相关设备,从而提高数据恢复的效率。请参阅图3,图3为本技术所提供的日志机制的示意图。如图3所示,在zen机制中,将日志信息写入了事务的每一个元组;而本技术所提供的日志机制中,日志信息以“日志链”的形式进行表达,每个事务分别对应一条日志链,并且,事务的元组和日志链并不是融合在一起的,换句话说,事务的元组和日志链存储于不同的存储地址。具体的,每条日志链包括至少一个链节点,而事务的每个元组都会有其对应的一个链节点。即事务的日志链中,每个链节点指示其所对应的元组的存储地址。示例性的,图3中,事务1有3个元组(数据1、数据2和数据3),事务1对应的日志链中包括3个链节点(链节点1、链节点2和链节点3)。其中,链节点1指示出数据1存储于表1中的位置1,链节点2指示出数据2存储于表1中的位置2,链节点3指示出数据3存储于表2中的位置1。97.需要说明的是,本技术中,并不限定日志链的存储位置,一方面可以配置独立的表来对数据库中所有的日志链进行集中存储,从而便于集中对各个事务的日志链进行管理;另一方面,也可以将日志链存储于各个元组所在的表格中,具体此处不做限定。98.本技术的数据处理方法,可以应用于数据库的数据恢复流程,也可以应用于主备数据库系统中的数据同步流程。接下来,首先对本技术中的数据恢复流程进行介绍。请参阅图4,图4为本技术中的数据处理方法的流程示意图。如图4所示,本技术实施例中数据处理的方法包括:99.101.第一设备获取事务表。100.由于nvm具备256b的读写粒度、非对称的读写性能,以及特定的最优并发数等优势,为了更好地实施本技术的数据处理的方法,优选的,可以将本技术的数据处理的方法应用于nvm数据库当中。101.需要说明的是,本技术中的第一设备,即可以是独立的物理服务器数据库,也可以是多个物理服务器构成的服务器集群数据库、分布式系统数据库或主备数据库系统中的主数据库,也还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdeliverynetwork,cdn)、大数据或人工智能平台等基础云计算服务的云服务器数据库,具体此处不做限定。102.以本技术的数据处理方法应用于主备数据库系统为例,请参阅图5,图5为本技术中的主备数据库系统的架构示意图。如图5所示,主数据库(相当于独立的物理服务器数据库)包括空闲空间管理模块、事务表、日志链以及表数据。具体的,本技术所提供的日志机制中,日志信息以“日志链”的形式进行表达,每个事务分别对应一条日志链,并且,事务的元组和日志链并不是融合在一起的,换句话说,事务的元组和日志链存储于不同的存储地址。具体的,每条日志链包括至少一个链节点,而事务的每个元组都会有其对应的一个链节点。即事务的日志链中,每个链节点指示其所对应的元组的存储地址。当事务的元组有多个时,即该事务对应的日志链中也会有与该事务的元组数量相同的链节点,同一个日志链中的每个链节点以串行的方式进行关联,因此当获取某个日志链中的某个链节点时,与其关联的属于同一个日志链中的其他链节点也能够被追溯到,提高了日志链的管理效率。103.第一设备中,当事务创建时,会创建一个元组,用于记录事务的基本信息(data)。事务提交时,则需要先写入该事物对应的日志链的各个链节点,以及写入各个元组。当该事务的日志链的所有链节点和事务的所有元组全部完成持久化之后,完成整个事务提交过程。104.由于数据库(第一设备)中存储有海量的事务,因此,为了对这些事务的日志链进行集中管理、查询,本技术配置了针对于这些日志链的事务表,事务表中存储有第一设备中所有事务的状态以及这些事务对应的日志链的存储地址。第一设备通过获取事务表中事务的状态,可以知道事务是否已经提交,或者,是否需要进行回滚,或者,是否需要进行数据同步;而第一设备通过获取事务的日志链的存储地址,则可以知道这些日志链存储在哪些地方。进一步的,事务表中也还可以指示各个事务的提交时间等。由于日志链包括若干个链节点,本技术中,可以仅每条日志链的链头节点所在的存储地址,作为该日志链的存储地址。而同一条日志链中的各个链节点都是串行关联的,获取到链头节点所在的存储地址,便可以获取整条日志链中的所有关联的链节点。因此,事务表中便不需要将日志链中每个链节点的存储地址都进行记录,节约了存储资源,提高了日志链的管理效率。105.由上可知,数据库(第一设备)中存储的事务的数量是很庞大的,而每个事务都对应一条日志链,因此,本技术中,可以将这些事务的日志链进一步串联起来,每个日志链的链头节点与在先的日志链的尾部相接,使得第一设备中存储的日志链排布清晰,便于管理。为了便于理解,请参阅图6,图6为本技术中日志链的结构示意图。如图6所示,第一设备的事务表中指出两个事务,分别为0x001事务和0x002事务,且都已经完成提交(处于commited状态),0x001事务的链头节点的存储地址为0x001,0x002事务的链头节点的存储地址为0x002。通过事务表所指示的链头节点的存储地址,可以获取到0x001事务的日志链的链头节点,和0x002事务的日志链的链头节点。进一步的,可以通过链头节点获取到与该链头节点串行关联的其他链节点,从而获取到完整的日志链,进而通过日志链中的各个链节点明确事务的每个元组所在的存储位置。如图6中,0x001事务的日志链指示出该事务的元组存储于表(table)a中的位置1a、位置1b、tableb中的位置2a,以及tablec中的位置3a,而0x002事务的日志链指示出该事务的元组存储于tablea中的位置1c和tableb中的位置2b。106.空闲空间管理模块则需要对这些日志链进行管理,当事务回滚后,其对应的日志链会被删除,通过将该日志链的链头节点挪到日志链所在的空闲链的尾部,完成空闲空间的回收。表数据则用于存储事务的元组。107.102.第一设备根据事务表获取待恢复事务的日志链。108.当第一设备发生宕机故障时,对于正在执行持久化的事务,其元组往往不能全部完成持久化。为了保证事务的原子性和持久性,需要对这类中断的、未能将全部的元组进行持久化的事务进行回滚,这类事务即属于undo事务。由于事务表中记录了所有事务的状态,因此,第一设备在获取到该事务表之后,可以筛选出事务表中处于undo状态的事务为待恢复事务。由于事务表还记录了每个事务的日志链的存储地址,因此,第一设备可以根据事务表查找到这些待恢复事务对应的日志链的存储地址,进一步的,第一设备再根据待恢复事务的日志链的存储地址,获取到待恢复事务的日志链。109.103.第一设备根据待恢复事务的日志链确定待恢复事务的元组的存储地址,以获取待恢复事务的元组。110.本技术中,由于日志链中的每个链节点,都指示了事务的一个元组的存储地址。因此,第一设备在获取到待恢复事务的日志链之后,根据待恢复事务的日志链中所有链节点的指示,获取到待恢复事务的所有元组。111.104.第一设备删除待恢复事务的日志链和元组。112.第一设备删除待恢复事务的日志链和元组,便完成了针对于本次的数据恢复流程。113.为了便于理解,请参阅图7,图7为本技术实施例中数据恢复的场景示意图。如图7所示,宕机后的数据恢复场景中,事务表指示了编号为0x004的事务的状态为“active”,即标识该事务处于undo状态。而根据事务0x004的日志链的指示,可以确定其位于表1中的位置1d的元组未能完成持久化,因此,需要将该事务的日志链和所有元组进行删除,完成事务回滚。114.本技术中,可以通过事务表查询到待恢复事务,并根据该待恢复事务的日志链获取到该待恢复事务的元组,从而不需要对第一设备进行全表扫描,提高了数据恢复、数据处理的效率。另一方面,由于本技术中的日志链,其本身并不承载事务的元组信息,从而可以避免在使用日志链过程中带来额外的写操作的开销,从而相较于日志文件承载了事务元组的wal机制也具有极大的性能优势。115.接下来,对本技术中的数据同步流程进行介绍。在主备数据库系统中,主数据库设备负责读操作和写操作,而备数据库设备则只负责读操作。因此,在主数据库设备完成事务的写操作之后,需要将数据同步至备数据库设备当中。本技术中的日志链机制,同样可以适用于主备数据库系统的数据同步流程。下面以第一设备为主数据库设备,第二设备为备数据库设备为例,进行说明。请参阅图8,图8为本技术中的数据处理方法中用于数据同步流程的示意图。如图8所示,本技术实施例中数据同步的方法包括:116.201.第一设备获取事务表。117.步骤201与前述图4所示步骤101相类似,具体此处不再进行赘述。需要说明的是,为了后续便于确定增量事务,在数据同步的流程中,事务表中应当记录每个事务的提交时间。118.202.第一设备根据事务表确定增量事务。119.在实际应用中,主备数据库系统一般是需要定期执行数据同步的,即定期将第一设备中新增的事务的元组同步至备数据库系统,对于那些在最新一次执行数据同步之后新增的事务,即为本技术中的增量事务,这些事务是还未执行数据同步的。由于事务表中记录了每个事务的提交时间,因此,第一设备便可以根据事务表,将提交时间在主备数据库系统最新的数据同步时间之后的事务确定为增量事务。120.203.第一设备根据事务表获取增量事务的日志链。121.步骤203与前述图4所示步骤102相类似,具体此处不再进行赘述。122.204.第一设备根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组。123.步骤204与前述图4所示步骤103相类似,具体此处不再进行赘述。124.205.第一设备将增量事务的日志链和元组同步至第二设备。125.请参阅图9,图9为本技术实施例中主备数据库系统的数据同步的一种场景示意图。如图9所示,第一设备将增量事务的日志链和元组发送至第二设备,由第二设备将增量事务的日志链和元组持久化到本地,完成数据同步流程。126.进一步的,请参阅图10,图10为本技术实施例中主备数据库系统的数据同步的另一场景示意图。如图10所示,本技术中,并不限定参与数据同步的数据库设备的数量,主数据库设备将增量事务的元组和日志链同步至多个备数据库设备,即第二设备可以指代多个备数据库设备。127.wal机制中,日志文件包括了事务的元组,因此在数据同步的过程中,持久化日志文件和事务的元组,则相当于将事务的元组写入了两次,数据同步的开销极大;wbl机制中,则通过扫全表重新生成wal用于同步。由于事务写入数据的位置是随机的,要组织wal日志,必须扫描全表,开销很大,性能不好;zen机制中,额外在内存中组织日志,这种做法几乎不影响性能,但数据库宕机以后,内存日志会丢失,主备机想要重新同步代价很大。本技术中,可以通过事务表查询到增量事务,并根据该增量事务的日志链获取到该增量事务的元组,从而不需要对第一设备进行全表扫描,提高了数据同步、数据处理的效率。另一方面,由于本技术中的日志链,其本身并不承载事务的元组信息,从而可以避免在备数据库持久化日志链的过程中带来额外的写操作的开销,从而相较于日志文件承载了事务元组的wal机制也具有极大的性能优势。128.在实际应用中,上述数据恢复方法和数据同步方法即可以互相独立,也可以配合使用。即数据库设备可以只采用图4所示的步骤101至步骤104来进行数据恢复,或者,可以只采用图8所示的步骤201至步骤205来进行数据同步,或者,也可以在数据库系统中集成上述数据恢复方法和数据同步方法。为了便于理解,请参阅图11,图11为本技术实施例中日志链机制应用于数据恢复场景和数据同步场景的示意图。如图11所示,数据恢复场景和数据同步场景中,可以共享同一份事务表和日志链,即事务表以及事务的日志链可以用于数据恢复,也可以用于数据同步。129.为了更好的实施本技术实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体的,请参阅图12,图12为本技术实施例提供的一种数据处理装置的结构示意图,数据处理装置包括:130.获取单元301,用于获取事务表,事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;131.获取单元301,还用于根据事务表获取待恢复事务的日志链,其中,事务表中处于undo状态的事务为待恢复事务;132.获取单元301,还用于根据待恢复事务的日志链确定待恢复事务的元组的存储地址,以获取待恢复事务的元组;133.删除单元302,用于删除待恢复事务的日志链和元组。134.在一种可能的设计中,日志链包括多个串行的链节点,多个串行的链节点之间存在关联关系。135.在一种可能的设计中,日志链的存储地址为日志链的链头节点的存储地址。136.在一种可能的设计中,获取单元301具体用于:137.根据事务表,确定处于undo状态的事务为待恢复事务;138.根据事务表确定待恢复事务的日志链的存储地址;139.根据待恢复事务的日志链的存储地址,获取待恢复事务的日志链。140.在一种可能的设计中,数据处理装置应用于主备数据库系统,数据处理装置为主数据库,第二设备为备数据库,事务表还用于指示事务的提交时间,数据处理装置还包括确定单元303和同步单元304,141.确定单元303,用于根据事务表确定增量事务,增量事务的提交时间在主备数据库系统的最新备份时间之后;142.获取单元301,还用于根据事务表获取增量事务的日志链;143.获取单元301,还用于根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组;144.同步单元304,用于将增量事务的日志链和元组同步至第二设备。145.在一种可能的设计中,获取单元301具体用于:146.根据事务表确定增量事务的日志链的存储地址;147.根据增量事务的日志链的存储地址,获取增量事务的日志链。148.请参阅图13,图13为本技术实施例提供的另一种数据处理装置的结构示意图,数据处理装置应用于主备数据库系统,数据处理装置为主数据库,第二设备为备数据库,数据处理装置包括:149.获取单元401,用于获取事务表,事务表用于指示事务的提交时间以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;150.确定单元402,用于根据事务表确定增量事务,增量事务的提交时间在主备数据库系统最新的数据同步的时间之后;151.获取单元401,还用于根据事务表获取增量事务的日志链;152.确定单元402,还用于根据增量事务的日志链确定增量事务的元组的存储地址,以获取增量事务的元组;153.同步单元403,用于将增量事务的日志链和元组同步至第二设备。154.基于第四方面,一种可选的实施方式中,日志链包括多个串行的链节点,多个串行的链节点之间存在关联关系。155.基于第四方面,一种可选的实施方式中,日志链的存储地址为日志链的链头节点的存储地址。156.基于第四方面,一种可选的实施方式中,获取单元401具体用于:157.根据事务表确定增量事务的日志链的存储地址;158.根据增量事务的日志链的存储地址,获取增量事务的日志链。159.本技术实施例还提供了一种计算机设备,请参阅图14,图14为本技术实施例提供的计算机设备一种结构示意图,计算机设备上可以部署有图12或图13对应实施例中所描述的数据处理装置,用于实现图4或图8对应实施例的方法.具体的,计算机设备由一个或多个服务器实现,计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算机设备中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在计算机设备500上执行存储介质530中的一系列指令操作。160.计算机设备还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。161.本技术实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图4或图8所示实施例描述的方法。162.本技术实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述图4或图8所示实施例描述的方法。163.本技术实施例提供的图像处理装置具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使芯片执行上述图4或图8所示实施例描述的方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)等。164.所另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。165.通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本技术而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、rom、ram、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本技术各个实施例所述的方法。166.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。167.所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。当前第1页12当前第1页12
技术特征:
1.一种数据处理的方法,其特征在于,包括:第一设备获取事务表,所述事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,所述日志链包括至少一个链节点,每个所述链节点指示事务中的一个元组的存储地址;所述第一设备根据所述事务表获取待恢复事务的日志链,其中,所述事务表中处于undo状态的事务为所述待恢复事务;所述第一设备根据所述待恢复事务的日志链确定所述待恢复事务的元组的存储地址,以获取所述待恢复事务的元组;所述第一设备删除所述待恢复事务的日志链和元组。2.根据权利要求1所述的方法,其特征在于,所述日志链包括多个串行的链节点,所述多个串行的链节点之间存在关联关系。3.根据权利要求2所述的方法,其特征在于,所述日志链的存储地址为所述日志链的链头节点的存储地址。4.根据权利要求1、2或3所述的方法,其特征在于,所述第一设备根据所述事务表获取待恢复事务的日志链,包括:所述第一设备根据所述事务表,确定处于undo状态的事务为待恢复事务;所述第一设备根据所述事务表确定所述待恢复事务的日志链的存储地址;所述第一设备根据所述待恢复事务的日志链的存储地址,获取所述待恢复事务的日志链。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法应用于主备数据库系统,所述第一设备为主数据库,第二设备为备数据库,所述事务表还用于指示事务的提交时间,所述方法还包括:所述第一设备根据所述事务表确定增量事务,所述增量事务的提交时间在所述主备数据库系统的最新备份时间之后;所述第一设备根据所述事务表获取所述增量事务的日志链;所述第一设备根据所述增量事务的日志链确定所述增量事务的元组的存储地址,以获取所述增量事务的元组;所述第一设备将所述增量事务的日志链和元组同步至所述第二设备。6.根据权利要求5所述的方法,其特征在于,所述第一设备根据所述事务表获取所述增量事务的日志链,包括:所述第一设备根据所述事务表确定所述增量事务的日志链的存储地址;所述第一设备根据所述增量事务的日志链的存储地址,获取所述增量事务的日志链。7.一种数据处理的方法,其特征在于,所述方法应用于主备数据库系统,第一设备为主数据库,第二设备为备数据库,所述方法包括:所述第一设备获取事务表,所述事务表用于指示事务的提交时间以及日志链的存储地址,每个事务对应一个日志链,所述日志链包括至少一个链节点,每个所述链节点指示事务中的一个元组的存储地址;所述第一设备根据事务表确定增量事务,所述增量事务的提交时间在所述主备数据库系统最新的数据同步的时间之后;
所述第一设备根据所述事务表获取所述增量事务的日志链;所述第一设备根据所述增量事务的日志链确定所述增量事务的元组的存储地址,以获取所述增量事务的元组;所述第一设备将所述增量事务的日志链和元组同步至所述第二设备。8.根据权利要求7所述的方法,其特征在于,所述日志链包括多个串行的链节点,所述多个串行的链节点之间存在关联关系。9.根据权利要求8所述的方法,其特征在于,所述日志链的存储地址为所述日志链的链头节点的存储地址。10.根据权利要求7、8或9所述的方法,其特征在于,所述第一设备根据所述事务表获取所述增量事务的日志链,包括:所述第一设备根据所述事务表确定所述增量事务的日志链的存储地址;所述第一设备根据所述增量事务的日志链的存储地址,获取所述增量事务的日志链。11.一种数据处理装置,其特征在于,包括:获取单元,用于获取事务表,所述事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,所述日志链包括至少一个链节点,每个所述链节点指示事务中的一个元组的存储地址;所述获取单元,还用于根据所述事务表获取待恢复事务的日志链,其中,所述事务表中处于undo状态的事务为所述待恢复事务;所述获取单元,还用于根据所述待恢复事务的日志链确定所述待恢复事务的元组的存储地址,以获取所述待恢复事务的元组;删除单元,用于删除所述待恢复事务的日志链和元组。12.根据权利要求11所述的数据处理装置,其特征在于,所述日志链包括多个串行的链节点,所述多个串行的链节点之间存在关联关系。13.根据权利要求12所述的数据处理装置,其特征在于,所述日志链的存储地址为所述日志链的链头节点的存储地址。14.根据权利要求11、12或13所述的数据处理装置,其特征在于,所述获取单元具体用于:根据所述事务表,确定处于undo状态的事务为待恢复事务;根据所述事务表确定所述待恢复事务的日志链的存储地址;根据所述待恢复事务的日志链的存储地址,获取所述待恢复事务的日志链。15.根据权利要求11至14中任一项所述的数据处理装置,其特征在于,所述数据处理装置应用于主备数据库系统,所述数据处理装置为主数据库,第二设备为备数据库,所述事务表还用于指示事务的提交时间,所述数据处理装置还包括确定单元和同步单元,所述确定单元,用于根据所述事务表确定增量事务,所述增量事务的提交时间在所述主备数据库系统的最新备份时间之后;所述获取单元,还用于根据所述事务表获取所述增量事务的日志链;所述获取单元,还用于根据所述增量事务的日志链确定所述增量事务的元组的存储地址,以获取所述增量事务的元组;所述同步单元,用于将所述增量事务的日志链和元组同步至所述第二设备。
16.根据权利要求15所述的数据处理装置,其特征在于,所述获取单元具体用于:根据所述事务表确定所述增量事务的日志链的存储地址;根据所述增量事务的日志链的存储地址,获取所述增量事务的日志链。17.一种数据处理装置,其特征在于,所述数据处理装置应用于主备数据库系统,所述数据处理装置为主数据库,第二设备为备数据库,所述数据处理装置包括:获取单元,用于获取事务表,所述事务表用于指示事务的提交时间以及日志链的存储地址,每个事务对应一个日志链,所述日志链包括至少一个链节点,每个所述链节点指示事务中的一个元组的存储地址;确定单元,用于根据事务表确定增量事务,所述增量事务的提交时间在所述主备数据库系统最新的数据同步的时间之后;所述获取单元,还用于根据所述事务表获取所述增量事务的日志链;所述确定单元,还用于根据所述增量事务的日志链确定所述增量事务的元组的存储地址,以获取所述增量事务的元组;同步单元,用于将所述增量事务的日志链和元组同步至所述第二设备。18.根据权利要求17所述的数据处理装置,其特征在于,所述日志链包括多个串行的链节点,所述多个串行的链节点之间存在关联关系。19.根据权利要求18所述的数据处理装置,其特征在于,所述日志链的存储地址为所述日志链的链头节点的存储地址。20.根据权利要求17、18或19所述的数据处理装置,其特征在于,所述获取单元具体用于:根据所述事务表确定所述增量事务的日志链的存储地址;根据所述增量事务的日志链的存储地址,获取所述增量事务的日志链。21.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器与所述存储器耦合,所述存储器,用于存储程序;所述处理器,用于执行所述存储器中的程序,使得所述计算机设备执行如权利要求1至6中任一项所述的方法,或者,使得所述计算机设备执行如权利要求7至10中任一项所述的方法。22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的方法,或者,所述计算机程序被处理器执行时实现如权利要求7至10中任一项所述的方法。23.一种计算机程序产品,其特征在于,所述计算机程序产品中存储有计算机可读指令,当所述计算机可读指令被处理器执行时实现如权利要求1至6中任一项所述的方法,或者,当所述计算机可读指令被处理器执行时实现如权利要求7至10中任一项所述的方法。
技术总结
本申请公开了一种数据处理的方法及相关装置,第一设备获取事务表,事务表用于指示事务的状态以及日志链的存储地址,每个事务对应一个日志链,日志链包括至少一个链节点,每个链节点指示事务中的一个元组的存储地址;第一设备根据事务表获取待恢复事务的日志链,其中,事务表中处于undo状态的事务为待恢复事务;第一设备根据待恢复事务的日志链确定待恢复事务的元组的存储地址,以获取待恢复事务的元组;第一设备删除待恢复事务的日志链和元组。本申请中,可以通过事务表查询到待恢复事务,并根据该待恢复事务的日志链获取到该待恢复事务的元组,从而不需要对第一设备进行全表扫描,提高了数据恢复、数据处理的效率。数据处理的效率。数据处理的效率。
技术研发人员:柴云鹏 任波 骆远辉 黄人煌 王元桢
受保护的技术使用者:中国人民大学
技术研发日:2022.01.19
技术公布日:2023/7/31
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种对甘蔗渣进行快速炭化的方法 下一篇:免疫组织化学染色影像的分析方法与流程
