CN107545024A - 用于分布式数据库的事务保存点管理装置及方法 - Google Patents
用于分布式数据库的事务保存点管理装置及方法 Download PDFInfo
- Publication number
- CN107545024A CN107545024A CN201710437814.5A CN201710437814A CN107545024A CN 107545024 A CN107545024 A CN 107545024A CN 201710437814 A CN201710437814 A CN 201710437814A CN 107545024 A CN107545024 A CN 107545024A
- Authority
- CN
- China
- Prior art keywords
- savepoint
- global
- local
- affairs
- database
- 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
Classifications
-
- 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
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了事务保存点管理装置及方法,该方法包括:基于来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令,并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令;如果所述多个操作指令包含全局保存点建立指令,则创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,并基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。本发明所公开的装置及方法能够用于分布式数据库的事务保存点管理。
Description
技术领域
本发明涉及数据库管理装置及方法,更具体地,涉及用于分布式数据库的事务保存点管理装置及方法。
背景技术
目前,随着计算机和网络应用的日益广泛以及不同领域的业务种类的日益丰富,基于用户请求而实施针对分布式数据库的操作变得越来越重要。特别地,对事务(其由逻辑上的一组针对数据库的操作构成,该组操作基于时间序列,并且仅在该组操作中的每个操作均执行成功的情况下实施事务提交操作,即完成并存储对目标数据库所有实际动作,否则针对该事务执行回滚操作,以将数据库恢复至该事务实施之前的初始状态,即对目标数据库不产生任何实际影响)及事务保存点(用于保存某个时间点处的事务状态,即如果将事务回滚至该保存点,则与该保存点相关联的时间点之后的操作被撤消)进行管理以确保逻辑关联操作的同时完成尤其受到关注。
在现有的技术方案中,典型地仅能针对集中式数据库实施针对事务及其保存点的管理操作,而缺乏针对分布式数据库的有效的事务运行和管理机制,从而导致难于确保针对分布式数据库系统的逻辑关联操作的同时完成。
由此,存在如下需求:提供用于分布式数据库的事务保存点管理装置及方法。
发明内容
为了解决上述现有技术方案所存在的问题,本发明提出了用于分布式数据库的事务保存点管理装置及方法。
本发明的目的是通过以下技术方案实现的:
一种事务保存点管理装置,所述事务保存点管理装置至少包括控制单元,所述控制单元被配置为基于接收到的来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令,并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令,其中,如果所述多个操作指令包含全局保存点建立指令,则所述控制单元进一步被配置为创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,其中,所述控制单元基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。
在上面所公开的方案中,优选地,所述事务保存点管理装置进一步包括保存点建立单元,所述保存点建立单元被配置为基于所述控制单元的驱动而执行全局保存点建立操作,所述全局保存点建立操作包括:创建全局保存点并将其记录在所述全局保存点队列中,随之将该全局保存点设置为当前最新全局保存点;查看所有涉及本次事务的数据库的本地保存点的状态,如果本地保存点处于稳定状态,则将该处于稳定状态的本地保存点与所述全局保存点相关联,否则,通知该数据库创建本地保存点,并将新创建的本地保存点与所述全局保存点相关联。
在上面所公开的方案中,优选地,所述事务保存点管理装置进一步包括保存点回滚单元,所述保存点回滚单元被配置为基于所述控制单元的驱动而执行全局保存点回滚操作,所述全局保存点回滚操作包括:如果本次事务所涉及的数据库的本地保存点处于稳定状态且该本地保存点是要回滚至其的目的全局保存点所关联的本地保存点,则不触发该数据库执行本地保存点回滚操作,并且仅删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系,否则,触发该数据库执行本地保存点回滚操作以便回滚至所述目的全局保存点所关联的本地保存点,同时删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系并且删除在该全局保存点的时间序列之后的所有全局保存点。
在上面所公开的方案中,优选地,所述事务保存点管理装置进一步包括保存点释放单元,所述保存点释放单元被配置为基于所述控制单元的驱动而执行全局保存点释放操作,所述全局保存点释放操作包括:删除待删除的全局保存点与所涉及的数据库的本地保存点的关联关系,并且在所述全局保存点队列中删除该全局保存点;查看所涉及的数据库中的本地保存点是否与其他全局保存点存在关联关系,如果该本地保存点不与其他全局保存点存在关联关系,则触发所涉及的数据库执行本地保存点释放操作。
在上面所公开的方案中,优选地,当首次访问涉及本次事务的数据库以执行相关的操作指令时,该数据库首先建立子事务,并随之执行所述相关的操作指令。
在上面所公开的方案中,优选地,所述事务保存点管理装置进一步包括保存点重置单元,所述保存点重置单元被配置为基于所述控制单元的驱动而执行全局保存点重置操作,所述全局保存点重置操作包括:将待重置的全局保存点的时间序列的位置设置为最新;如果本次事务所涉及的数据库的本地保存点当前处于稳定状态,则将与该全局保存点相关联的本地保存点重置为当前处于稳定状态下的本地保存点;如果与该全局保存点相关联的本地保存点不与其他全局保存点相关联,且该数据库中不存于处于稳定状态的本地保存点或者处于稳定状态的本地保存点不与该全局保存点相关联,则执行本地保存点重置操作。
在上面所公开的方案中,优选地,所述控制单元进一步被配置为触发所涉及的数据库释放不与任何全局保存点相关联的本地保存点。
在上面所公开的方案中,优选地,所述控制单元进一步被配置为当新的数据库需要被加入以执行本次事务时,如果已经存在全局保存点,则触发该新的数据库建立至少一个本地保存点,并将该本地保存点与全局保存点相关联。
本发明的目的也可以通过以下技术方案实现:
一种事务保存点管理方法,所述事务保存点管理方法包括下列步骤:基于来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令,并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令;如果所述多个操作指令包含全局保存点建立指令,则创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,并基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。
本发明所公开的用于分布式数据库的事务保存点管理装置及方法具有以下优点:(1)能够协调多个分布式数据库实施保存点管理和维护操作;(2)由于能够减少不必要的本地保存点创建操作,故显著地提高了系统性能。
附图说明
结合附图,本发明的技术特征以及优点将会被本领域技术人员更好地理解,其中:
图1是根据本发明的实施例的事务保存点管理装置的示意性结构图;
图2是根据本发明的实施例的事务保存点管理方法的流程图;
图3是根据本发明的实施例的一个事务保存点管理操作的示意性流程图;
图4是根据本发明的实施例的另一事务保存点管理操作的示意性流程图;
图5是根据本发明的实施例的另一事务保存点管理操作的示意性流程图;
图6是根据本发明的实施例的另一事务保存点管理操作的示意性流程图;
图7是根据本发明的实施例的另一事务保存点管理操作的示意性流程图。
具体实施方式
图1是根据本发明的实施例的事务保存点管理装置的示意性结构图。如图1所示,本发明所公开的事务保存点管理装置至少包括控制单元5,所述控制单元5被配置为基于接收到的来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令(例如多条SQL语句),并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令,其中,如果所述多个操作指令包含全局保存点建立指令,则所述控制单元5进一步被配置为创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,其中,所述控制单元5基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,所述事务保存点管理装置进一步包括保存点建立单元1,所述保存点建立单元1被配置为基于所述控制单元5的驱动而执行全局保存点建立操作,所述全局保存点建立操作包括:创建全局保存点并将其记录在所述全局保存点队列中,随之将该全局保存点设置为当前最新全局保存点;查看所有涉及本次事务的数据库的本地保存点的状态,如果本地保存点处于稳定状态,则将该处于稳定状态的本地保存点与所述全局保存点相关联,否则,通知该数据库创建本地保存点,并将新创建的本地保存点与所述全局保存点相关联。其中,如果某个涉及的数据库处于如下状态:执行回滚至某个本地保存点的操作不会对该数据库产生影响,则称该数据库的本地保存点处于稳定状态。该状态一般在如下两个场景下产生:(1)涉及的数据库创建本地保存点后,不进行影响本地事务的操作(例如写数据),则其持续处于本地保存点稳定状态,并且对应的本地保存点被用作最近创建的本地保存点,相应的,一旦进行了影响本地事务的操作(例如写数据),则该数据库的本地保存点不再处于稳定状态;(2)涉及的数据库回滚至某个本地保存点后,不进行影响本地事务的操作(例如写数据),则该数据库持续处于本地保存点稳定状态,且其对应的本地保存点被用作最近创建的本地保存点,相应的,一旦进行了影响本地事务的操作(例如写数据),则其不再处于本地保存点稳定状态。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,所述事务保存点管理装置进一步包括保存点回滚单元2,所述保存点回滚单元2被配置为基于所述控制单元5的驱动而执行全局保存点回滚操作,所述全局保存点回滚操作包括:如果本次事务所涉及的数据库的本地保存点处于稳定状态且该本地保存点是要回滚至其的目的全局保存点所关联的本地保存点,则不触发该数据库执行本地保存点回滚操作,并且仅删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系,(由此减少了不必须要的本地回滚操作),否则,触发该数据库执行本地保存点回滚操作以便回滚至所述目的全局保存点所关联的本地保存点,同时删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系并且删除在该全局保存点的时间序列之后的所有全局保存点。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,所述事务保存点管理装置进一步包括保存点释放单元3,所述保存点释放单元3被配置为基于所述控制单元5的驱动而执行全局保存点释放操作,所述全局保存点释放操作包括:删除待删除的全局保存点与所涉及的数据库的本地保存点的关联关系,并且在所述全局保存点队列中删除该全局保存点;查看所涉及的数据库中的本地保存点是否与其他全局保存点存在关联关系,如果该本地保存点不与其他全局保存点存在关联关系,则触发所涉及的数据库执行本地保存点释放操作。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,当首次访问涉及本次事务的数据库以执行相关的操作指令时,该数据库首先建立子事务,并随之执行所述相关的操作指令。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,所述事务保存点管理装置进一步包括保存点重置单元4,所述保存点重置单元4被配置为基于所述控制单元5的驱动而执行全局保存点重置操作,所述全局保存点重置(即覆盖)操作包括:将待重置的全局保存点的时间序列的位置设置为最新;如果本次事务所涉及的数据库的本地保存点当前处于稳定状态,则将与该全局保存点相关联的本地保存点重置为当前处于稳定状态下的本地保存点;如果与该全局保存点相关联的本地保存点不与其他全局保存点相关联,且该数据库中不存于处于稳定状态的本地保存点或者处于稳定状态的本地保存点不与该全局保存点相关联,则执行本地保存点重置操作(其不改变既有的全局保存点与本地保存点的关联关系)。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,所述控制单元5进一步被配置为触发所涉及的数据库释放不与任何全局保存点相关联的本地保存点。
示例性地,在本发明所公开的事务保存点管理装置的一个实施例中,所述控制单元5进一步被配置为当新的数据库需要被加入以执行本次事务时,如果已经存在全局保存点,则触发该新的数据库建立至少一个本地保存点,并将该本地保存点与全局保存点相关联。其中,由于多数数据库会记录本地事务的起点,即将本地事务的起点作为隐式的本地保存点,故可以将全局保存点与本地事务的起点相关联,由此可以减少建立本地保存点的操作。可替代地,也可以使用显式地建立本地保存点的方式。
由上可见,本发明所公开的事务保存点管理装置具有下列优点:(1)能够协调多个分布式数据库实施保存点管理和维护操作;(2)由于能够减少不必要的本地保存点创建操作,故显著地提高了系统性能。
图2是根据本发明的实施例的事务保存点管理方法的流程图。如图2所示,本发明所公开的事务保存点管理方法包括下列步骤:基于来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令(例如多条SQL语句),并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令;如果所述多个操作指令包含全局保存点建立指令,则创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,并基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,所述方法进一步包括:基于来自用户终端的请求而执行全局保存点建立操作,所述全局保存点建立操作包括:创建全局保存点并将其记录在所述全局保存点队列中,随之将该全局保存点设置为当前最新全局保存点;查看所有涉及本次事务的数据库的本地保存点的状态,如果本地保存点处于稳定状态,则将该处于稳定状态的本地保存点与所述全局保存点相关联,否则,通知该数据库创建本地保存点,并将新创建的本地保存点与所述全局保存点相关联。其中,如果某个涉及的数据库处于如下状态:执行回滚至某个本地保存点的操作不会对该数据库产生影响,则称该数据库的本地保存点处于稳定状态。该状态一般在如下两个场景下产生:(1)涉及的数据库创建本地保存点后,不进行影响本地事务的操作(例如写数据),则其持续处于本地保存点稳定状态,并且对应的本地保存点被用作最近创建的本地保存点,相应的,一旦进行了影响本地事务的操作(例如写数据),则该数据库的本地保存点不再处于稳定状态;(2)涉及的数据库回滚至某个本地保存点后,不进行影响本地事务的操作(例如写数据),则该数据库持续处于本地保存点稳定状态,且其对应的本地保存点被用作最近创建的本地保存点,相应的,一旦进行了影响本地事务的操作(例如写数据),则其不再处于本地保存点稳定状态。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,所述方法进一步包括:基于来自用户终端的请求而执行全局保存点回滚操作,所述全局保存点回滚操作包括:如果本次事务所涉及的数据库的本地保存点处于稳定状态且该本地保存点是要回滚至其的目的全局保存点所关联的本地保存点,则不触发该数据库执行本地保存点回滚操作,并且仅删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系,(由此减少了不必须要的本地回滚操作),否则,触发该数据库执行本地保存点回滚操作以便回滚至所述目的全局保存点所关联的本地保存点,同时删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系并且删除在该全局保存点的时间序列之后的所有全局保存点。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,所述方法进一步包括:基于来自用户终端的请求而执行全局保存点释放操作,所述全局保存点释放操作包括:删除待删除的全局保存点与所涉及的数据库的本地保存点的关联关系,并且在所述全局保存点队列中删除该全局保存点;查看所涉及的数据库中的本地保存点是否与其他全局保存点存在关联关系,如果该本地保存点不与其他全局保存点存在关联关系,则触发所涉及的数据库执行本地保存点释放操作。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,当涉及本次事务的数据库首次被访问以执行相关的操作指令时,该数据库首先建立子事务,并随之执行所述相关的操作指令。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,所述方法进一步包括:基于来自用户终端的请求而执行全局保存点重置操作,所述全局保存点重置(即覆盖)操作包括:将待重置的全局保存点的时间序列的位置设置为最新;如果本次事务所涉及的数据库的本地保存点当前处于稳定状态,则将与该全局保存点相关联的本地保存点重置为当前处于稳定状态下的本地保存点;如果与该全局保存点相关联的本地保存点不与其他全局保存点相关联,且该数据库中不存于处于稳定状态的本地保存点或者处于稳定状态的本地保存点不与该全局保存点相关联,则执行本地保存点重置操作(其不改变既有的全局保存点与本地保存点的关联关系)。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,所述方法进一步包括:触发所涉及的数据库释放不与任何全局保存点相关联的本地保存点。
示例性地,在本发明所公开的事务保存点管理方法的一个实施例中,所述方法进一步包括:当新的数据库需要被加入以执行本次事务时,如果已经存在全局保存点,则触发该新的数据库建立至少一个本地保存点,并将该本地保存点与全局保存点相关联。其中,由于多数数据库会记录本地事务的起点,即将本地事务的起点作为隐式的本地保存点,故可以将全局保存点与本地事务的起点相关联,由此可以减少建立本地保存点的操作。可替代地,也可以使用显式地建立本地保存点的方式。
由上可见,本发明所公开的事务保存点管理方法具有下列优点:(1)能够协调多个分布式数据库实施保存点管理和维护操作;(2)由于能够减少不必要的本地保存点创建操作,故显著地提高了系统性能。
图3是根据本发明的实施例的一个事务保存点管理操作的示意性流程图。在图3所示出的实例中,用户请求顺序地执行如下5条SQL语句:
1:start transaction;
2:insert data1to db1;
3:savepoint G_1;
4:instert data2to db2;
5:savepoint G_2。
上述各条语句的执行处理逻辑如下:
1.当事务保存点管理装置接受到事务开启语句“start transaction”时,由于还没有明确实际参与者,则直接应答请求方(即用户终端);
2.当用户终端发送“insert data1to db1”,该语句的目的是向数据库db1插入数据,此时事务保存点管理装置负责向参与数据库db1发送事务开启语句,然后转发插入数据语句;
3.当用户终端发送“savepoint G_1”,需要创建全局保存点G_1,此时,事务保存点管理装置通知数据库db1创建保存点db1_1,并如表格2所示维护G_1与db1_1的关联关系,并记录G_1的全局保存点序号为1;
4.当用户终端发送“insert data2to db2”,该语句的目的是向参与数据库db2插入数据,由于db2此前没有参与全局事务,则事务保存点管理装需要向参与数据库db2发送事务开启语句“start transaction”,db2加入全局事务后,会发现已经存在全局保存点G_1,所以事务保存点管理装置需要通知db2创建本地保存点db2_1,并如表格3所示维护本地保存点db2_1与全局保存点G_1的关联关系
5.当用户终端发送“savepoint G_2”,需要创建全局保存点G_2,如表格4所示,此时db1距离上一个本地事务保存点db1_1没有数据修改,所以将db1_1于G_2关联即可,而db2距离上一个本地保存点db2_1存在数据修改,因此事务保存点管理装置需要通知db2创建本地保存点db2_2,并保存db2_2于G_2的关联关系。
表格1:实例1中语句对应在每个数据库连接上的执行情况
表格2:实例1中完成第3条语句后的全局保存点与数据库本地保存点的对应关系
保存点序号 | 全局保存点 | DB1本地保存点 |
1 | G_1 | db1_1 |
表格3:实例1中完成第4条语句后的全局保存点与数据库本地保存点的对应关系
保存点序号 | 全局保存点 | DB1本地保存点 | DB2本地保存点 |
1 | G_1 | db1_1 | db2_1 |
表格4:实例1中完成第5条语句后的全局保存点与数据库本地保存点的对应关系
保存点序号 | 全局保存点 | DB1本地保存点 | DB2本地保存点 |
1 | G_1 | db1_1 | db2_1 |
2 | G_2 | db1_1 | db2_2 |
图4是根据本发明的实施例的另一事务保存点管理操作的示意性流程图。在图4所示出的实例中,用户请求顺序地执行如下6条SQL语句:
1:start transaction;
2:insert data1to db1;
3:savepoint G_1;
4:instert data2to db2;
5:savepoint G_2;
6:savepoint G_1;
其中第6句用于重置全局保存点G_1。
在此实例中,仅在实例1的基础上增加了语句6的执行,由此仅对第6条语句的执行做出如下说明,其他不再赘述:当用户终端发送第6条语句“savepoint G_1”时,由于之前已经创建过全局保存点G_1,故本条语句的目的是重置保存点“savepoint G_1”,此时事务保存点管理装置删除原G_1的关联关系记录,并查看参与数据库db1所处状态,发现其处于本地保存点db1_1稳定状态,同时查看参与数据库db2所处状态,发现其处于本地保存点db2_2稳定状态,因此如表格5所示,将G_1设置为时序位置中的最新保存点,并与本地保存点db1_1和db2_2关联。同时,发现db2的本地保存点db2_1不再与任何全局保存点关联,此时可以释放本地保存点db2_1,因此事务保存点管理装置需要通知参与数据库db2释放本地保存点db2_1。
表格5:实例2中完成第6条语句后的全局保存点与数据库本地保存点的对应关系
图5是根据本发明的实施例的另一事务保存点管理操作的示意性流程图。在图5所示出的实例中,用户请求顺序地执行如下5条SQL语句:
1:start transaction;
2:insert data1to db1;
3:savepoint G_1;
4:instert data2to db2;
5:savepoint G_1;
其中第5句用于重置全局保存点G_1。
在此实例中,仅在实例1的基础上修改了语句5,由此仅对第5条语句的执行做出如下说明,其他不再赘述:当用户终端发送第5条语句“savepoint G_1”时,由于之前已经创建过全局保存点G_1,本条语句的目的是重置保存点“savepoint G_1”,此时事务保存点管理装置删除原G_1的关联关系记录,并查看参与数据库db1所处状态,发现其处于本地保存点db1_1稳定状态,因此将G_1与db1_1关联,随之查看参与数据库db2所处状态,发现其不处于本地保存点稳定状态,同时查看到db2_1仅与原全局保存点G_1关联,因此事务保存点管理装置需要通知参与数据库db2重置本地保存点db2_1,然后将db2_1与全局保存点G_1关联,最终如表格6所示,将G_1设置为时序位置中的最新保存点,并与本地保存点db1_1和db2_1关联。
表格6:实例3中完成第5条语句后的全局保存点与数据库本地保存点的对应关系
图6是根据本发明的实施例的另一事务保存点管理操作的示意性流程图。在图6所示的实例中,用户请求顺序地执行如下6条SQL语句:
1:start transaction;
2:insert data1to db1;
3:savepoint G_1;
4:instert data2to db2;
5:savepoint G_2;
6:rollback to savepoint G_1;
其中第6句用于回滚全局事务至全局保存点G_2。
在本实例中,仅在实例1的基础上增加了语句6的执行,由此仅对第6条语句的执行做出如下说明,其他不再赘述:当用户终端发送第6条语句“rollback to savepoint G_1”时,本条语句的目的是回滚全局事务至G_1,事务保存点管理装置发现G_1关联的本地保存点分别为db1_1和db2_2,而参与数据库db1正处于db_1的保存点稳定状态,所以参与数据库db1不需要做任何操作,但参与数据库db2并不处于db2_1这个保存点的稳定状态,因此事务保存点管理装置需要通知参与数据库db2执行本地保存点回滚操作,并回滚至db2_1。同时,事务保存点管理装置需要删除失效在G_1之后的所有全局保存点,及全局保存点与本地保存点的关联关系。最终如表格7所示,其是执行完上述6条语句后,事务保存点管理装置记录的全局保存点序列信息,以及全局保存点与本地保存点的关联关系。
表格7:实例4中完成第6条语句后的全局保存点与数据库保存点的对应关系
图7是根据本发明的实施例的另一事务保存点管理操作的示意性流程图。在图7所示出的实例中,用户请求顺序地执行如下6条SQL语句:
1:start transaction;
2:insert data1to db1;
3:savepoint G_1;
4:instert data2to db2;
5:savepoint G_2;
6:release savepoint G_1;
其中第6句用于释放全局保存点G_1。
在本实例中,仅在实例1的基础上增加了语句6的执行,由此仅对第6条语句的执行做出如下说明,其他不再赘述:当用户终端发送第6条语句“release savepoint G_1”时,本条语句的目的是释放全局保存点G_1。事务保存点管理装置删除G_1所在的全局保存点顺序信息,以及G_1与本地保存点的关联关系,此时会发现参与数据库db2的本地保存点db2_1不与任何全局保存点关联,因此事务保存点管理装置通知参与数据库db2释放本地保存点db2_1。最终如表格8所示,其是执行完上述6条语句后,事务保存点管理装置记录的全局保存点序列信息,以及全局保存点与本地保存点的关联关系。
表格8:实例5中完成第6条语句后的全局保存点与数据库本地保存点的对应关系
尽管本发明是通过上述的优选实施方式进行描述的,但是其实现形式并不局限于上述的实施方式。应该认识到:在不脱离本发明主旨和范围的情况下,本领域技术人员可以对本发明做出不同的变化和修改。
Claims (9)
1.一种事务保存点管理装置,所述事务保存点管理装置至少包括控制单元,所述控制单元被配置为基于接收到的来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令,并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令,其中,如果所述多个操作指令包含全局保存点建立指令,则所述控制单元进一步被配置为创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,其中,所述控制单元基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。
2.根据权利要求1所述的事务保存点管理装置,其特征在于,所述事务保存点管理装置进一步包括保存点建立单元,所述保存点建立单元被配置为基于所述控制单元的驱动而执行全局保存点建立操作,所述全局保存点建立操作包括:创建全局保存点并将其记录在所述全局保存点队列中,随之将该全局保存点设置为当前最新全局保存点;查看所有涉及本次事务的数据库的本地保存点的状态,如果本地保存点处于稳定状态,则将该处于稳定状态的本地保存点与所述全局保存点相关联,否则,通知该数据库创建本地保存点,并将新创建的本地保存点与所述全局保存点相关联。
3.根据权利要求2所述的事务保存点管理装置,其特征在于,所述事务保存点管理装置进一步包括保存点回滚单元,所述保存点回滚单元被配置为基于所述控制单元的驱动而执行全局保存点回滚操作,所述全局保存点回滚操作包括:如果本次事务所涉及的数据库的本地保存点处于稳定状态且该本地保存点是要回滚至其的目的全局保存点所关联的本地保存点,则不触发该数据库执行本地保存点回滚操作,并且仅删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系,否则,触发该数据库执行本地保存点回滚操作以便回滚至所述目的全局保存点所关联的本地保存点,同时删除该全局保存点之后的所有全局保存点与该本地保存点的关联关系并且删除在该全局保存点的时间序列之后的所有全局保存点。
4.根据权利要求3所述的事务保存点管理装置,其特征在于,所述事务保存点管理装置进一步包括保存点释放单元,所述保存点释放单元被配置为基于所述控制单元的驱动而执行全局保存点释放操作,所述全局保存点释放操作包括:删除待删除的全局保存点与所涉及的数据库的本地保存点的关联关系,并且在所述全局保存点队列中删除该全局保存点;查看所涉及的数据库中的本地保存点是否与其他全局保存点存在关联关系,如果该本地保存点不与其他全局保存点存在关联关系,则触发所涉及的数据库执行本地保存点释放操作。
5.根据权利要求4所述的事务保存点管理装置,其特征在于,当首次访问涉及本次事务的数据库以执行相关的操作指令时,该数据库首先建立子事务,并随之执行所述相关的操作指令。
6.根据权利要求5所述的事务保存点管理装置,其特征在于,所述事务保存点管理装置进一步包括保存点重置单元,所述保存点重置单元被配置为基于所述控制单元的驱动而执行全局保存点重置操作,所述全局保存点重置操作包括:将待重置的全局保存点的时间序列的位置设置为最新;如果本次事务所涉及的数据库的本地保存点当前处于稳定状态,则将与该全局保存点相关联的本地保存点重置为当前处于稳定状态下的本地保存点;如果与该全局保存点相关联的本地保存点不与其他全局保存点相关联,且该数据库中不存于处于稳定状态的本地保存点或者处于稳定状态的本地保存点不与该全局保存点相关联,则执行本地保存点重置操作。
7.根据权利要求6所述的事务保存点管理装置,其特征在于,所述控制单元进一步被配置为触发所涉及的数据库释放不与任何全局保存点相关联的本地保存点。
8.根据权利要求7所述的事务保存点管理装置,其特征在于,所述控制单元进一步被配置为当新的数据库需要被加入以执行本次事务时,如果已经存在全局保存点,则触发该新的数据库建立至少一个本地保存点,并将该本地保存点与全局保存点相关联。
9.一种事务保存点管理方法,所述事务保存点管理方法包括下列步骤:基于来自用户终端的事务启动请求而创建事务,所述事务包含多个操作指令,并随之访问多个数据库中的至少一个以便按照时间序列顺次执行所述多个操作指令;如果所述多个操作指令包含全局保存点建立指令,则创建并维护全局保存点队列以协调所述多个数据库来实施针对全局保存点的操作,并基于全局保存点触发所述多个数据库中涉及本次事务的数据库建立本地保存点并记录每个本地保存点与全局保存点的关联关系。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710437814.5A CN107545024B (zh) | 2017-06-12 | 2017-06-12 | 用于分布式数据库的事务保存点管理装置及方法 |
US16/620,060 US11436250B2 (en) | 2017-06-12 | 2018-06-01 | Transaction savepoint management apparatus and method for distributed database |
PCT/CN2018/089528 WO2018228220A1 (zh) | 2017-06-12 | 2018-06-01 | 用于分布式数据库的事务保存点管理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710437814.5A CN107545024B (zh) | 2017-06-12 | 2017-06-12 | 用于分布式数据库的事务保存点管理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107545024A true CN107545024A (zh) | 2018-01-05 |
CN107545024B CN107545024B (zh) | 2019-10-25 |
Family
ID=60970145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710437814.5A Active CN107545024B (zh) | 2017-06-12 | 2017-06-12 | 用于分布式数据库的事务保存点管理装置及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11436250B2 (zh) |
CN (1) | CN107545024B (zh) |
WO (1) | WO2018228220A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018228220A1 (zh) * | 2017-06-12 | 2018-12-20 | 中国银联股份有限公司 | 用于分布式数据库的事务保存点管理装置及方法 |
CN112597176A (zh) * | 2020-12-25 | 2021-04-02 | 中国农业银行股份有限公司 | 一种分布式数据库的事务保存点的处理方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356888A (zh) * | 2021-12-30 | 2022-04-15 | 中国民航信息网络股份有限公司 | 事务处理方法及装置、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294479A (zh) * | 2013-06-19 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式事务处理方法与系统 |
CN103902560A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团福建有限公司 | 一种分布式事务处理方法及系统 |
CN106503132A (zh) * | 2016-10-19 | 2017-03-15 | 广州快塑电子商务有限公司 | 一种分布式事务管理方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6816873B2 (en) | 2001-05-15 | 2004-11-09 | International Business Machines Corporation | Method for managing distributed savepoints across multiple DBMS's within a distributed transaction |
US7818301B2 (en) * | 2004-12-17 | 2010-10-19 | International Business Machines Corporation | Method, system and article of manufacture for rolling back past a boundary generator to a savepoint located in a unit of work |
US8112394B2 (en) * | 2005-10-14 | 2012-02-07 | Oracle International Corporation | Long-lived data transactions |
US7991752B2 (en) * | 2007-08-29 | 2011-08-02 | International Business Machines Corporation | Managing and coordinating savepoint functionality in a distributed database system |
US9501386B2 (en) * | 2014-12-26 | 2016-11-22 | Microsoft Technology Licensing, Llc | System testing using nested transactions |
CN107545024B (zh) | 2017-06-12 | 2019-10-25 | 中国银联股份有限公司 | 用于分布式数据库的事务保存点管理装置及方法 |
-
2017
- 2017-06-12 CN CN201710437814.5A patent/CN107545024B/zh active Active
-
2018
- 2018-06-01 WO PCT/CN2018/089528 patent/WO2018228220A1/zh active Application Filing
- 2018-06-01 US US16/620,060 patent/US11436250B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902560A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团福建有限公司 | 一种分布式事务处理方法及系统 |
CN103294479A (zh) * | 2013-06-19 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式事务处理方法与系统 |
CN106503132A (zh) * | 2016-10-19 | 2017-03-15 | 广州快塑电子商务有限公司 | 一种分布式事务管理方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018228220A1 (zh) * | 2017-06-12 | 2018-12-20 | 中国银联股份有限公司 | 用于分布式数据库的事务保存点管理装置及方法 |
US11436250B2 (en) | 2017-06-12 | 2022-09-06 | China Unionpay Co., Ltd. | Transaction savepoint management apparatus and method for distributed database |
CN112597176A (zh) * | 2020-12-25 | 2021-04-02 | 中国农业银行股份有限公司 | 一种分布式数据库的事务保存点的处理方法及系统 |
CN112597176B (zh) * | 2020-12-25 | 2024-06-11 | 中国农业银行股份有限公司 | 一种分布式数据库的事务保存点的处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US11436250B2 (en) | 2022-09-06 |
US20210081429A1 (en) | 2021-03-18 |
CN107545024B (zh) | 2019-10-25 |
WO2018228220A1 (zh) | 2018-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108363806B (zh) | 数据库的多版本并发控制方法、装置、服务器及存储介质 | |
US9652519B2 (en) | Replicating data across multiple copies of a table in a database system | |
CN104317669B (zh) | 一种云端异构存储系统及其数据副本管理方法 | |
CN108804112A (zh) | 一种区块链落账处理方法及系统 | |
CN107545024A (zh) | 用于分布式数据库的事务保存点管理装置及方法 | |
EP1502213B1 (en) | Method and apparatus for change data capture in a database system | |
CN106777270A (zh) | 一种基于提交点时间线同步的异构数据库复制并行执行系统及方法 | |
CN100430902C (zh) | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 | |
CN108459919A (zh) | 一种分布式事务处理方法及装置 | |
CN103714090B (zh) | 多索引数据库事务处理方法及数据库 | |
CN109978546A (zh) | 一种联盟区块链架构及其分级存储和交易穿孔方法 | |
KR102038529B1 (ko) | 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템 | |
CN104346458B (zh) | 数据存储方法和存储设备 | |
CN106407355A (zh) | 一种数据存储方法及装置 | |
EP3848841B1 (en) | Ability to forget in blockchain | |
CN111813866B (zh) | 一种改进的区块链账本同步方法 | |
CN111552730B (zh) | 数据分发方法、装置、电子设备、存储介质 | |
CN101944089A (zh) | 用于数据库的数据视图版本管理方法及装置 | |
CN103699681B (zh) | 数据回滚的处理方法和装置 | |
CN106959989A (zh) | 主备数据库的同步方法及装置 | |
CN104978279A (zh) | 一种基于数据块的持续数据保护方法 | |
CN105335475B (zh) | 一种基于流式数据的局部性非聚簇索引方法及系统 | |
CN109791541A (zh) | 日志序列号生成方法、装置及可读存储介质 | |
RU2526753C1 (ru) | Способ восстановления данных в системе управления базами данных | |
CN104220982B (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 |