一种基于数据范围的数据库数据同步方法技术

技术编号:5504501 阅读:291 留言:0更新日期:2012-04-11 18:40
一种基于数据范围的数据库数据同步方法,该方法包括以下步骤:将数据库保存的数据进行分段;确定内容变化的数据段;更新数据段原有的内容。本发明专利技术提出的基于数据范围的数据库数据同步方法,将数据分段后再使用MerkleTree算法计算,比较和恢复数据,在大型分布式数据存储系统中,不同的数据存储节点之间进行内容同步,达到数据最终一致性。

【技术实现步骤摘要】

本专利技术涉及一种数据库系统,尤其涉及一种数据库数据同步方法。
技术介绍
在一般的大型分布式数据库系统中,为了保证数据的可靠性,一个有效数据往往 会有多个备份,这些备份会分布在不同的数据节点上,在一般情况下,这些分布在不同节点 的数据能保证数据的一致性,但是在系统出现异常的情况下(如系统下电,网络故障等),就 有可能出现系统中数据节点的数据不一致的状况。当系统恢复正常后,就必须要对数据进 行恢复,以保证整个系统的数据一致性。Merkle Tree是常用的计算数据一致性的工具。 Merkle Tree是一个完全二叉树,数据存储成树状结构,叶子节点的摘要信息(Digest)是其 内容的摘要(使用MD5、SHA1等算法得到),每个非叶子节点的摘要是其所有子节点的摘要信 息的摘要。这样一旦某个节点发生变化,其Digest的变化会迅速传播到根节点。需要同步 的系统只需要不断查询根节点的Digest,一旦有变化,顺着树状结构就能够在O(IogN)级 别的时间找到发生变化的内容,从而实现快速定位发生变化的数据位置,在同步数据的时 候也只需要同步发生变化的小部分数据。但是当数据量异常庞大的时候,Merkle Tree的 建立过程就是一个漫长的过程,当出现插入或者删除数据的时候,要维护系统Merkle Tree 的开销就会很大,所以这种以单个有效数据作为Merkle Tree叶子节点的数据同步方式并 不适合大型数据存储系统。
技术实现思路
为了解决现有技术存在的不足,本专利技术的目的在于提供一种基于数据范围的数据 库数据同步方法,可以节省大量带宽和计算资源,提高大型数据存储系统数据更新的速度 禾口效率。为实现上述目的,本专利技术提供的,该方 法包括以下步骤将数据库保存的数据进行分段; 确定内容变化的数据段; 更新数据段原有的内容。其中,所述将数据库保存的数据进行分段的步骤是将数据按照Key划分成相等的 N段,其中N=2m,m为自然数。其中,所述确定内容变化的数据段,进一步包括以下步骤 节点之间进行同步开始认证;每个节点各自构建Merkle Tree,并获取数据段的摘要信息; 将对应的数据段的摘要信息进行比较,确认内容变化的数据段。其中,所述节点之间进行同步开始认证进一步包括以下步骤数据同步发起节点构建同步开始消息SYNC_START,并发送该消息给数据同步响应节点。 数据同步响应节点向数据同步发起节点发送同步开始认可消息SYNC_START_ACK1 ; 数据同步发起节点向数据同步响应节点发送同步开始认可消息SYNC_START_ACK2。其中,所述每个节点各自构建Merkle Tree,并获取数据段的摘要信息是按照数据 同步发起节点划分的数据段分别计算每个数据段的摘要信息。其中,所述将对应的数据段的摘要信息进行比较,确认内容变化的数据段的步骤 是根据Merkle Tree的比较规则,自顶向下比较两边的数据,最终得到摘要信息不同的数据 段。其中,所述计算每个数据段的摘要信息进一步包括叶子节点采用MD5或SHAl算 法;非叶子节点采用MD5、SHAl或者异或算法。其中,所述更新数据段原有的内容的步骤,进一步包括以下步骤根据各节点相应数据段摘要信息的差异,确定需要传输的数据段;各节点之间进行相 应数据段的数据传输,进行数据的更新。其中,所述各节点之间进行相应数据段的数据传输,进行数据的更新包括需要更 新到数据同步响应节点的数据段,数据同步发起节点首先向数据同步响应节点发送同步更 新通知消息SYNC_UPDATE_NOTICE ;所述数据同步发起节点和数据同步响应节点向对方发 送同步更新范围消息SYNC_UPDATE_RANGE ;所述数据同步发起节点和数据同步响应节点相 互传送数据,传送的数据包括数据内容以及在本节点最后更新的时间戳;完成数据传输后, 根据传输数据中每个数据的时间戳,来比较对方节点的数据和本地节点的数据,以确定最 新的数据,并用最新的数据更新本地数据。本专利技术的,将数据分段后再使用Merkle Tree算法计算,比较和恢复数据,解决了在一般的大型分布式数据库系统中,数据异常庞大 时,如果仍以单个有效数据作为Merkle Tree的叶子节点,计算和维护Merkle Tree的工作 就会消耗巨大的计算资源和网络带宽,以及对不同的数据存储节点之间进行内容同步,达 到最终一致性的问题。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本专利技术而了解。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,并与本专利技术的 实施例一起,用于解释本专利技术,并不构成对本专利技术的限制。在附图中图1为根据本专利技术数据同步双节点架构示意图;图2为根据本专利技术的基于数据范围的分布式数据库数据同步方法流程图; 图3为根据本专利技术的数据分段示意图; 图4为根据本专利技术的Merkle Tree的构建示意图。具体实施例方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实 施例仅用于说明和解释本专利技术,并不用于限定本专利技术。本专利技术是通过构建基于数据范围的Merkle Tree来比较大型分布式数据存储系统 的不同数据节点上的数据,最终实现数据同步的方法。图1为根据本专利技术数据同步双节点架构示意图,如图1所示,在具有备份策略的数 据存储系统中,负责存储相同数据的若干个节点一般都会同时保存数据,在这类系统中,这 些数据节点中保存的数据是一致的。为了简化叙述,我们定义节点A和节点B,这两个节点 负责保存相同内容的数据,数据内容包括但不限于关系型数据表,以key/value形式保存 的数据集等等。我们定义节点A和节点B保存的数据以key/value形式存在,并且在保存 数据的过程中已经按照key以某种方式进行了排序,key的范围丛Key MIN到Key MAX。对 于若干个节点的数据同步更新的方法与本专利技术双节点之间的数据同步更新实施例相同。图2为根据本专利技术的基于数据范围的分布式数据库数据同步方法流程图,下面将 参考图2,对本专利技术的基于数据范围的分布式数据库数据同步方法进行详细描述。首先,在步骤201,节点A (数据同步发起节点)发起数据同步操作,将负责保存的 数据按照key进行分段(Range)。图3为根据本专利技术的数据分段示意图,如图2所示,将数据划分成基本相等的N个 数据段,数据段之间的分隔点以Keyl,Key2,Key3…KeyN-I进行标识,按照Merkle Tree的 要求,N=2m,m是自然数。在步骤202,节点A构建同步开始消息SYNC_START,并发送该消息给节点B (数 据同步响应节点),在消息中标明需要同步哪个时间点的数据,或者是哪个时间点的快照 (snapshoot)数据,以及用于划分Range的Key列表。划分Range的Key列表,也可以不通 过消息传递,而是在A和B上定义相同的划分规则,保证分隔点是一致的。节点B接收到该消息后,就向节点A发送同步开始认可消息1( SYNC_START_ACK1 )。节点A在收到节点B的SYNC_START_ACK1消息后,开始构建本节点的Merkl e Tree,并计算每个数据段(Range)的摘要信息(Digest),并向节点B发送本文档来自技高网...

【技术保护点】
一种基于数据范围的数据库数据同步方法,该方法包括以下步骤:将数据库保存的数据进行分段;确定内容变化的数据段;更新数据段原有的内容。

【技术特征摘要】

【专利技术属性】
技术研发人员:张元丰张卫平刘为怀张松波饶春平杨立辉
申请(专利权)人:北京播思软件技术有限公司
类型:发明
国别省市:11[中国|北京]

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

1