CN101488134A - 数据库***的复制环境内的高性能修改事务的方法及*** - Google Patents

数据库***的复制环境内的高性能修改事务的方法及*** Download PDF

Info

Publication number
CN101488134A
CN101488134A CNA2008100040164A CN200810004016A CN101488134A CN 101488134 A CN101488134 A CN 101488134A CN A2008100040164 A CNA2008100040164 A CN A2008100040164A CN 200810004016 A CN200810004016 A CN 200810004016A CN 101488134 A CN101488134 A CN 101488134A
Authority
CN
China
Prior art keywords
memory paragraph
asynchronous
asynchronous object
subclauses
clauses
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.)
Pending
Application number
CNA2008100040164A
Other languages
English (en)
Inventor
陈世俊
姚铁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Solutions and Networks GmbH and Co KG
Original Assignee
Nokia Siemens Networks GmbH and Co KG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nokia Siemens Networks GmbH and Co KG filed Critical Nokia Siemens Networks GmbH and Co KG
Priority to CNA2008100040164A priority Critical patent/CN101488134A/zh
Publication of CN101488134A publication Critical patent/CN101488134A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种用于提供数据库***的复制环境内的高性能修改事务的方法及其***。在本发明中,事务日志从主方被传播到从方,并且在主从方之间的或者在从方之间实现同步过程。当事务在从方故障时,引入“不同步对象”存储段来将由故障事务所影响的条目保持在该从方上。本发明在数据库***的复制环境内提供更好性能的修改事务,同时确保客户端从来不返回过时的结果。

Description

