一种数据同步方法 【技术领域】
本发明涉及数据通信领域中的数据发送和接收,特别是一种让数据发送方或接收方的数据保持同步的方法,尤其涉及码分多址CDMA系统中利用主备方式保护数据完整性和一致性的问题。
背景技术
在码分多址CDMA系统中,经常要涉及到数据的同步问题,例如,为了提高系统的稳定性,各种重要的单板一般都采用主备方式的工作模式,数据保存在主备板上,这样当主板由于各种原因而出现异常时,我们可以迅速用备板代替主板工作,而防止系统出现混乱甚至崩溃。但也正由于采用了这种工作模式,我们不得不考虑另一个问题:数据如何正确、完整的在主备板上同步。
目前,数据同步被广泛运用于各个方面。例如,在服务器和单板之间以及主备板之间就有数据同步的问题,我们一般把它们称为前后台(服务器端到单板)数据同步和主备数据同步。现在,数据同步的方法很多,但一般都存在下面几个问题:
1,前后台或主备板之间的数据同步慢;
这样当单板在启动过程或手工进行数据同步时,花费的时间很长,影响了数据同步效率。
2,前后台或主备板之间的数据能够正常传输,但接收方数据不完整;
这是由很多原因引起的,可能是由于发送方组织数据错误引起的,也可能是由于接收方处理数据引起的;当出现数据的不完整后,如果不能进行正确处理,就可能引起系统运行异常。
3,前后台或主备板之间的数据经常不一致;
发送方和接收方数据地不一致性,容易导致系统出现故障。
【发明内容】
本发明的目的是为了解决在码分多址CDMA系统中,前后台或主备板之间的数据同步慢,数据的不一致及数据的不完整性问题。
为了达到上述目的,本发明的技术解决方案所提供的一种数据同步方法,是基于码分多址CDMA系统中,让数据发送方或接收方的数据保持同步的方法,其主要处理包括如下步骤:
第一步、数据发送方得到接收方现在的各种运行控制参数,例如当前数据库的版本号、版本参考号等;
第二步、数据发送方根据数据接收方的反馈和自己的数据更改情况决定要同步的方式;
第三步、发送方和接收方进行数据的相互传输;
第四步、发送方和接收方数据传输结束后,接收方进行数据的加载;
第五步、发送方和接收方数据同步结束后,发送方和接收方进行各种运行控制参数的设置。
所述的数据同步方法,其所述的第一步还包括:
(1)发送方收到接收方发来的开始进行主备数据同步的消息;
(2)发送方通知主板数据传输过程将要开始;
(3)接收方确认,向发送方发送反馈消息。
所述的数据同步方法,其所述的第二步还包括:发送方根据数据接收方的反馈和自己的数据更改情况决定要同步的数据和数据量。
所述的数据同步方法,其所述的第四步还包括:当接收方从内存缓冲区读取数据到内存后,传输过程成功完成,接收方向发送方发送完成信息。
本发明的思路主要是考虑到发送方和接收方的数据同步容易发生各种异常,所以在整个数据的同步过程中,采用了多种方法来进行异常处理,同时,还充分考虑了同步的效率及对系统性能的影响。本发明的创新点有如下几个方面:
1、数据发送方和接收方利用各种参数来决定同步的数据。
例如,当进行主备之间的数据同步时,并不是简单的把主板的数据传输到备板就可以的事情。在决定主备数据同步前,主板要进行各种运行控制参数的比较(例如主备板要比较各自当前数据库的版本号、版本参考号等参数),并且要判断自己的数据更改情况,从而决定哪些数据是应该进行同步的,这样,很大程度上提高了主备之间数据同步的性能。
2、数据同步过程中保证关系表的完整性和一致性。
例如,为保证数据传输过程中,数据能够正确、完整的传输到备板,以及保证数据加载时的完整性,备板在接受数据时,先将数据暂存在本地的内存缓冲区中,只有当本次传输的所有数据库表传输完毕后,才将缓冲区的数据加载到内存数据库中,并清空内存缓冲区。
同时,为保证主备之间进行同步的数据的完整性,前台在接收后台数据时,使前后台数据的传输和主备之间数据的传输成为互斥,并采用多种完整性互斥保护措施来保证数据的完整性。
3、数据库关系表的传输机制。
例如,在主备用的处理机之间的数据传输为数据库整表的传输,而且是多张变动过的数据库整表的传输。在前后台的数据库传输过程既有数据库整表的传输,也有数据库表变动部分的传输,对于数据库整表的传输和数据库表变动部分的传输,在将数据从内存缓冲区读到内存中时,设计采用不同的方法:当做数据库的整表传输时,数据从缓冲区到内存只有记录的插入操作,具体的做法是,先将接收方的数据库关系表打上预删除标记,再将缓冲区的记录调用插入方法读到内存中,最后将有预删除标记的记录删除;当做数据库的变动表传输时,直接根据传送过来的记录的数据更新标记做记录的插入或删除操作,在做记录的插入或删除操作时,设计算法使操作满足关系表数据的一致性约束要求。
4、数据接收方内存缓冲区的设计。
内存缓冲区是用来完成缓存传输过程中数据库文件的,由于传输的数据库大小最大可以是整个数据库文件的大小,所以缓冲区必须设置的足够大才行。
数据库的传输是多个数据库表的传输,传输过来的数据库表内部数据关系的一致性是由发送方来保证的,所以接收方必须在接收到的全部数据库表接收完成之后,才能将数据读到内存数据库,以保证数据库读到内存中后,前台数据表之间关系的一致性。这样就要求在内存缓冲区构造一个文件系统来管理接收到的数据库文件。
本发明所述方法,是通过对数据的发送方和接收方采用运行控制参数判断、在接收方开辟缓冲区及采用合理的传输措施和各种保护措施,从而实现了数据在发送方和接收方之间安全而有效的同步。这种方法提高了数据同步的性能,又保证了数据的一致性和完整性。在采用本发明所述方法实现前后台和主备之间数据同步后,数据同步的效率得到明显改善,系统的稳定性也得到了更大保障。
【附图说明】
下面结合附图进一步说明本发明。
图1为内存缓冲区的结构图;
图2为本发明的主备板之间数据同步的实施方式的流程图。
【具体实施方式】
参见图1为内存缓冲区的结构图,由于在内存缓冲区中不需要单个文件的删除及文件的打开及关闭操作,以及不需要文件的插入操作,而且每个数据库文件的数据都是连续存储的,所以文件系统的构造只需要能够进行文件的查找、读写及内存缓冲区所有文件的同时删除操作就可以满足需要。
操作此内存缓冲区的主要过程为:
a.找到文件注册表FileReg的头地址。
b.根据文件注册表中的信息(例如表名)找到所需要的文件记录地址,例如这里可以根据表名A找到它所对应文件的地址。
c.由于文件注册表中存放了数据库表记录的头地址。所以可以查找表记录了。
d.根据找到的数据库表中的记录,加载本地数据库。
参见图2所示的是本发明的一个实施方式的流程图,这里进行的是主备板之间的数据同步,它包括以下步骤:
j、主板收到后台服务器发来的开始进行主备数据同步的消息;
k、主板通知主板数据传输过程将要开始;
l、备板确认,向主机发送反馈消息;
m、主板根据备板反馈的情况和自己的数据更改情况,决定要同步的数据量及同步的方式;
n、主备数据的传输开始进行;
o、主备之间进行数据的传输;
p、主备数据的传输结束,备板从内存缓冲区读取到内存,传输过程成功完成,备板向主板发送完成消息;
q、主板结束数据同步过程,更改运行控制参数。
r、主板向后台服务器发送主备同步结束消息;
如图2所示,当主板收到后台服务器发来的进行主备数据同步的消息后,它把这个消息再转发给备板,从而得到备板的反馈。这样,主板就可以综合考虑主备板当前各自的情况而决定要同步的数据量。主板再给备板发同步开始消息,主备之间的同步就开始了。当主备同步结束后,备板把数据从缓冲区中取出来再加载到数据库的表中,这个加载过程的处理可以参考上面的创新点描述。当加载结束后,备板更改自己的运行控制参数,并发结束反馈消息到主板。主板收到结束反馈消息,更改自己的运行控制参数,最后结束主备之间数据同步。