内存数据库数据同步的方法

文档序号:7652759阅读:291来源:国知局
专利名称:内存数据库数据同步的方法
技术领域
本发明涉及实时内存数据库系统领域,尤其涉及内存数据库数 据同步的方法。
背景技术
实时内存数据库是将数据对象存储在内存中,所有的数据访问 及操作都在内存中完成,大大提高了系统的性能,因此在通信、控 制等领域已被广泛使用。实时内存数据库的功能主要体现在两个方
面 一方面是为业务提供数据配置信息,保证业务的正常运行;另 一方面是相关数据配置变化后通过数据同步实时对巴数据分发到各 个归属数据库,并通知业务进行更新,保证业务与数据的一致性。
数据同步是在配置修改后,把改变的表同步记录到其他相关的 内存数据库的过程,目的是保持各个内存数据库中的数据一致,并 使改变的数据及时生效。 一舶:数据库数据同步的方法为
1) 设计两个进程, 一个为数据发送进程,另一个为数据接收 进程。发送进程通知接收进程准备同步的命令消息,接收 进程回应表示准备好接收同步数据。
2) 发送进程发送消息,表明当前数据同步过程需要同步的数 据表信息。接收进程回应确认,并记录待同步的表信息。
3) 发送进程开始表数据的同步,接收进程接收表同步的数据放到内存緩冲区中。
4) 表数据发送结束。
5) 对待同步的表依次重复3)、 4)过程。
6) 发送进程发送同步结束消息,接收进程回应确认消息,同 步结束。
图1示出了上述数据同步的常用过程。传输数据从发送和4妄收 緩冲区中提取和保存。如果出现异常,恢复到初始状态,对于表数 据的传送有三次重传才几会,否则同步失败。这种同步流程对于表数 据比4交少的情况下,比较有效。但是存在如下问题
1 ) 进程功能简单。发送进程只负责发送,接收进程只负责接 收同步凄t据。
2) 效率不高。表数据的同步传送,采用发送一包等待确认后, 发送下一包的方法,从数据传送的效率来看,不是最佳选 择。另外上述同步方法只能单向同步,不能实现双向同步。
3) 资源利用率4氐。进程的i殳计可以通过定义一个同步进程, 实现发送接收同时可以进4于的方式,减少进程的数量,节 约内存资源。
因此,需要提出一种既能节省资源,又能快速高效的实现双向 ^t据同步的通用方法。

发明内容
为了实现上述目的,本发明提出一种内存数据库数据的同步方 法。设计一个数据同步进程,通过在表数据包中添加发送序号和接 收序号以及数据包回应标志内容,在进程中定义发送序号,待4妄收 序号和祠4妄收确i人序号等私有变量,来实i见一次可以同时发送和4妄 收多包表数据包的方法,最大效率利用链路的带宽,同步传送数据。
该方法包括以下步骤为发送方和接收方设置同一个进程,在 它们之间建立通信连接,并且对要传送的数据包添加包信息,在进 程中定义有多个数据包标识;发送方根据多个数据包标识对包信息 进行处理,并将经过处理的数据包发送给接收方;以及接收方接收 经过处理的数据包,记录并保存经过处理的数据包的包信息,以及 发送接收响应。其中,多个数据包标识为发送序号、待接收序号、 以及待接收确认序号。且包信息包括发送方数据包序号、第一接收 方待发送数据包序号、以及回应标识。
在该方法中,发送方根据多个数据包标识对包信息进行处理包 括发送方根据发送序号以及待接收序号将每个要传送的数据包的 发送方数据包序号以及第 一接收方待发送数据包序号编号。当连续 发送可同时发送的数据包或者最后一个数据包时,将回应标识设定 为真,以及当发送其它数据包时,将回应标识设定为假。
此外,在该方法中,将经过处理的数据包发送给接收方包括 当回应标识为真时,设置定时器,定义最大重发次数,并且发送可 同时发送的数据包或者最后一个数据包。如果定时器超时,重新发 送上一个回应标识^殳定为真的^:据包,并且重新i殳置定时器。如果 同一个数据包的发送次数超过最大重发次数,则同步失败,并等待 下一次同步。另外,在该方法中,发送接收响应包括当接收到带有是否需 要4妄收方回应的标识i殳定为真的lt:悟包时,向发送方发送带有标识 的回应包。其中,回应包的标识包括第二接收方待发送数据包序号。 且第二接收方待发送数据包序号为连续接收到的下一个数据包的 发送方数据包序号。
通过本发明的上述方面,^是供了 一种高效可靠的内存^t据库的 同步方法,既能节省资源,又能同时实现发送4妻收同步数据,而且 可以最大利用链路的带宽。
本发明的其它特4i和优点将在随后的i兌明书中阐述,并且,部
分地从说明书中变得显而易见,或者通过实施本发明而了解。本发 明的目的和其他优点可通过在所写的说明书、权利要求书、以及附 图中所特别指出的结构来实现和获得。