数据库***的复制环境内的高性能修改事务的方法及***
技术领域
本发明通常涉及一种方法,该方法在数据库***的复制环境内提供更好性能的修改事务,同时确保客户端从来不返回过时的结果。并且本发明还涉及一种用于实现该方法的***
背景技术
如今,复制技术被广泛用于数据库***中。复制技术能通过将某些读取请求重定向到复制方来平衡工作负荷。并且最重要的是,复制技术使得***可用性高,而且避免单点故障。
复制环境的问题是复制方之间的数据一致性,这意味着***应确保客户端一旦在***成功返回在前的更新事务之后能得到任何查询的最新结果。
现有多种方法来解决上述问题。其中一种方法是原子提交协议(ACP),诸如两阶段提交协议。原子提交协议保证,更新事务以原子方式在每个复制方被提交或者夭折。因此,客户端能从任何复制方得到一致的数据。对于每个更新事务,ACP需要两轮或者三轮消息交换,当吞吐量很高且有多个复制方时,这将是极大的开销,从而降低***性能。
另一种方法是将事务日志从主方传播到从方(或者复制方),这是Berkeley数据库的复制特征的主要思想。当主方开始提交当前事务时,主方将事务日志记录传播到从方。然后,主方继续传播,直至接收到来自从方的所有确认。每个从方基于接收到的事务日志重做该事务,并且在成功提交该事务之后将确认消息发送到主方。这种方法需要主方必须绝对等待来自从方的所有确认,以便该主方确保客户端没有读取过时的结果。并且,这种方法看上去效率有点低。
上述两种方法是事务复制方法。还有快照复制方法试图使得复制方一致。尽管快照复制是最容易建立和维持的类型,但是这种复制要求每次刷新表格时拷贝所有数据。
发明内容
本发明通过从其它角度来考虑这个问题而提供用于更有效地提供数据库***的复制环境内的高性能修改事务的方法。实际上,不需要使得复制方与主方在任何时刻同步。如果***能保证没有过时的结果返回到客户端,则***能容忍复制方的少许不同步。
根据本发明的一个方面,提供一种用于提供数据库***的复制环境内的高性能修改事务的方法,其中事务日志从主方被传播到从方。本发明方法还包括主从方之间的或者从方之间的同步过程,并且当事务在从方故障时,引入“不同步对象”存储段来将由故障事务所影响的条目保持在该从方上。
同步过程包括用于正常情况下的主方与从方之间的sync-proc-ms和用于选择过程期间的从方之间的sync-proc-ss。在sync-proc-ms中,从方从主方得到有间隙的日志和增量日志,然后,从方从第一有间隙的事务日志开始重做操作。在sync-proc-ss中,从方与其它从方进行通信,以得到有间隙的日志和增量日志,然后,该从方从第一有间隙的事务日志开始重做操作。
给“不同步对象”存储段增加阈值,用于限定“不同步”对象的最大数量。
当事务在从方故障时,该从方将由该事务影响的所有条目均置于“不同步对象”存储段中。当针对该从方进行读取操作时,该从方首先检查“不同步对象”存储段。如果在“不同步对象”存储段中找到读取操作的条目,则该从方将该读取操作转发给其它复制方。在检查所述“不同步对象”存储段时,使用生存时间域,并且转发一次读取操作就将该生存时间域减一。“不同步对象”存储段在该从方从故障中恢复之后被清空。
从方在“同步过程”阶段期间清除所述“不同步对象”存储段中的条目。
根据本发明的另一方面,提供一种用于实现提供数据库***的复制环境内的高性能修改事务的方法的***。该***包括客户端和由多个复制方构成的服务器端。所述多个复制方中的一个为主方,而其余均为从方。该***还包括用于实现主从方之间的或者从方之间的同步过程的装置和用于存储“不同步对象”存储段的“不同步对象”存储器。在“不同步对象”存储段中有故障事务所影响的条目。
本发明能从以下几个方面为数据库***的复制环境内的更新事务带来更好的性能:
1)通过与ACP方法相比较,这种方法将事务日志直接从主方传播到从方,从而避免协调方与参与方之间的频繁消息交换的开销。
2)通过与传统的日志传播方法相比较,这种方法使得该***能容忍复制方的少许不同步。并且,主方能快速完成事务T,而不用在这种事务T在一个复制方处故障时无限地等待来自所有复制方的确认。
附图说明
下面结合附图来详细描述本发明,其中:
图1示出主方收到来自客户端的更新请求时的***处理流程。
图2示出从方收到来自主方的更新要求时的***处理流程。
图3示出从方收到来自客户端/其他从方的查询要求时的***处理流程。
图4示出从方发起同步过程的时机。
具体实施方式
本发明的方法仍使用从主方到从方的事务日志传播,下面结合图1至图3详细说明***处理更新及查询请求时的流程。如图1所示,当主方收到来自客户端修改条目E的请求时,主方分派事务T修改条目E。然后,主方将事务T的日志传播到其他复本并等待其他复制节点的应答。最后根据主方修改事务结果来通知客户端修改是否成功。
如图2所示,当从方收到来自主方的事务日志时,从方首先查找“不同步对象”存储段,以确定该存储段中是否有该事务所影响的条目。如果该条目在存储段中,则设置更新事务结果为失败并应答主方更新事务执行结果。如果该条目不在存储段中,则从方分派事务T执行更新操作。如果更新操作成功,则直接应答主方更新事务执行结果。如果更新操作不成功,则将所影响的条目填入到“不同步对象”存储段中,然后应答主方更新事务执行结果。
如图3所示,当从方收到来自客户端或其他复制节点转发的查询请求时,查找“不同步对象”存储段,从而确定该存储段中是否有该查询事务所影响的条目。如果该条目不在存储段中,则执行该查询,并将查询结果直接返回给相应客户端。如果该条目在存储段中,则检查查询请求中是否有TTL域。如果其中没有TTL域,则在查询请求中加入TTL(通常初始化为2)和客户端信息(地址端口),以得到新的查询请求;然后从复制节点列表中选择一节点并转发新的查询请求。如果其中有TTL域,则检查TTL是否大于零。如果TTL大于零,则从复制节点列表中选择一节点并转发新的查询请求。如果TTL不大于零,则直接回复客户端,“没有最新数据”。
本发明方法具有以下两个重要部分:同步过程和“不同步对象”存储段。
1.同步过程
同步过程对于本方法非常重要,它用来解决主从方数据暂时不一致的问题。这种暂时不一致是由于主方在进行修改事务时不必等待所有从方的应答而可能引起的从方暂时与主方的数据不一致。在本发明方法中,如图4所示,有两个同步过程:一个同步过程是主方与从方之间的sync-proc-ms;另一个同步过程是从方之间的sync-proc-ss。
sync-proc-ms被用在正常情况下,并且能由主方或者由从方发起。sync-proc-ms的主要步骤是:
1)从方从主方得到有间隙的日志和增量日志。因为如果从方不能重做这些操作则移除那些事务日志,所以该日志是有间隙的。
2)然后,从方从第一有间隙的事务日志开始重做这些操作。
例如,主方上的事务T1、T2、T3、T4的日志序列为[T1,T2,T3,T4],同时,因为事务T2和T4故障并且移除了事务T2和T4的日志,所以从方具有日志序列[T1,T3]。因此,在sync-proc过程期间,从方应向主方请求增量日志(T4)和有间隙的日志(T2),然后,该从方从事务T2开始重做这些操作,事务T2是第一有间隙的事务日志。并且,这个同步过程能确保复制方的数据一致性。
sync-proc-ss在选择过程期间被启动。该选择过程是指,一旦旧的主方崩溃就从活动的复制方中选择新的主方。如果该主方崩溃,并且其它复制方在其上具有小部分不同步数据,则这些复制方应在选择期间交换其日志。sync-proc-ss的主要步骤是:
1)该从方与其它从方进行通信,以得到有间隙的日志和增量日志。这确保所有活动的复制方具有正确序列(也就是正确的事务提交序列)的完整的事务日志。
2)然后,该从方从第一有间隙的事务日志开始重做这些操作。
2.“不同步对象”存储段
存储段被引入这种方法来将由故障的事务影响的那些条目保持在该从方上。这种存储段被称为“不同步对象”存储段。
下面描述本方法如何使用这种存储段来实现其目的。
1)填充“不同步对象”存储段
当主方从客户端接收到更新事务T时,主方首先执行该事务T。当主方开始提交事务T时,该主方将日志发送给从方。然后,该主方自身阻塞,直至接收到来自从方的所有确认。每个从方基于接收到的事务日志重做该事务,并且在成功提交该事务之后将确认消息发送给主方。一旦从方不能执行事务T,该从方就将由这个更新事务影响的所有条目均置于该“不同步对象”存储段中。
此处假设,当从方将这些条目置于该存储段中时,不读取这种被影响的条目。
2)使用“不同步对象”存储段
当针对这个从方进行读取操作时,从方首先检查该存储段。如果在这个存储段中找到读取操作的条目,则从方将该读取操作转发给其它复制方。并且,那个复制方将“最新的”结果返回给客户端。
实际上,不同步的从方不必知道,其它复制方是否处于最新状态。并且还可能的是,每个复制方具有小部分过时的数据。不同步的从方只用选择另一复制方来服务来自客户端的查询操作。如果那种复制方还具有对于这个查询过时的数据,则该复制方继续将该查询转发给下一复制方。为了避免无止境的转发,TTL(生存时间)域能被用于该查询。如果不同步的从方转发查询,则将该查询的TTL减一。如果从方接收到TTL为零的查询,则该从方将不再转发该查询。
当该从方在正常情况下(而不是在同步过程中)重做那些事务时,还应检查该存储段。如果在这个存储段中找出更新操作的条目,则该从方将不再继续进行这个事务。这个事务被视为在这个从方上故障,并且存储段填充过程不能被忽略。
3)清空该“不同步对象”存储段
由于该存储段的内容不必稳定地被存储,所以该存储段将在该从方从崩溃中恢复之后被清空。
除了这种情况,该从方还在“同步过程”阶段期间清除这个存储段中的条目。
4)超过“不同步对象”存储段的阈值
出于性能考虑,给该存储段增加阈值。该阈值限定了“不同步”对象的最大数量。因为针对每个读取/更新操作查询这个存储段的内容,所以对于该存储段必须给出阈值;并且如果“不同步”对象的数量非常大,则将会降低***性能。
该存储段的阈值还应谨慎地调整,以便该从方能避免由于长期处于不同步状态而进行整个数据库传输。
如果该存储段在填充时溢出,则该从方必须启动“同步过程”中所提及的sync-proc-ms过程,并且停止sync-proc-ms阶段期间的业务。
总之,这种思想将故障事务的受影响的条目标记为“不同步的”,并且在下次读取操作访问这些条目时,从方自动将读操作转发给正确的复制方,因此没有过时的结果返回给客户端。
尽管对本发明进行了以上的描述,但是显然本发明不是局限于此,而是在随附的权利要求所公开的范围之内以多种方式进行修改。

