数据库系统的复制环境内的高性能修改事务的方法及系统技术方案

技术编号:3768000 阅读:322 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种用于提供数据库系统的复制环境内的高性能修改事务的方法及其系统。在本发明专利技术中,事务日志从主方被传播到从方,并且在主从方之间的或者在从方之间实现同步过程。当事务在从方故障时,引入“不同步对象”存储段来将由故障事务所影响的条目保持在该从方上。本发明专利技术在数据库系统的复制环境内提供更好性能的修改事务,同时确保客户端从来不返回过时的结果。

【技术实现步骤摘要】

本专利技术通常涉及一种方法,该方法在数据库系统的复制环境内提 供更好性能的修改事务,同时确保客户端从来不返回过时的结果。并 且本专利技术还涉及一种用于实现该方法的系统
技术介绍
如今,复制技术被广泛用于数据库系统中。复制技术能通过将某 些读取请求重定向到复制方来平衡工作负荷。并且最重要的是,复制技术使得系统可用性高,而且避免单点故障。复制环境的问题是复制方之间的数据一致性,这意味着系统应确 保客户端一旦在系统成功返回在前的更新事务之后能得到任何查询的最新结果。现有多种方法来解决上述问题。其中一种方法是原子提交协议(ACP),诸如两阶段提交协议。原子提交协议保证,更新事务以原子 方式在每个复制方被提交或者夭折。因此,客户端能从任何复制方得 到一致的数据。对于每个更新事务,ACP需要两轮或者三轮消息交换, 当吞吐量很高且有多个复制方时,这将是极大的开销,从而降低系统 性能。另一种方法是将事务日志从主方传播到从方(或者复制方),这 是Berkeley数据库的复制特征的主要思想。当主方开始提交当前事务 时,主方将事务日志记录传播到从方。然后,主方继续传播,直至接 收到来自从方的所有确认。每个从方基于接收到的事务日志重做该事 务,并且在成功提交该事务之后将确认消息发送到主方。这种方法需 要主方必须绝对等待来自从方的所有确认,以便该主方确保客户端没 有读取过时的结果。并且,这种方法看上去效率有点低。上述两种方法是事务复制方法。还有快照复制方法试图使得复制 方一致。尽管快照复制是最容易建立和维持的类型,但是这种复制要 求每次刷新表格时拷贝所有数据。
技术实现思路
本专利技术通过从其它角度来考虑这个问题而提供用于更有效地提供 数据库系统的复制环境内的高性能修改事务的方法。实际上,不需要 使得复制方与主方在任何时刻同步。如果系统能保证没有过时的结果 返回到客户端,则系统能容忍复制方的少许不同步。根据本专利技术的一个方面,提供一种用于提供数据库系统的复制环 境内的高性能修改事务的方法,其中事务日志从主方被传播到从方。 本专利技术方法还包括主从方之间的或者从方之间的同步过程,并且当事 务在从方故障时,引入"不同步对象,,存储段来将由故障事务所影响 的条目保持在该从方上。同步过程包括用于正常情况下的主方与从方之间的sync-proc-ms 和用于选择过考呈期间的从方之间的sync-proc-ss。在sync-proc-ms 中,从方从主方得到有间隙的日志和增量日志,然后,从方从第一有 间隙的事务日志开始重做操作。在sync-proc-ss中,从方与其它从方 进行通信,以得到有间隙的日志和增量日志,然后,该从方从第一有 间隙的事务日志开始重做操作。给"不同步对象"存储段增加阈值,用于限定"不同步,,对象的 最大数量。当事务在从方故障时,该从方将由该事务影响的所有条目均置于 "不同步对象,,存储段中。当针对该从方进行读取操作时,该从方首 先检查"不同步对象"存储段。如果在"不同步对象"存储段中找到 读取操作的条目,则该从方将该读取操作转发给其它复制方。在检查 所述"不同步对象,,存储段时,使用生存时间域,并且转发一次读取 操作就将该生存时间域减一。"不同步对象,,存储段在该从方从故障 中恢复之后被清空。从方在"同步过程"阶段期间清除所述"不同步对象"存储段中 的条目。根据本专利技术的另一方面,提供一种用于实现提供数据库系统的复 制环境内的高性能修改事务的方法的系统。该系统包括客户端和由多 个复制方构成的服务器端。所述多个复制方中的一个为主方,而其余 均为从方。该系统还包括用于实现主从方之间的或者从方之间的同步5过程的装置和用于存储"不同步对象"存储段的"不同步对象"存储 器。在"不同步对象"存储段中有故障事务所影响的条目。本专利技术能从以下几个方面为数据库系统的复制环境内的更新事务带来更好的性能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的日志序列为,同时,因为事务T2和T4故障并且移除了事务T2和T4的日志,所以 从方具有日志序列。因此,在sync-proc过程期间,从方应 向主方请求增量日志(T4)和有间隙的日志(本文档来自技高网...

【技术保护点】
一种用于提供数据库系统的复制环境内的高性能修改事务的方法,在该方法中,事务日志从主方被传播到从方,其特征在于,该方法包括主从方之间的或者从方之间的同步过程,并且当事务在从方故障时,引入“不同步对象”存储段来将由故障事务所影响的条目保持在该从方上。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈世俊姚铁
申请(专利权)人:诺基亚西门子通信有限责任两合公司
类型:发明
国别省市:DE[德国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1