附图用来提供对本发明的进一步理解,并且构成说明书的 一部 分,与本发明的实施例一起用于解释本发明,并不构成对本发明的
限制。在附图中
图1是数据同步的常用过程图2是才艮据本发明的内存数据库数据方法的过程图3是根据本发明的数椐同步过程图4是根据本发明的数据同步进程的状态跃迁图5是根据本发明的数据同步程序实现的流程图[1],其示出的 是处理Tl, T2表数据开始发送的流程图;图6是根据本发明的数据同步程序实现的流程图[2],其示出的 是表数据接收处理的流程图;以及
图7是根据本发明的数据同步程序实现的流程图[3],其示出的 是RR包4妄收处理的流程图。
具体实施例方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此 处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本 发明。
在本实施例中,提供了 一种用于内存数据库数据的同步方法。
图2是才艮据本发明的内存数据库数据方法的过程图。
根据本发明的一个实施例,如图2所示,它包括以下步骤S202, 为发送方和接收方设置同一个进程,在它们之间建立通信连接,并 且对要传送的数据包添加包信息,在进程中定义有多个数据包标 识;S204,发送方根据多个数据包标识对包信息进行处理,并将经 过处理的数据包发送给接收方;S206,接收方接收经过处理的数据 包,记录并保存经过处理的数据包的包信息,以及发送接收响应。
图3是4艮据本发明实施例的完整凄t据同步流程,表数据同步过 程贯穿在数据同步的表数据的同步过程中。
如图3所示,根据本发明实施例的内存数据库数据的同步方法, 包括以下步骤其中假定一次可以发送的最大数据包数为N-l,且 其中N>=2,(1 )进程中定义发送緩沖区,緩冲区大小为N个表数据包的大小。(2) 定义发送序号Vs为进程待发送下一包表数据序号, 0=<Vs<=N-l。(3) 定义接收序号Vr为进程待接收的下一包表数据序号, 0=<Vr<=N-l。(4 )定义表数据包中的待接收序号Nr为期望发送端发送的序 号,该变量同时表示接收端已经接收了所有并包括Nr-l序号的表数 据包。(5)定义表数据包中的发送序号Ns为当前数据包发送序号。(6 ) 定义确认序号Va为发送端进程待4妄收端确认的表数据 包序号,Va<=Nr<=Vs。(7)上述变量初始值为0,进程上电,数据同步异常或者链路 恢复时]1!武初始{直。(8 ) 4妄收回应RR包,该回应RR包包含Nr值,表明lt据才妄 收端已经接收到Nr之前的所有表数据包。(9) 定义数据包回应标志P/F,该标志位为1,表示接收端接 收到数据后需发送接收回应包RR或者表数据包。该标志位为0, 表明该凄t」梧包不需4妾收端回应。(10) 表数据包,包含Ns, Nr以及P/F比特位控制信息以及 表数据,其中P/F为1,表明需要对端回应RR[P/F为l]包。(11 )定义RetryCount为重发次数,初始值为0, T2超时重发 时加l,最大重发次凄t为M,其中M〉1。初始态时为1,进寿呈同步 异常或者表数据传递结束时赋初始值。
(12 )定义表凄t才居包变量TansmitTuples, AcknolodgeTuples和 TotalTuples: TansmitTuples表示已经插入到发送i爰冲区中的表凄t据 包数,AcknolodgeTuples为已经为对端接收确认的表数据包数, TotalTuples为表数据包总数。这些变量在表数据开始发送时赋值, 接收表数据包过程中更新这些值。
(13 )定义进程发送数据包定时器Tl和超时定时器T2。其中 0<NT1<T2<(N+1)T1。 Tl的长度大概为数据包从发送到被对端接收 处理的时长。Tl超时处理,4巴未发送的表数据包发送到对端,并更 新Vs变量,重置T1定时器。如果表数据已经发送完毕,清除T2 定时器。如果已经发送了N-1包数据,重置T1定时器。T2定时器 超时,如果超时超过M次,本次同步失败,上述声明变量置初始4直。 否则发送(Vs-l)。/oN的表数据包给对端,P/F位为1,设置T2的定 时器为Tl的时长,T2的时长也可以定义为Tl的时长,但是设置 的时间应该在P/F为1的表数据包发送时设置。T2定时器在接收到 P/F为1的RR包后,重置。Tl发送表数据包后或者Tl超时后但 是表数据包未发送完成时重置。
(14) 数据发送的过程,发送端每隔Tl时长发送不超过N-1 包表数据包,每隔N-1包数据后者末尾一包表数据包的P/F位置1, 等待对端确认。对端回应确i人后,更新发送序号Vs和确认序号Va, 重置T2定时器,继续发送,直到表数据发送结束。如果没有确认, T2超时处理。
(15) 表数据接收时,如果接收包为待接收的数据包,处理该 表数据包到表空间。并更新Vr。如果是错包,根据Nr更新Va和Vs,并把待插入发送緩冲区的表数据包插入到发送緩沖区中,更新 表数据包变量。启动数据包发送流程。如果该数据接收包P/F位为 1,发送P/FM立为1RR包。(16 ) RR数据包接收处理,根据Nr更新Va和Vs,并把待插 入发送緩冲区的表数据包插入到发送緩冲区中,更新表数据包变 量,启动数据包发送流程。如果该数据接收包P/F位为1,重置T2 定时器。图4是上述数据同步进程状态的跃迁图。数据同步进程在上电 消息后,初始化声明的变量,然后跃迁到工作状态,在数据同步过 程异常后,又3夭迁回初始态。表^t据同步开始后重新3夭迁到工作态。根据本发明的另一个实施例,图5是表数据发送开始时的流程 图,以及T1, T2超时的处理流禾呈。表发送开始流程获取TotalTuples的数值,并置变量 TrasmitTuples和AcknolodgeTuples的4直为0。纟且织不多于N的凝:才居包 依次放到Vs开始的发送緩冲区中,并发送Vs数据包,置末尾包或者 N-l序号包的回应标志为1 。 TrasmitTuples置添加到发送緩沖区中的 数目;设置T1定时器。Vs = (Vs+l)%N,设置T2定时器。Tl超时处理流程1.如果AcknolodgeTuples等于TotalTuples,表 数据同步结束,T2定时器清除,进程到工作状态。2.如果 TotalTuples〉AcknolodgeTuples或者Vs != (Va+N-1)。/。N,发送Vs凄t据 包纟合对端,其中Ns-Vs, Nr=Vr,重置T1定时器。Vs = (Vs+1)%N。 否则如果Vs-:(Va+N-l)。/。N,重置T1定时器。进程到工作态。T2超时处理1. RetryCounts+l,如果RetryCounts〉M,表明同 步失败,变量初始化,进程到初始状态。2.发送(Vs-l)。/。N序号的包给对端,P/F位为1,设置T2定时器为Tl的长度。进程到工作 态。才艮据本发明的又一个实施例,图6为接收表凄t据的同步流程 如果Ns--Vr,表数据包处理到表空间,Vr=(Vr+l)%N。如果条件Va〈-NK二Vs不满足,则同步错误,变量初始化为初 始值,进程到初始态。否则更新变量AcknolodgeTuples 4吏 AcknolodgeTuples = AcknolodgeTuples+((Nr-Va)+N)%N。如果此时表数据已经发送完毕,Tl、 T2定时器清除,并且清除 RetryCounts。进程到工作态。如果还有表数据需要传送,如果 Va!-Nr,则把待插入的表数据包按照^^式C气(Nr-Va)+N)。/。N, 4巴 [TrasmitTuples,TrasmitTuples+C]或者[TmsmitTuples,TotalTuples]的 数据包依次从Va添加到发送緩沖区中,对满足TrasmitTuples。/oN-0 或者TrasmitTuples-TotalTuples的数据包,回应标志P/F位置为1;更 新TrasmitTuples-TrasmitTuples+C或者TrasmitTuples = TotalTuples; 更新Va使Va二Nr。然后,对于满足发送条件的Vs的表数据包发送到 对端,更新Vs变量,如果P/F为1,发送RR包给对端。重置T1定时 器。进程到工作态。图7为RR包接收处理流程。除表凄t据包处理外和图6处理相 同。还有对于RR包的P/F为1的处理为重置T2定时器。由上可知,本发明既能节省资源,又能同时实现发送接收同步 数据,而且可以最大利用链路的带宽,提供了一种高效可靠的内存 凄t据库的同步方法。以上所述^f又为本发明的优选实施例而已,并不用于限制本发 明,对于本领域的4支术人员来i兌,本发明可以有各种更改和变化。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进 等,均应包含在本发明的保护范围之内。
权利要求
1.一种内存数据库数据的同步方法,其特征在于,包括为发送方和接收方设置同一个进程,在它们之间建立通信连接,并且对要传送的数据包添加包信息,在所述进程中定义有多个数据包标识;所述发送方根据所述多个数据包标识对所述包信息进行处理,并将经过处理的数据包发送给所述接收方;以及所述接收方接收所述经过处理的数据包,记录并保存所述经过处理的数据包的包信息,以及发送接收响应。
2. 根据权利要求1所述的同步方法,其特征在于,所述多个数据 包标识为发送序号、待接收序号、以及待接收确认序号。
3. 根据权利要求2所述的同步方法,其特征在于,所述包信息包 括发送方数据包序号、第一接收方待发送数据包序号、以及回 应标识。
4. 根据权利要求3所述的同步方法,其特征在于,所述发送方根 据所述多个数据包标识对所述包信息进行处理包括所述发送方4艮据所述发送序号以及所述待接收序号将每 个所述要传送的数据包的所述发送方数据包序号以及所述第 一接收方待发送数据包序号编号。
5. 根据权利要求3所述的同步方法,其特征在于,当连续发送可 同时发送的^t据包或者最后一个^:据包时,将所述回应标识i殳 定为真,以及当发送其它数据包时,将所述回应标识设定为假。
6. 根据权利要求5所述的同步方法,其特征在于,所述将经过处 理的数据包发送给所述接收方包括当所述回应标识为真时,设置定时器,定义最大重发次 数,并且发送所述可同时发送的数据包或者所述最后一个数据 包。
7. 根据权利要求6所述的同步方法,其特征在于,如果所述定时 器超时,重新发送上一个所述回应标识i殳定为真的lt据包,并 且重新设置所述定时器。
8. 根据权利要求7所述的同步方法,其特征在于,如果同一个数 据包的发送次数超过所述最大重发次数,则同步失败,并等待 下一次同步。
9. 根据权利要求3所述的同步方法,其特征在于,所述发送接收 响应包4舌当接收到带有所述是否需要接收方回应的标识设定为真 的凄t据包时,向所述发送方发送带有标识的回应包。
10. 才艮据权利要求9所述的同步方法,其特征在于,所述回应包的 标识包括第二接收方待发送数据包序号。
11. 根据权利要求10所述的同步方法,其特征在于,所述第二接 收方待发送数据包序号为连续接收到的下一个数据包的发送 方数据包序号。
全文摘要
本发明公开了一种内存数据库数据的同步方法,它包括以下步骤为发送方和接收方设置同一个进程,在它们之间建立通信连接,并且对要传送的数据包添加包信息,在进程中定义有多个数据包标识;发送方根据多个数据包标识对包信息进行处理,并将经过处理的数据包发送给接收方;以及接收方接收经过处理的数据包,记录并保存经过处理的数据包的包信息,以及发送接收响应。
文档编号H04L7/00GK101299710SQ20071010157
公开日2008年11月5日 申请日期2007年4月30日 优先权日2007年4月30日
发明者胡民锋 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1