Claims (19)

1.一种用于提供数据库***的复制环境内的高性能修改事务的方法,在该方法中,事务日志从主方被传播到从方,其特征在于,该方法包括主从方之间的或者从方之间的同步过程,并且当事务在从方故障时,引入“不同步对象”存储段来将由故障事务所影响的条目保持在该从方上。
2.根据权利要求1所述的方法,其特征在于,所述同步过程包括用于正常情况下的主方与从方之间的同步过程sync-proc-ms和用于选择过程期间的从方之间的同步过程sync-proc-ss。
3.根据权利要求2所述的方法,其特征在于,在sync-proc-ms中,从方从主方得到有间隙的日志和增量日志,然后,从方从第一有间隙的事务日志开始重做操作。
4.根据权利要求2所述的方法,其特征在于,在sync-proc-ss中,从方与其它从方进行通信,以得到有间隙的日志和增量日志,然后,该从方从第一有间隙的事务日志开始重做操作。
5.根据权利要求1所述的方法,其特征在于,给所述“不同步对象”存储段增加阈值,用于限定“不同步”对象的最大数量。
6.根据权利要求1至5之一所述的方法,其特征在于,当事务在从方故障时,该从方将由该事务影响的所有条目均置于所述“不同步对象”存储段中;当针对该从方进行读取操作时,该从方使用所述“不同步对象”存储段;所述“不同步对象”存储段在该从方从故障中恢复之后被清空。
7.根据权利要求6所述的方法,其特征在于,当针对该从方进行读取操作时,该从方首先检查所述“不同步对象”存储段;如果在所述“不同步对象”存储段中找到读取操作的条目,则该从方将该读取操作转发给其它复制方。
8.根据权利要求7所述的方法,其特征在于,在检查所述“不同步对象”存储段时,使用生存时间域,并且转发一次读取操作就将该生存时间域减一。
9.根据权利要求1至5之一所述的方法,从方在“同步过程”阶段期间清除所述“不同步对象”存储段中的条目。
10.一种用于实现提供数据库***的复制环境内的高性能修改事务的方法的***,该***包括客户端和由多个复制方构成的服务器端,所述多个复制方中的一个为主方,而其余均为从方,其特征在于,该***还包括:
用于实现主从方之间的或者从方之间的同步过程的装置,
“不同步对象”存储器,用于存储“不同步对象”存储段。
11.根据权利要求10所示的***,其特征在于,实现同步过程的装置在正常情况下实现主方与从方之间的同步过程sync-proc-ms,而在选择过程期间实现从方之间的同步过程sync-proc-ss。
12.根据权利要求11所述的***,其特征在于,在sync-proc-ms中,从方从主方得到有间隙的日志和增量日志,然后,从方从第一有间隙的事务日志开始重做操作。
13.根据权利要求11所述的***,其特征在于,在sync-proc-ss中,从方与其它从方进行通信,以得到有间隙的日志和增量日志,然后,该从方从第一有间隙的事务日志开始重做操作。
14.根据权利要求10所述的***,其特征在于,在所述“不同步对象”存储段中包含故障事务所影响的条目。
15.根据权利要求14所述的***,其特征在于,给所述“不同步对象”存储段增加阈值,用于限定“不同步”对象的最大数量。
16.根据权利要求10至15之一所述的***,其特征在于,当事务在从方故障时,该从方将由该事务影响的所有条目均置于所述“不同步对象”存储器中;当针对该从方进行读取操作时,该从方使用所述“不同步对象”存储器;所述“不同步对象”存储器在该从方从故障中恢复之后被清空。
17.根据权利要求16所述的***,其特征在于,当针对该从方进行读取操作时,该从方首先检查所述“不同步对象”存储器;如果在所述“不同步对象”存储器中找到读取操作的条目,则该从方将该读取操作转发给其它复制方。
18.根据权利要求17所述的***,其特征在于,在检查所述“不同步对象”存储器时,使用生存时间域,并且转发一次读取操作就将该生存时间域减一。
19.根据权利要求11至14之一所述的***,从方在“同步过程”阶段期间清除所述“不同步对象”存储段中的条目。
CNA2008100040164A 2008-01-16 2008-01-16 数据库***的复制环境内的高性能修改事务的方法及*** Pending CN101488134A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2008100040164A CN101488134A (zh) 2008-01-16 2008-01-16 数据库***的复制环境内的高性能修改事务的方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008100040164A CN101488134A (zh) 2008-01-16 2008-01-16 数据库***的复制环境内的高性能修改事务的方法及***

Publications (1)

Publication Number Publication Date
CN101488134A true CN101488134A (zh) 2009-07-22

Family

ID=40891030

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008100040164A Pending CN101488134A (zh) 2008-01-16 2008-01-16 数据库***的复制环境内的高性能修改事务的方法及***

Country Status (1)

Country Link
CN (1) CN101488134A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631843A (zh) * 2012-08-20 2014-03-12 国际商业机器公司 关系数据库中时间唯一索引中的间隙检测的方法和***
WO2018157602A1 (zh) * 2017-02-28 2018-09-07 华为技术有限公司 一种同步活动事务表的方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631843A (zh) * 2012-08-20 2014-03-12 国际商业机器公司 关系数据库中时间唯一索引中的间隙检测的方法和***
CN103631843B (zh) * 2012-08-20 2017-03-01 国际商业机器公司 关系数据库中时间唯一索引中的间隙检测的方法和***
WO2018157602A1 (zh) * 2017-02-28 2018-09-07 华为技术有限公司 一种同步活动事务表的方法及装置
US11442961B2 (en) 2017-02-28 2022-09-13 Huawei Technologies Co., Ltd. Active transaction list synchronization method and apparatus

Similar Documents

Publication Publication Date Title
JP4241940B2 (ja) 分散形データベース内でトランザクションをするための方法
US8140623B2 (en) Non-blocking commit protocol systems and methods
US6898609B2 (en) Database scattering system
CN103473318B (zh) 一种面向内存数据网格的分布式事务保障方法
CN101512527B (zh) 用于处理请求的数据处理***和方法
CN101751415B (zh) 元数据服务***、元数据同步方法与写服务器更新方法
JP6220851B2 (ja) 2フェーズコミットコールの厳密な順序付けに基づいたトランザクションリカバリをサポートするためのシステムおよび方法
US7478400B1 (en) Efficient distributed transaction protocol for a distributed file sharing system
CN105512266A (zh) 一种实现分布式数据库操作一致性的方法及装置
KR20140068916A (ko) 클라이언트/서버 시스템에서 분산된 복제 콘텐츠들의 강한 일관성을 유지하는 방법 및 시스템
CN104809510A (zh) 一种提供票务支持的票池中间件的构建、购票及锁票方法
CN113987064A (zh) 数据处理方法、***及设备
CN112162846B (zh) 事务处理方法、设备及计算机可读存储介质
EP4213038A1 (en) Data processing method and apparatus based on distributed storage, device, and medium
CN106484321A (zh) 一种数据存储方法及数据中心
CN112527759B (zh) 日志执行方法、装置、计算机设备及存储介质
US11003550B2 (en) Methods and systems of operating a database management system DBMS in a strong consistency mode
WO2023082992A1 (zh) 数据处理方法以及***
CN107870982A (zh) 数据处理方法、***和计算机可读存储介质
CN103428288B (zh) 基于分区状态表和协调节点的副本同步方法
CN116055563A (zh) 基于Raft协议的任务调度方法、***、电子设备和介质
CN113905054B (zh) 基于RDMA的Kudu集群数据同步方法、装置、***
CN110196788B (zh) 一种数据读取方法、装置、***及存储介质
WO2011073923A2 (en) Record operation mode setting
CN101488134A (zh) 数据库***的复制环境内的高性能修改事务的方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20090722