CN115905402A - 处理事务日志的方法及装置 - Google Patents
处理事务日志的方法及装置 Download PDFInfo
- Publication number
- CN115905402A CN115905402A CN202211172899.6A CN202211172899A CN115905402A CN 115905402 A CN115905402 A CN 115905402A CN 202211172899 A CN202211172899 A CN 202211172899A CN 115905402 A CN115905402 A CN 115905402A
- Authority
- CN
- China
- Prior art keywords
- log
- sequence number
- transaction
- sequence
- sql
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012545 processing Methods 0.000 title claims abstract description 39
- 238000005192 partition Methods 0.000 claims description 47
- 230000008859 change Effects 0.000 claims description 16
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 230000004075 alteration Effects 0.000 claims 2
- 238000012217 deletion Methods 0.000 description 18
- 230000037430 deletion Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 15
- 238000003780 insertion Methods 0.000 description 14
- 230000037431 insertion Effects 0.000 description 14
- 101100004188 Arabidopsis thaliana BARD1 gene Proteins 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101710179734 6,7-dimethyl-8-ribityllumazine synthase 2 Proteins 0.000 description 1
- 101710186609 Lipoyl synthase 2 Proteins 0.000 description 1
- 101710122908 Lipoyl synthase 2, chloroplastic Proteins 0.000 description 1
- 101710101072 Lipoyl synthase 2, mitochondrial Proteins 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种处理事务日志的方法及装置。该方法包括:针对分布式数据库执行一个事务,其中,该事务中包括第一操作及第二操作;确定第一序号,以及第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;生成第一操作对应的第一日志以及第二操作对应的第二日志;在第一日志中携带第一序号,在第二日志中携带第二序号;将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。通过本申请能够根据日志流中的日志得到事务中的各个操作之间的先后顺序,从而能够正确地得到事务的事务数据。
Description
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种处理事务日志的方法及装置。
背景技术
数据库会将每个插入、更改、删除等操作记录到日志里。为了保证数据库系统中数据操作的原子性和持久性,会持久化一个事务的日志到日志流中。后续,通过解析日志可以获取到数据库完整的数据变更历史,从而实现数据同步。对于传统的单机数据库,例如Oracle、MySQL等,全局只有一个日志流,因此通过顺序获取和解析日志流即可还原出事务的提交历史记录。
目前出现了采用多日志流的分布式数据库比如OceanBase等。在采用多日志流的分布式数据库中,一个事务对应的所有日志会被写入分布式数据库中的多个日志流中,不同日志流可能会分布于多个机器节点。
在很多场景下,一个事务中的各个操作之间是有先后顺序的,因此,在得到该事务的事务数据时需要考虑此种先后顺序,才能正确地进行数据同步。但是目前并没有相关的有效解决方案。因此,如何根据日志流中的日志得到事务中的各个操作之间的先后顺序,进而基于此种顺序来正确地得到事务的事务数据,是一个亟待解决的问题。
发明内容
本说明书一个或多个实施例提供了一种处理事务日志的方法及装置,能够根据日志流中的日志得到事务中的各个操作之间的先后顺序,从而能够正确地得到事务的事务数据。
根据第一方面,提出了一种处理事务日志的方法,其中,事务为:访问和/或操作数据的数据库操作序列;该方法应用于采用多日志流的分布式数据库;
所述方法包括:
针对分布式数据库执行一个事务;其中,该事务中包括第一操作及第二操作;
确定第一序号,以及确定第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;
生成第一操作对应的第一日志以及第二操作对应的第二日志;
在第一日志中携带第一序号,在第二日志中携带第二序号;
将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
其中,触发生成所述事务的结构化查询语言(SQL)包括第一SQL以及第二SQL;每一条SQL对应事务中的至少一个操作;
所述第一操作是第一SQL对应的任意一个操作,所述第二操作是第二SQL对应的任意一个操作;第一操作及第二操作之间的执行先后顺序等于第一SQL以及第二SQL之间的执行先后顺序;
所述确定第一序号以及第二序号,包括:
生成在所述事务内唯一的、第一SQL对应的第一语句序号,生成在所述事务内唯一的、第二SQL对应的第二语句序号;其中,第一语句序号与第二语句序号之间的先后顺序与第一SQL以及第二SQL之间的执行先后顺序相同;以及
将第一语句序号作为所述第一序号,将第二语句序号作为所述第二序号。
其中,触发生成所述事务的结构化查询语言(SQL)中包括对应于更改(update)操作的第三SQL;
所述分布式数据库中的一个数据表包括第一分区表以及第二分区表;
在执行所述事务时,进一步包括:将第三SQL对应的更改操作变更为所述第一操作及所述第二操作,以便将第一分区表中的数据移动到第二分区表中;其中,所述第一操作为变更出的删除(delete)操作,所述第二操作为变更出的插入(insert)操作;
所述确定第一序号以及第二序号,包括:
设置所述第一序号在先,且所述第二序号在后。
在执行所述事务时,进一步包括:先调度执行第一操作,再调度执行第二操作;
所述设置所述第一序号在先且所述第二序号在后,包括:根据执行第一操作的时间设置所述第一序号,并且,根据执行所述第二操作的时间设置所述第二序号。
其中,所述第一分区表及第二分区表位于同一个机器节点中;
所述根据执行第一操作的时间设置所述第一序号,包括:将所述第一序号设置为该机器节点在执行第一操作时的本地时间;
所述根据执行所述第二操作的时间设置所述第二序号,包括:将所述第二序号设置为该机器节点在执行所述第二操作时的本地时间。
其中,所述第一分区表及第二分区表分别位于不同的第一机器节点及第二机器节点中;
所述根据执行第一操作的时间设置所述第一序号,包括:将所述第一序号设置为第一机器节点在执行第一操作时的本地时间;
该方法进一步包括:将第一机器节点在执行第一操作时的本地时间发送给第二机器节点;
所述根据执行所述第二操作的时间设置所述第二序号,包括:
在第二机器节点接收到的该第一机器节点中的本地时间的基础上,推高第二机器节点中的逻辑时间;以及
将所述第二序号设置为在第二机器节点执行所述第二操作时的推高后的逻辑时间。
其中,触发生成各个事务的各个SQL中包括多个所述第三SQL,根据每一个第三SQL变更出的所述第一操作及所述第二操作用于将一个分区表中的数据移动到另一个分区表中;
所述先调度执行第一操作再调度执行第二操作,包括:调度第一机器节点执行完本节点中所有第三SQL变更出的所有第一操作;然后再调度第二机器节点执行本节点中所有第三SQL变更出的所有第二操作;
相应地,所述将第一机器节点执行第一操作时的本地时间发送给第二机器节点,包括:
得到第一机器节点执行变更出的所有第一操作时的所有本地时间;
从该所有本地时间中选取最大的本地时间;
将选取出的最大的本地时间发送给第二机器节点。
根据第二方面,提出了一种处理事务日志的方法,其中,事务为:访问和/或操作数据的数据库操作序列;该方法应用于采用多日志流的分布式数据库;
所述方法包括:
从所述分布式数据库中获取至少两个日志流;
从任意两个日志流中得到第一日志以及第二日志;其中,第一日志中携带有第一序号,第二日志中携带有第二序号;
根据第一日志中携带的第一序号以及第二日志中携带的第二序号,得到第一日志对应的第一操作与第二日志对应的第二操作之间的执行先后顺序;其中,第一序号以及第二序号之间的先后顺序与第一操作以及第二操作之间的执行先后顺序相同;
根据第一操作以及第二操作之间的执行先后顺序,得到第一操作及第二操作所属事务对应的事务数据。
所述序号包括:SQL的语句序号;相应地,所述第一操作与第二操作对应不同的SQL;
和/或,
所述序号包括:时间值;相应地,所述第一操作对应于根据执行更改操作的SQL所变更出的删除(delete)操作,所述第二操作对应于根据执行更改操作的SQL所变更出的插入(insert)操作。
根据第三方面,提供了处理事务日志的装置,其中,包括:
事务执行模块,配置为针对所述分布式数据库执行一个事务;其中,该事务中包括第一操作及第二操作;
序号确定模块,配置为确定第一序号,以及确定第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;
日志生成模块,配置为生成第一操作对应的第一日志以及第二操作对应的第二日志;
写日志模块,配置为在第一日志中携带第一序号,在第二日志中携带第二序号;将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
根据第四方面,提供了处理事务日志的装置,该装置包括:
日志流获取模块,配置为从所述分布式数据库中获取至少两个日志流;
日志获取模块,配置为从任意两个日志流中得到第一日志以及第二日志;其中,第一日志中携带有第一序号,第二日志中携带有第二序号;
操作顺序确定模块,配置为根据第一日志中携带的第一序号以及第二日志中携带的第二序号,得到第一日志对应的第一操作与第二日志对应的第二操作之间的执行先后顺序;其中,第一序号以及第二序号之间的先后顺序与第一操作以及第二操作之间的执行先后顺序相同;
同步处理模块,配置为根据第一操作以及第二操作之间的执行先后顺序,得到第一操作及第二操作所属事务对应的事务数据。
根据第五方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如上所述的方法。
根据第六方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如上所述的方法。
由以上技术方案可以看出,本说明书一个或多个实施例的组合,至少具备以下优点:
1、操作对应的日志中携带有序号,因为序号之间的先后顺序与该各个日志对应的各个操作之间的执行先后顺序相同,也就是说,即使一个事务的各个操作的日志被写入不同的日志流中,仍然可以依据序号,来确定日志对应的操作之间的执行先后顺序,这样,后续就可以按照此种先后顺序来组装事务的数据,从而能够正确地得到事务的事务数据,保证数据同步的正确性。
2、针对一个事务对应的多个SQL之间有顺序要求的情况,能够在日志中携带语句序号,从而能够保证一个事务中在先执行的SQL的所有操作的顺序先于该事务中在后执行的SQL的所有操作的顺序,从而能够基于正确的SQL之间的执行顺序来得到事务的事务数据,保证数据同步的正确性。
3、针对一个更改操作所变更出的删除操作及插入操作之间有顺序要求的情况,能够在日志中携带操作序号比如时间值,保证变更出的删除操作的顺序先于变更出的插入操作的顺序,从而能够基于正确的操作执行顺序来得到事务的事务数据,保证数据同步的正确性。
4、当涉及到的两个分区表位于不同机器节点中时,可以利用本地时间以及逻辑时间来推高时间值,以便得到日志中携带的序号,从而能够保证即使在不同机器节点中执行变更出的删除操作及变更出的插入操作时,变更出的删除操作对应的时间值即序号也能先于变更出的插入操作对应的时间值即序号。
5、对于一个机器节点中的所有变更出的删除操作可以集中执行,从而只将其中的一个最大时间值发送给另一个机器节点,而无需发送执行该多个删除操作的多个本地时间,节约了系统的处理资源。
6、每个分布式事务内支持按照严格语句序输出,整体对外表现同单机数据库一致,具有较好的兼容性和可理解性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本说明书实施例的示例性系统架构图;
图2为本说明书一个实施例提供的处理事务日志的方法流程图;
图3为本说明书实施例中SQL及其对应的操作及日志的示意图;
图4为本说明书实施例中各日志被写入多日志流的示意图;
图5为本说明书实施例中将携带语句序号的日志写入日志流的示意图;
图6为本说明书实施例中将携带操作序号的删除操作的日志及携带操作序号的插入操作的日志写入日志流的示意图;
图7为本说明书另一个实施例提供的处理事务日志的方法流程图;
图8为本说明书一个实施例提供的处理事务日志的装置的结构图。
图9为本说明书另一个实施例提供的处理事务日志的装置的结构图。
具体实施方式
首先,对本说明书实施例中涉及的事务的概念进行说明。
事务(Transaction)是指访问和/或操作数据的数据库操作序列。在计算机术语中指访问并可能更改数据库中数据项的一个程序执行单元,由事务开始到事务结束之间执行的全体操作组成,这些全体操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。比如转账事务可以由对一个账号的余额进行增加,以及对另一个账号的余额进行减少组成。
一个事务往往对应多个操作,各个操作之间是有先后顺序的,比如,在一个事务中,在执行对账户A减少100元的操作11之后,才能执行对账户B增加100元的操作12。不同操作对应的日志很可能被写入不同的日志流中。但是,在多日志流的分布式数据库中,日志被写入日志流中的写入顺序是随机的,且多个日志流没有全局时序。比如,上述操作12的日志12先被写入机器节点12中的日志流12中,之后操作11的日志11才被写入机器节点11中的日志流11中,后续,在进行数据同步时,可以从日志流11中获取操作11的日志11,从日志流12中获取操作12的日志12,但是却无法确定日志11与日志12对应的操作之间的先后顺序,因此,可能会导致同步的结果为:在该事务中,日志12对应的操作12在先,日志11对应的操作11在后,从而导致出错。
下面结合附图,对本说明书提供的方案进行描述。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
图1示出了可以应用本说明书实施例的示例性系统架构。该系统主要包括:事务执行者、分布式数据库和数据同步设备。
分布式数据库,采用多日志流。并且,可以采用多个机器节点作为运行分布式数据库软件的实例。
事务执行者,是对分布式数据库进行操作的设备,比如在分布式数据库中进行插入(insert)、删除(delete)以及更改(update)操作,将一个事务中各个操作对应的所有日志写入分布式数据库中的至少两个日志流中,并采用本说明书实施例中提供的处理事务日志的方法在每一个日志中携带序号。
数据同步设备,可以从分布式数据库中拉取日志流,采用本说明书实施例中提供的处理事务日志的方法进行处理,得到对应正确操作顺序的事务内的事务数据,从而基于事务中各个操作之间的依赖关系或顺序进行数据同步。
事务执行者、数据同步设备与分布式数据库之间可以通过网络进行交互,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
事务执行者或者数据同步设备,可以是单一服务器,也可以是多个服务器构成的服务器群组,还可以是云服务器。云服务器又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决传统物理主机与虚拟专用服务器(VPs,Virtual PrivateServer)服务中存在的管理难度大,服务扩展性弱的缺陷。除此之外也可以是具备较强计算能力的计算机终端。
应该理解,图1中的事务执行者、分布式数据库、机器节点以及数据同步设备的数目仅仅是示意性的。根据实现需要,可以具有任意数目的分布式数据库、机器节点以及数据同步设备。
可见,在本说明书实施例中,涉及到事务执行者执行的处理事务日志的方法,包括:对分布式数据执行一个事务的操作并将该事务的各日志写入多个日志流的处理。同时,还涉及到数据同步设备执行的处理事务日志的方法,包括:根据日志流中携带的日志获取数据库完整的数据变更历史,从而实现数据同步的数据同步设备处理。下面通过不同的实施例分别进行说明。
图2为本说明书实施例提供的处理事务日志的方法流程图。该方法的执行主体为上述事务执行者,该方法应用于采用多日志流的分布式数据库。可以理解,该方法也可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。参见图2,该方法包括:
步骤201:针对分布式数据库执行一个事务;其中,该事务中包括第一操作及第二操作。
步骤203:确定第一序号,以及第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同。
步骤205:生成第一操作对应的第一日志以及第二操作对应的第二日志。
步骤207:在第一日志中携带第一序号,在第二日志中携带第二序号。
步骤209:将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
可见,在上述图2所示的流程中,操作对应的日志中携带有序号,因为序号之间的先后顺序与该各个日志对应的各个操作之间的执行先后顺序相同,也就是说,即使一个事务的各个操作的日志被写入不同的日志流中,仍然可以依据序号,来确定日志对应的操作之间的执行先后顺序,这样,后续就可以按照此种先后顺序来组装事务的数据,从而能够正确地得到事务的事务数据,保证数据同步的正确性。
下面对图2所示的每一个步骤分别进行说明。
首先对于步骤201:针对分布式数据库执行一个事务,其中,该事务包括第一操作及第二操作。
如前所述,事务(Transaction)是指访问和/或操作数据的数据库操作序列。而事务是由SQL(Structured Query Language,结构化查询语言)触发生成的。SQL对应的操作可以包括:数据的插入、查询、更改或者删除;数据库模式创建和修改;以及数据访问控制。当针对分布式数据库发起了SQL时,则会触发生成分布式数据库中的事务,一条SQL对应1个或者多个操作。
在本说明书的一个实施例中,处理事务日志的方法可以应用于如下两种业务场景中:
业务场景A:事务对应的各SQL之间有执行顺序的要求,需要根据各SQL之间的执行上的先后顺序进行数据同步。
业务场景B:分布式数据库开启了行移动(row movement)功能,更改(update)操作变更出的删除(delete)操作以及插入(insert)操作之间有执行顺序的要求,需要根据变更出的删除(delete)操作以及插入(insert)操作之间的执行上的先后顺序进行数据同步。
下面对每一个业务场景分别进行说明。
对于业务场景A:事务对应的各SQL之间有执行顺序的要求,需要根据各SQL之间的执行上的先后顺序进行数据同步。
比如针对分布式数据库,发起了3条SQL:SQL1、SQL2、SQL3,该3条SQL触发生成了分布式数据库中的一个事务tx1。实际中,该3条SQL的执行顺序为SQL1、SQL2、SQL3。如图3所示,比如,SQL1对应事务tx1中的3个操作,分别为操作1(比如删除数据表中的第一行数据项)、操作2(比如删除数据表中的第二行数据项)以及操作3(比如删除数据表中的第三行数据项);SQL2对应事务tx1中的3个操作,分别为操作4、操作5以及操作6;SQL3对应事务tx1中的3个操作,分别为操作7、操作8以及操作9。
如图3所示,在步骤201中,在执行事务tx1时,会针对上述操作1至操作9中的每一个操作,均生成该操作对应的日志。比如,操作1对应的日志记为ROW1、操作2对应的日志记为ROW2,以此类推,直至操作9对应的日志记为ROW9。事务tx1的所有日志往往会被写入多个日志流中,比如参见图4,假设后续过程中,事务tx1中的各个操作的日志将被写入3个日志流LS1、LS2、LS3中。其中,日志流LS1中写入三行数据,即3个操作的3个日志:ROW1、ROW4、ROW7;日志流LS2中写入3个操作的3个日志:ROW2、ROW5、ROW8;日志流LS3中写入3个操作的3个日志:ROW3、ROW6、ROW9。
后续在进行数据同步时,对于该分布式事务tx1,在聚合LS1、LS2、LS3的所有数据时,很自然可以按照参与者即日志流的行数据顺序输出,比如按照LS1、LS2、LS3输出如下序列M:ROW1、ROW4、ROW7、ROW2、ROW5、ROW8、ROW3、ROW6、ROW9。如前所述,事务tx1对应的各SQL之间的执行顺序为:SQL1、SQL2、SQL3,也就是说SQL1对应的ROW1、ROW2、ROW3应该先输出;之后,SQL2对应的ROW4、ROW5、ROW6再输出;最后,SQL3对应的ROW7、ROW8、ROW9再输出。可见,如果按照LS1、LS2、LS3中的行数据的顺序输出上述序列M,则会导致无法对应事务tx1的各SQL之间的执行顺序:SQL1、SQL2、SQL3,从而导致下游的业务系统中破坏了外部一致性。
可见,需要根据各SQL之间的执行上的先后顺序进行数据同步。因此,则需要在日志中携带SQL的执行顺序的信息。
在业务场景A中,日志中携带的序号为SQL的语句序号。并且,需要在每一个操作的日志中均携带语句序号。因此,在步骤201中,第一操作以及第二操作可以是不同SQL对应的任意一个操作。
接下来对于业务场景B:分布式数据库开启了行移动(row movement)功能,更改(update)操作变更出的删除(delete)操作以及插入(insert)操作之间有执行顺序的要求,需要根据变更出的删除(delete)操作以及插入(insert)操作之间的执行上的先后顺序进行数据同步。
在分布式数据库中,一个数据表可以包括至少两个分区表,比如,一年中的销售数据被保存在12个分区表中,12个分区表分别保存一年中12个月的销售数据。不同的分区表可以被存储在同一个机器节点上,也可以被存储在不同的机器节点上。在该业务场景B中,当开启了行移动(row movement)时,一条SQL需要对其中一个分区表比如对应1月份的分区表中的一行数据进行更改(update)操作,即,将对应1月份的分区表中的该行数据移动到对应2月份的分区表中。那么,实际上,在执行事务时,该SQL对应的更改操作可以被拆分,即,被变更为删除(delete)操作以及插入(insert)操作。也就是说,首先对对应1月份的分区表中的该行数据进行删除操作,然后再对对应2月份的分区表进行插入该行数据的插入操作。可见,变更出的删除操作以及插入操作之间是有执行上的先后顺序的,如果后续数据同步时,不按照此种顺序来得到事务数据,而是先执行变更出的插入操作再执行变更出的删除操作,则往往会导致数据同步出错。因此,则需要在日志中携带变更出的删除操作以及变更出的插入操作的执行顺序的信息。
在业务场景B中,日志中携带的序号实际上为操作序号。需要在变更出的删除操作对应的日志中携带操作序号以及在变更出的插入操作对应的日志中携带操作序号。因此,在步骤201中,第一操作以及第二操作分别是变更出的删除操作以及变更出的插入操作。
接下来对于步骤203至步骤207:确定第一序号,以及确定第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;生成第一操作对应的第一日志以及第二操作对应的第二日志;在第一日志中携带第一序号,在第二日志中携带第二序号。
在步骤203中,第一序号是用于表征第一操作的执行顺序,第二序号是用于表征第二操作的执行顺序。因此会在后续步骤207中将第一序号携带在第一操作对应的第一日志中,将第二序号携带在第二操作对应的第二日志中。
首先说明对应于业务场景A时,步骤203的实现过程。
当应用于业务场景A时,第一操作是第一SQL对应的任意一个操作,第二操作是第二SQL对应的任意一个操作;第一操作及第二操作之间的执行先后顺序等于第一SQL以及第二SQL之间的执行先后顺序。
如前所述,一个序号实际上是相关SQL的语句序号。不同SQL对应的操作之间的执行先后顺序等于SQL的执行先后顺序。比如,SQL1至SQL3的执行顺序依次为:SQL1、SQL2、SQL3。因此,操作顺序应该依次为:操作1至操作3、操作4至操作6、操作7至操作9。
对应于业务场景A,步骤203的一种实现过程包括:
生成在事务内唯一的第一SQL对应的第一语句序号,生成在该事务内唯一的第二SQL对应的第二语句序号;其中,第一语句序号与第二语句序号之间的先后顺序与第一SQL以及第二SQL之间的执行先后顺序相同;以及
将第一语句序号作为第一序号,将第二语句序号作为第二序号。
结合步骤203至步骤207进行举例说明,比如对于事务tx1,生成SQL1对应的语句序号,记为SQL_NO1;生成SQL2对应的语句序号,记为SQL_NO2;生成SQL3对应的语句序号,记为SQL_NO3。语句序号SQL_NO1、SQL_NO2、SQL_NO3之间的先后顺序与SQL1、SQL2、SQL3之间的执行先后顺序相同。
因为SQL1对应的各个操作的日志为ROW1、ROW2、ROW3,因此,在ROW1、ROW2、ROW3中携带的序号均为SQL_NO1;因为SQL2对应的各个操作的日志为ROW4、ROW5、ROW6,因此,在ROW4、ROW5、ROW6中携带的序号均为SQL_NO2;因为SQL3对应的各个操作的日志为ROW7、ROW8、ROW9,因此,在ROW7、ROW8、ROW9中携带的序号均为SQL_NO3。
下面说明对应于业务场景B时,步骤203的实现过程。
如前所述,当应用于业务场景B时,一个序号实际上是变更出的删除操作的操作序号及变更出的插入操作的操作序号。本步骤203的一种实现过程包括执行步骤2031:设置第一序号在先,且第二序号在后。
在本说明书一个实施例中,在业务场景B中,在执行事务时,可以先调度执行第一操作,再调度执行第二操作,这样,步骤2031的一种实现过程包括:
步骤20311:根据执行第一操作的时间设置第一序号,比如,第一序号记为Ltime_NO1;并且,根据执行第二操作的时间设置第二序号,比如,第二序号记为Ltime_NO2,从而可以保证第一序号在先且第二序号在后。
在业务场景B中,实际上又可以区分如下两种情况:
情况1:分区移动在同一个机器节点中进行,也就是说,第一分区表及第二分区表位于同一个机器节点中。
在情况1下,可以利用本地时间来作为序号。此时,步骤20311的一种具体实现过程包括:将第一序号设置为机器节点在执行第一操作时的本地时间;将第二序号设置为机器节点在执行第二操作时的本地时间。比如,因为已经在调度时保证先调度执行第一操作(即变更出的删除操作),再调度执行第二操作(即变更出的插入操作),因此,执行第一操作的本地时间在先,执行第二操作的本地时间在后,这样,将执行第一操作的本地时间作为第一序号,将执行第二操作的本地时间作为第二序号,就可以保证第一序号在先,第二序号在后。
情况2:分区移动在不同的机器节点中进行,也就是说,第一分区表及第二分区表位于不同的机器节点中。
在情况2下,可以利用本地时间以及逻辑时间来作为序号。此时,步骤20311的一种具体实现过程包括:
步骤203111:将第一序号设置为第一机器节点在执行第一操作时的本地时间;
步骤203113:将第一机器节点执行第一操作时的本地时间发送给第二机器节点;
步骤203115:第二机器节点接收到执行第一操作时的第一机器节点中的本地时间,在接收到的该第一机器节点中的本地时间的基础上推高第二机器节点中的逻辑时间;以及
步骤203117:将第二序号设置为第二机器节点执行第二操作时的推高后的逻辑时间。
比如,机器节点1在本地执行第一操作时,本地时间为时间值1:2022年9月1日上午10:00,将该时间值1作为第一序号,并发送给机器节点2。机器节点2在时间值1的基础上推高逻辑时间至2022年9月1日上午10:01,将该推高后的逻辑时间2022年9月1日上午10:01作为第二序号。
对于该情况2,在本说明书一个实施例中,触发生成各个事务的SQL中,包括多个上述的第三SQL。为了进一步提高处理事务日志的效率,可以对在一个机器节点中执行的多个删除操作,一起处理来批量推高本地时间,并且对在另一个机器节点中执行的多个插入操作,一起处理来批量逐步推高逻辑时间,从而可以节约处理资源。此时,
首先,调度第一机器节点执行完本节点中所有第三SQL变更出的所有第一操作;
之后,执行上述步骤203111,具体的实现过程包括:将第一机器节点在执行每一个第一操作时的本地时间作为该第一操作对应的第一序号。
之后,执行上述步骤203113,具体的实现过程包括:得到第一机器节点执行变更出的所有第一操作时的所有本地时间;从该所有本地时间中选取最大的本地时间;将选取出的最大的本地时间发送给第二机器节点。
之后,调度第二机器节点执行本节点中所有第三SQL变更出的所有第二操作;
之后,执行上述步骤203115,具体的实现过程包括:在第二机器节点接收到的第一机器节点的最大本地时间的基础上推高逻辑时间,在推高后的逻辑时间的基础上逐步增加每一个第二操作对应的第二序号。
比如,机器节点1有100个从更改操作变更出的删除操作需要执行,机器节点2中有100个从更改操作变更出的插入操作需要执行,那么,先调度机器节点1执行100个变更出的删除操作,该100个变更出的删除操作有100个执行时的本地时间,将这100个本地时间分别作为在对应删除操作的日志中所携带的序号,并从机器节点1的100个本地时间中选取出最大值,将该最大值发送给机器节点2,之后,调度机器节点2执行100个变更出的插入操作,在接收到的该最大值的基础上逐步推高本地的逻辑时间,机器节点2针对每一个变更出的插入操作都逐步继续推高逻辑时间,将这100个逐步递增的逻辑时间分别作为在对应插入操作的日志中所携带的序号。可见,在上述过程中,无需将机器节点1中执行该100个删除操作的100个本地时间都发送给机器节点2,而是对于一批变更出的删除操作,只发一次并且只发一个本地时间的最大值,大大节约了系统的处理资源。
接下来执行步骤209:将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
比如,对于上述业务场景A,步骤203至步骤209的过程可以参见图5所示。
比如,对于上述业务场景B,步骤203至步骤209的过程可以参见图6所示。比如,SQL1为涉及分区移动的语句,变更出的删除操作对应的日志为ROW1,变更出的插入操作对应的日志为ROW2。则在该ROW1中携带作为第一序号的本地时间,记为Ltime_NO1。并且,根据Ltime_NO1推高后得到逻辑时间记为Ltime_NO2,在该ROW2中携带作为第二序号的逻辑时间Ltime_NO2。
以上说明了在事务执行者中执行的事务日志的处理方法。
下面说明在数据同步设备中执行的事务日志的处理方法。
图7为本说明书实施例提供的处理事务日志的方法流程图。该方法的执行主体为图1所示的数据同步设备,应用于采用多日志流的分布式数据库。可以理解,该方法也可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。参见图7,该方法包括:
步骤701:从分布式数据库中获取至少两个日志流。
步骤703:从任意两个日志流中得到第一日志以及第二日志;其中,第一日志中携带有第一序号,第二日志中携带有第二序号。
步骤705:根据第一日志中携带的第一序号以及第二日志中携带的第二序号,得到第一日志对应的第一操作与第二日志对应的第二操作之间的执行先后顺序;其中,第一序号以及第二序号之间的先后顺序与第一操作以及第二操作之间的执行先后顺序相同。
步骤707:根据第一操作以及第二操作之间的执行先后顺序,得到第一操作及第二操作所属事务对应的事务数据。
对上述图7所示过程的理解可以参见结合上述图2至图6所描述的相关内容。
当本说明书实施例的方法应用于上述业务场景A时,日志中携带的序号包括:SQL的语句序号。参见图5,根据每一个日志中携带的语句序号,因为语句序号的排序依次为:SQL_NO1、SQL_NO2、SQL_NO3,那么可以确定携带SQL_NO1的日志ROW1、ROW2、ROW3所对应的3个操作的执行顺序在先,之后,携带SQL_NO2的日志ROW4、ROW5、ROW6所对应的3个操作的执行顺序在后,最后,携带SQL_NO3的日志ROW7、ROW8、ROW9所对应的3个操作的执行顺序位于最后。在上述图7所示过程中,对于任意两个不同SQL对应的任意两个操作,则可以确定其执行顺序,从而得到事务tx1的对应正确执行顺序的事务数据。
当本说明书实施例的方法应用于上述业务场景B时,日志中携带的序号包括:操作序号,具体可以为时间值。参见图6,根据日志ROW1及ROW2中携带的时间值,因为时间值的排序依次为:Ltime_NO1、Ltime_NO2,那么可以确定携带Ltime_NO1的日志ROW1所对应的操作1(变更出的删除操作)的执行顺序在先,携带Ltime_NO2的日志ROW2所对应的操作2(变更出的插入操作)的执行顺序在后。这样,在上述图7所示过程中,可以确定操作1及操作2之间的执行顺序,从而得到事务tx1的对应正确执行顺序的事务数据。
在本说明书一个实施例中,提出了一种处理事务日志的装置,参见图8,该装置应用于针对采用多日志流的分布式数据库的事务执行者,包括:
事务执行模块801,配置为针对分布式数据库执行一个事务;其中,该事务中包括第一操作及第二操作;
序号确定模块802,配置为确定第一序号,以及确定第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;
日志生成模块803,配置为生成第一操作对应的第一日志以及第二操作对应的第二日志;
写日志模块804,配置为在第一日志中携带第一序号,在第二日志中携带第二序号;将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
在图8所示的本说明书装置的一个实施例中,触发生成事务的结构化查询语言(SQL)中包括第一SQL以及第二SQL;每一条SQL对应事务中的至少一个操作;
所述第一操作是第一SQL对应的任意一个操作,所述第二操作是第二SQL对应的任意一个操作;第一操作及第二操作之间的执行先后顺序等于第一SQL以及第二SQL之间的执行先后顺序;
序号确定模块802,配置为执行:
生成在所述事务内唯一的第一SQL对应的第一语句序号,生成在所述事务内唯一的第二SQL对应的第二语句序号;其中,第一语句序号与第二语句序号之间的先后顺序与第一SQL以及第二SQL之间的执行先后顺序相同;以及
将第一语句序号作为第一序号,将第二语句序号作为第二序号。
在图8所示的本说明书装置的一个实施例中,
触发生成所述事务的结构化查询语言(SQL)中包括对应于更改(update)操作的第三SQL;
所述分布式数据库中的一个数据表包括第一分区表及第二分区表;
所述事务执行模块801被配置为:在执行所述事务时,将第三SQL对应的更改操作变更为所述第一操作及所述第二操作,以便将第一分区表中的数据移动到第二分区表中;其中,所述第一操作为变更出的删除(delete)操作,所述第二操作为变更出的插入(insert)操作;
序号确定模块802,配置为执行:设置第一序号在先,且第二序号在后。
在图8所示的本说明书装置的一个实施例中,
事务执行模块801被配置为:在执行所述事务时,先调度执行第一操作,再调度执行第二操作;
序号确定模块802,配置为执行:根据执行第一操作的时间设置所述第一序号,并且,根据执行所述第二操作的时间设置所述第二序号。
在图8所示的本说明书装置的一个实施例中,第一分区表及第二分区表位于同一个机器节点中;
序号确定模块802,配置为执行:将该机器节点在执行第一操作时的本地时间作为所述第一序号;将该机器节点在执行所述第二操作时的本地时间作为所述第二序号。
在图8所示的本说明书装置的一个实施例中,第一分区表及第二分区表分别位于不同的第一机器节点及第二机器节点中;
序号确定模块802,配置为执行:将第一机器节点在执行第一操作时的本地时间作为所述第一序号;将第一机器节点执行第一操作时的本地时间发送给第二机器节点;使得第二机器节点在接收到的该第一机器节点中的本地时间的基础上推高第二机器节点中的逻辑时间;以及将第二机器节点执行所述第二操作时的逻辑时间作为所述第二序号。
在图8所示的本说明书装置的一个实施例中,触发生成各个事务的SQL中,包括多个所述第三SQL;根据每一个第三SQL变更出的所述第一操作及所述第二操作用于将一个分区表中的数据移动到另一个分区表中;
事务执行模块801被配置为执行:调度第一机器节点执行完本节点中所有第三SQL变更出的所有第一操作;然后再调度第二机器节点执行本节点中所有第三SQL变更出的所有第二操作;
序号确定模块802被配置为执行:
得到第一机器节点执行变更出的所有第一操作时的所有本地时间;
从该所有本地时间中选取最大的本地时间;
将选取出的最大的本地时间发送给第二机器节点。
在本说明书一个实施例中,参见图9,提出了一种处理事务日志的装置,该装置应用于数据同步设备,适用于采用多日志流的分布式数据库。该装置包括:
日志流获取模块901,配置为从所述分布式数据库中获取至少两个日志流;
日志获取模块902,配置为从任意两个日志流中得到第一日志以及第二日志;其中,第一日志中携带有第一序号,第二日志中携带有第二序号;
操作顺序确定模块903,配置为根据第一日志中携带的第一序号以及第二日志中携带的第二序号,得到第一日志对应的第一操作与第二日志对应的第二操作之间的执行先后顺序;其中,第一序号以及第二序号之间的先后顺序与第一操作以及第二操作之间的执行先后顺序相同;
同步处理模块904,配置为根据第一操作以及第二操作之间的执行先后顺序,得到第一操作及第二操作所属事务对应的事务数据。
在图9所示的本说明书装置的一个实施例中,序号包括:SQL的语句序号;所述第一操作与第二操作对应不同的SQL。
在图9所示的本说明书装置的一个实施例中,序号包括:时间值。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序产品的形式体现出来,该计算机程序产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (12)
1.一种处理事务日志的方法,其特征在于,其中,事务为:访问和/或操作数据的数据库操作序列;该方法应用于采用多日志流的分布式数据库;
所述方法包括:
针对所述分布式数据库执行一个事务;其中,该事务中包括第一操作及第二操作;
确定第一序号,以及确定第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;
生成第一操作对应的第一日志以及第二操作对应的第二日志;
在第一日志中携带第一序号,在第二日志中携带第二序号;
将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
2.根据权利要求1所述的方法,其中,触发生成所述事务的结构化查询语言SQL包括第一SQL以及第二SQL;每一条SQL对应事务中的至少一个操作;
所述第一操作是第一SQL对应的任意一个操作,所述第二操作是第二SQL对应的任意一个操作;第一操作及第二操作之间的执行先后顺序等于第一SQL以及第二SQL之间的执行先后顺序;
所述确定第一序号以及第二序号,包括:
生成在所述事务内唯一的、第一SQL对应的第一语句序号,生成在所述事务内唯一的、第二SQL对应的第二语句序号;其中,第一语句序号与第二语句序号之间的先后顺序与第一SQL以及第二SQL之间的执行先后顺序相同;以及
将第一语句序号作为所述第一序号,将第二语句序号作为所述第二序号。
3.根据权利要求1所述的方法,其中,触发生成所述事务的SQL中包括对应于更改操作的第三SQL;
所述分布式数据库中的一个数据表包括第一分区表以及第二分区表;
在执行所述事务时,进一步包括:将第三SQL对应的更改操作变更为所述第一操作及所述第二操作,以便将第一分区表中的数据移动到第二分区表中;其中,所述第一操作为变更出的删除操作,所述第二操作为变更出的插入操作;
所述确定第一序号以及第二序号,包括:
设置所述第一序号在先,且所述第二序号在后。
4.根据权利要求3所述的方法,其中,
在执行所述事务时,进一步包括:先调度执行第一操作,再调度执行第二操作;
所述设置所述第一序号在先且所述第二序号在后,包括:根据执行第一操作的时间设置所述第一序号,并且,根据执行所述第二操作的时间设置所述第二序号。
5.根据权利要求4所述的方法,其中,所述第一分区表及第二分区表位于同一个机器节点中;
所述根据执行第一操作的时间设置所述第一序号,包括:将该机器节点在执行第一操作时的本地时间作为所述第一序号;
所述根据执行所述第二操作的时间设置所述第二序号,包括:将该机器节点在执行所述第二操作时的本地时间作为所述第二序号。
6.根据权利要求4所述的方法,其中,所述第一分区表及第二分区表分别位于不同的第一机器节点及第二机器节点中;
所述根据执行第一操作的时间设置所述第一序号,包括:将第一机器节点在执行第一操作时的本地时间作为所述第一序号;
该方法进一步包括:将第一机器节点在执行第一操作时的本地时间发送给第二机器节点;
所述根据执行所述第二操作的时间设置所述第二序号,包括:
在第二机器节点接收到的该第一机器节点中的本地时间的基础上,推高第二机器节点中的逻辑时间;以及
将第二机器节点在执行所述第二操作时的推高后的逻辑时间作为所述第二序号。
7.根据权利要求6所述的方法,其中,触发生成各个事务的各个SQL中包括多个所述第三SQL,根据每一个第三SQL变更出的所述第一操作及所述第二操作用于将一个分区表中的数据移动到另一个分区表中;
所述先调度执行第一操作再调度执行第二操作,包括:调度第一机器节点执行完本节点中所有第三SQL变更出的所有第一操作;然后再调度第二机器节点执行本节点中所有第三SQL变更出的所有第二操作;
相应地,所述将第一机器节点执行第一操作时的本地时间发送给第二机器节点,包括:
得到第一机器节点执行变更出的所有第一操作时的所有本地时间;
从该所有本地时间中选取最大的本地时间;
将选取出的最大的本地时间发送给第二机器节点。
8.一种处理事务日志的方法,其特征在于,其中,事务为:访问和/或操作数据的数据库操作序列;该方法应用于采用多日志流的分布式数据库;
所述方法包括:
从所述分布式数据库中获取至少两个日志流;
从任意两个日志流中得到第一日志以及第二日志;其中,第一日志中携带有第一序号,第二日志中携带有第二序号;
根据第一日志中携带的第一序号以及第二日志中携带的第二序号,得到第一日志对应的第一操作与第二日志对应的第二操作之间的执行先后顺序;其中,第一序号以及第二序号之间的先后顺序与第一操作以及第二操作之间的执行先后顺序相同;
根据第一操作以及第二操作之间的执行先后顺序,得到第一操作及第二操作所属事务对应的事务数据。
9.根据权利要求8所述的方法,其中,
所述序号包括:结构化查询语言SQL的语句序号;相应地,所述第一操作与第二操作对应不同的SQL;
和/或,
所述序号包括:时间值;相应地,所述第一操作对应于根据执行更改操作的SQL所变更出的删除操作,所述第二操作对应于根据执行更改操作的SQL所变更出的插入操作。
10.处理事务日志的装置,其中,事务为:访问和/或操作数据的数据库操作序列;该装置应用于采用多日志流的分布式数据库;包括:
事务执行模块,配置为针对所述分布式数据库执行一个事务;其中,该事务中包括第一操作及第二操作;
序号确定模块,配置为确定第一序号,以及确定第二序号;其中,第一序号及第二序号之间的先后顺序与第一操作及第二操作之间的执行先后顺序相同;
日志生成模块,配置为生成第一操作对应的第一日志以及第二操作对应的第二日志;
写日志模块,配置为在第一日志中携带第一序号,在第二日志中携带第二序号;将第一日志及第二日志分别写入该分布式数据库中的两个日志流中。
11.处理事务日志的装置,其中,事务为:访问和/或操作数据的数据库操作序列;该装置应用于采用多日志流的分布式数据库;该装置包括:
日志流获取模块,配置为从所述分布式数据库中获取至少两个日志流;
日志获取模块,配置为从任意两个日志流中得到第一日志以及第二日志;其中,第一日志中携带有第一序号,第二日志中携带有第二序号;
操作顺序确定模块,配置为根据第一日志中携带的第一序号以及第二日志中携带的第二序号,得到第一日志对应的第一操作与第二日志对应的第二操作之间的执行先后顺序;其中,第一序号以及第二序号之间的先后顺序与第一操作以及第二操作之间的执行先后顺序相同;
同步处理模块,配置为根据第一操作以及第二操作之间的执行先后顺序,得到第一操作及第二操作所属事务对应的事务数据。
12.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1至9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310761690.1A CN116627769A (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
CN202211172899.6A CN115905402B (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211172899.6A CN115905402B (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310761690.1A Division CN116627769A (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115905402A true CN115905402A (zh) | 2023-04-04 |
CN115905402B CN115905402B (zh) | 2023-07-18 |
Family
ID=86488647
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211172899.6A Active CN115905402B (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
CN202310761690.1A Pending CN116627769A (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310761690.1A Pending CN116627769A (zh) | 2022-09-26 | 2022-09-26 | 处理事务日志的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN115905402B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN106503020A (zh) * | 2015-09-08 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 日志数据处理方法及装置 |
CN107480009A (zh) * | 2017-08-18 | 2017-12-15 | 北京中电普华信息技术有限公司 | 一种事务恢复方法及装置 |
CN108572976A (zh) * | 2017-03-10 | 2018-09-25 | 华为软件技术有限公司 | 一种分布式数据库中数据恢复方法、相关设备和系统 |
CN110807064A (zh) * | 2019-10-28 | 2020-02-18 | 北京优炫软件股份有限公司 | Rac分布式数据库集群系统中的数据恢复装置 |
CN111522631A (zh) * | 2020-03-23 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 分布式事务处理方法、装置、服务器及介质 |
CN112596801A (zh) * | 2019-09-16 | 2021-04-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置、设备、存储介质、数据库 |
CN112948342A (zh) * | 2021-02-25 | 2021-06-11 | 杭州沃趣科技股份有限公司 | 一种基于日志解析系统的数据处理方法 |
CN113946448A (zh) * | 2021-10-28 | 2022-01-18 | 苏州浪潮智能科技有限公司 | 一种服务器集群的时序管理方法、装置及电子设备 |
CN113946628A (zh) * | 2021-10-27 | 2022-01-18 | 中国建设银行股份有限公司 | 一种基于拦截器的数据同步方法及装置 |
WO2022017347A1 (zh) * | 2020-07-24 | 2022-01-27 | 阿里巴巴集团控股有限公司 | 分布式数据库系统及数据处理方法 |
-
2022
- 2022-09-26 CN CN202211172899.6A patent/CN115905402B/zh active Active
- 2022-09-26 CN CN202310761690.1A patent/CN116627769A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503020A (zh) * | 2015-09-08 | 2017-03-15 | 阿里巴巴集团控股有限公司 | 日志数据处理方法及装置 |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN108572976A (zh) * | 2017-03-10 | 2018-09-25 | 华为软件技术有限公司 | 一种分布式数据库中数据恢复方法、相关设备和系统 |
CN107480009A (zh) * | 2017-08-18 | 2017-12-15 | 北京中电普华信息技术有限公司 | 一种事务恢复方法及装置 |
CN112596801A (zh) * | 2019-09-16 | 2021-04-02 | 阿里巴巴集团控股有限公司 | 事务处理方法、装置、设备、存储介质、数据库 |
CN110807064A (zh) * | 2019-10-28 | 2020-02-18 | 北京优炫软件股份有限公司 | Rac分布式数据库集群系统中的数据恢复装置 |
CN111522631A (zh) * | 2020-03-23 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 分布式事务处理方法、装置、服务器及介质 |
WO2022017347A1 (zh) * | 2020-07-24 | 2022-01-27 | 阿里巴巴集团控股有限公司 | 分布式数据库系统及数据处理方法 |
CN112948342A (zh) * | 2021-02-25 | 2021-06-11 | 杭州沃趣科技股份有限公司 | 一种基于日志解析系统的数据处理方法 |
CN113946628A (zh) * | 2021-10-27 | 2022-01-18 | 中国建设银行股份有限公司 | 一种基于拦截器的数据同步方法及装置 |
CN113946448A (zh) * | 2021-10-28 | 2022-01-18 | 苏州浪潮智能科技有限公司 | 一种服务器集群的时序管理方法、装置及电子设备 |
Non-Patent Citations (3)
Title |
---|
MAHESH BALAKRISHNAN ET AL.: "Tango: Distributed Data Structures over a Shared Log", 《PROCEEDINGS OF THE TWENTY-FOURTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES》, pages 325 - 340 * |
于斌 等: "面向SQLite3数据库API调用序列的并行运行时验证方法", 《软件学报》, pages 2755 - 2768 * |
刘文欣: "多主数据库中基于分区的并发控制", 《华东师范大学学报(自然科学版)》, pages 84 - 93 * |
Also Published As
Publication number | Publication date |
---|---|
CN116627769A (zh) | 2023-08-22 |
CN115905402B (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391628B (zh) | 数据同步方法及装置 | |
CN107391634B (zh) | 数据迁移方法及装置 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN111444192B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN111143470A (zh) | 跨平台数据库数据同步比对方法及装置 | |
CN115185787B (zh) | 处理事务日志的方法及装置 | |
CN111258985A (zh) | 数据集群迁移方法及装置 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和系统 | |
CN111159020B (zh) | 一种应用于同步软件测试的方法和装置 | |
CN111240891A (zh) | 基于数据库多表间数据一致性的数据恢复方法及装置 | |
JP4951138B2 (ja) | データベースの管理方法 | |
CN113761052A (zh) | 数据库同步方法和装置 | |
CN116842244A (zh) | 搜索引擎数据同步方法、系统、设备和存储介质 | |
US10409651B2 (en) | Incremental workflow execution | |
CN115905402B (zh) | 处理事务日志的方法及装置 | |
CN109766125A (zh) | 批次间追平冲突的识别方法及装置 | |
CN111831271B (zh) | 一种支持模拟预合入流水线的Git代码评审系统及其方法 | |
JP6239697B2 (ja) | データベースの管理方法 | |
CN115250231B (zh) | 应用配置方法及装置 | |
CN116701542A (zh) | 一种数据库间多线程数据同步批量入库方法 | |
CN117251510A (zh) | 一种数据同步方法与设备 | |
CN116578650A (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN113326268A (zh) | 一种数据写入、读取方法及装置 | |
CN118012955A (zh) | 一种数据库主从同步方法、装置、设备、介质及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |