一种数据同步方法及装置制造方法及图纸

技术编号:2915294 阅读:286 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种数据同步方法及装置,该方法包括:预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,当从所述源数据表向所述目标数据表中同步数据时,执行下列步骤:从所述两张目标数据表中确定出一张当前目标数据表;从所述源数据表向所述当前目标数据表中同步数据;同步数据完成后,应用服务器转向访问所述当前目标数据表。上述方法两张目标数据表交替使用,既有效的避免了撤销/回滚空间被占满的风险,也大大提高了数据同步速度和效率。

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤指一种数据同步方法及装置
技术介绍
在大型的电子商务网站中,经常要从数据仓库中同步计算好的数据到前台的联机事务处理(On-Line Transaction Processing,OLTP)的甲骨文ORACLE数据库中,以供前台的应用服务器查询。ORACLE数据库中包括一个撤销/回滚表空间(undo tablespace),当一个会话对数据库进行数据操作语言(Data Manipulation Language,DML)的更新和删除(Update and Delete)操作时,会把影响数据行的原始数据迁到另外一个地方存起来,这个地方就是撤销/回滚表空间。在此会话没有提交(Commit)之前,其它会话访问这些数据行时,发现数据已被修改,但没有被提交,根据存储的撤销/回滚地址信息,可以到撤销/回滚表空间中去获取原始数据,但在此会话没有提交前或回滚完成前,所占用的回滚段是不会释放的。目前常用的同步数据的方法,其同步的体系结构如图1所示。图1中,t1表为前台OLTP ORACLE数据库中的一张表;数据仓库DW(data warehouse)为后台的数据仓库,上层服务器(Application)从t1表中获取数据。同步数据的逻辑如下(以下命令都在前台数据库执行):第一步:删除用户表t1表中的数据(delete from schemal.tablename),将删除的数据暂时放到撤销/回滚表空间中。第二步:从(后台数据仓库的)用户表t2表中获取数据插入到用户表t1表中(insert into schemal.tablename select * from schema2.tablename@lnk_dw),同步过来的、尚未提交的数据也暂存于撤销/回滚表空间中。-->第三步:提交(commit)。第四步:若出现异常,回滚(rollback)。由于前台和数据仓库都是采用ORACLE数据库,可以直接通过数据库连接(database link)导入/出数据;上述步骤的第二步中所使用的lnk_dw就是一个数据库连接。现有技术的数据同步方法,由于同一数据业务的所有操作均在同一张表中进行,即后台数据仓库中的一张表对应前台数据库的一张表,当操作进行时,将会有大量数据需要被放到撤销/回滚表空间。由于上述原因导致现有技术存在下列缺点:(1)在上述步骤中,第一步和第二步将会消耗大量的撤销/回滚表空间,所以经常会在这里出现问题,如果消耗完所有撤销/回滚表空间,将会影响到其它正常的DML(Insert,Update and Delete)操作,即影响到业务的正常进行。如果在高峰时期,撤销/回滚表空间被占满,那么应用服务器向数据库发出的DML语句,都会出现等待,进而把应用服务器端配置的连接池占满,因为进入应用服务器的请求越来越多,而这些请求因得不到连接,都要排队等待,从而形成恶性循环,很快就会把应用服务器的内存资源等消耗完,进而导致应用服务器死机。(2)第一步和第二步执行时间过长,在这么长的时间之内,如果出现异常,将会进入第四步,即:回滚步骤。从而导致容错能力比较差,且进入回滚状态后,因为数据量巨大,ORACLE做回滚的时间将会非常长,进而影响了生产数据库的性能。(3)同步数据的效率低,这个效率损耗主要存在于第一步的删除操作中。(4)不具有断点续传能力。(5)无法监控同步数据的进度。随着同步数据量越来越大,前台ORACLE数据库的撤销/回滚表空间很容易被占满,出现影响业务的正常进行的情况越来越多,给企业的生产数据库带-->来严重的安全隐患。
技术实现思路
本专利技术实施例提供一种数据同步方法及装置,解决了数据同步量日渐增大时的拥堵问题,提高了数据同步的速度和效率。一种数据同步方法,包括:预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,当从所述源数据表向所述目标数据表中同步数据时,执行下列步骤:从所述两张目标数据表中确定出一张当前目标数据表;从所述源数据表向所述当前目标数据表中同步数据;同步数据完成后,应用服务器转向访问所述当前目标数据表。根据本专利技术的上述方法,所述应用服务器通过预先建立的上层视图访问所述上层视图指向的一张目标数据表;所述应用服务器转向访问所述当前目标数据表,具体包括:更新预先建立的上层视图,使其指向所述当前目标数据表。根据本专利技术的上述方法,所述从所述两张目标数据表中确定出一张为当前目标数据表,包括:分别计算所述两张目标数据表中数据的记录数;确定所述记录数为零的一张目标数据表为所述当前目标数据表。根据本专利技术的上述方法,所述从所述源数据表向所述当前目标数据表中同步数据时,包括:直接向确定出的所述当前目标数据表中同步数据;或删除确定出的所述当前目标数据表,并创建一张新的目标数据表作为当前目标数据表,向新创建的当前目标数据表中同步数据。根据本专利技术的上述方法,所述从所述源数据表向所述当前目标数据表中同步数据,具体包括:-->确定所述源数据表中待同步数据所占用的若干存储区域;确定出每一个所述存储区域中待同步数据的存储地址信息;根据所述存储地址信息,分别将所述存储区域中的待同步数据同步到所述当前目标数据表中。根据本专利技术的上述方法,所述根据所述存储地址信息,分别将所述存储区域中的待同步数据同步到所述当前目标数据表中,具体包括:根据所述存储地址信息,由一个数据同步进程依次同步每一个所述存储区域中的数据到所述当前目标数据表中;或将所述存储区域分为N组,并启动对应的N个数据同步进程;并根据所述存储地址信息,由每个数据同步进程依次同步对应组中的各个所述存储区域中的数据到所述当前目标数据表中。本专利技术的上述方法,还包括:当同步某一个所述存储区域中的数据失败时,重新启动同步该存储区域中的数据的过程;当重新启动的次数超过设定阈值时,结束同步该存储区域内的数据的过程。本专利技术的上述方法,还包括:同步数据成功后,清空所述两张目标数据表中未同步数据的另一张目标数据表。一种数据同步装置,包括:数据表建立模块,用于预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表;以及建立上层视图,使应用服务器能通过所述上层视图访问其指向的一张目标数据表;确定模块,用于从所述两张目标数据表中确定出一张当前目标数据表;数据同步模块,用于从所述源数据表向所述当前目标数据表中同步数据;访问更新模块,用于当同步数据成功后,应用服务器转向访问所述当前目标数据表。根据本专利技术的上述装置,所述访问更新模块,具体用于:预先建立上层视-->图,使应用服务器能通过所述上层视图访问其指向的一张目标数据表;当同步数据完成后,更新所述上层视图,使其指向所述当前目标数据表。根据本专利技术的上述装置,所述确定模块包括:计算单元,用于分别计算所述两张目标数据表中数据的记录数;确定单元,用于确定所述计算单元计算出的记录数为零的一张目标数据表为所述当前目标数据表。根据本专利技术的上述装置,所述确定单元,还用于当所述计算单元计算出的所述两张目标数据表中数据的记录数均不为零时,显示异常,并结束数据同步流程。根据本专利技术的上述装置,所述数据同步模块包括:存储区域确定单元,用于确定所述源数据表中待同步数据所占用的若干存储区域;地址信息确定单元,用于确定出每一个本文档来自技高网
...

【技术保护点】
一种数据同步方法,其特征在于,包括:预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,当从所述源数据表向所述目标数据表中同步数据时,执行下列步骤: 从所述两张目标数据表中确定出一张当前目标数据表; 从所述源数据表向所 述当前目标数据表中同步数据; 同步数据完成后,应用服务器转向访问所述当前目标数据表。

【技术特征摘要】
1、一种数据同步方法,其特征在于,包括:预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,当从所述源数据表向所述目标数据表中同步数据时,执行下列步骤:从所述两张目标数据表中确定出一张当前目标数据表;从所述源数据表向所述当前目标数据表中同步数据;同步数据完成后,应用服务器转向访问所述当前目标数据表。2、如权利要求1所述的方法,其特征在于,所述应用服务器通过预先建立的上层视图访问所述上层视图指向的一张目标数据表;所述应用服务器转向访问所述当前目标数据表,具体包括:更新预先建立的上层视图,使其指向所述当前目标数据表。3、如权利要求1所述的方法,其特征在于,所述从所述两张目标数据表中确定出一张为当前目标数据表,包括:分别计算所述两张目标数据表中数据的记录数;确定所述记录数为零的一张目标数据表为所述当前目标数据表。4、如权利要求1所述的方法,其特征在于,所述从所述源数据表向所述当前目标数据表中同步数据时,包括:直接向确定出的所述当前目标数据表中同步数据;或删除确定出的所述当前目标数据表,并创建一张新的目标数据表作为当前目标数据表,向新创建的当前目标数据表中同步数据。5、如权利要求1所述的方法,其特征在于,所述从所述源数据表向所述当前目标数据表中同步数据,具体包括:确定所述源数据表中待同步数据所占用的若干存储区域;确定出每一个所述存储区域中待同步数据的存储地址信息;根据所述存储地址信息,分别将所述存储区域中的待同步数据同步到所述当前目标数据表中。6、如权利要求5所述的方法,其特征在于,所述根据所述存储地址信息,分别将所述存储区域中的待同步数据同步到所述当前目标数据表中,具体包括:根据所述存储地址信息,由一个数据同步进程依次同步每一个所述存储区域中的数据到所述当前目标数据表中;或将所述存储区域分为N组,并启动对应的N个数据同步进程;并根据所述存储地址信息,由每个数据同步进程依次同步对应组中的各个所述存储区域中的数据到所述当前目标数据表中。7、如权利要求5所述的方法,其特征在于,还包括:当同步某一个所述存储区域中的数据失败时,重新启动同步该存储区域中的数据的过程;当重新启动的次数超过设定阈值时,结束同步该存储区域内的数据的过程。8、如权利要求1-7任一所述的方法,其特征在于,还包括:同步数据成功后,清空所述两张目标数据表中未同步数据的另一张目标数据表。9、一种数据同步装置,其特征在于,包括:数据表建立模块,用于预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表;确定模块,用于从所述两张目标数据表中确定出一张当前目标数据表;数据同步模块,用于从所述源数据表向所述当前目标数据表中同步数据;访问更新模块,用于当同步数据完成后,应用服务器转向访问所述当前目标数据表。10、如权利要求9所述的装置,其特征在于,所述访问更新模块,具体用于:预先建立上层视图,使应用服务器能通过所述上层视图访问其指向的一张目标数据表;当同步数据完成后,更新所述上层视图,使其指向所述当前目标数据表。11、如权利要求9所述的装置,其特征在于,所述确定模块包括:计算单元,用于分别计算所述两张目标数据表中数据的记录数;确定单元,用于确定所述计算单元计算出的记录数为零的一张目标数据表为所述当前目标数据表。12、如权利要求11所述的装置,其特征在于,所述确定单元,还用于当所述计算单元计算出的所述两张目标数据表中数据的记录数均不为零时,显示异常,并结束数据同步流程。13、如权利要求9所述的装置,其特征在于,所述数据同步模块包括:存储区域确定单元,用于确定所述源数据表中待同步数据所占用的若干存储区域;地址信息确定单元,用于确定出每一个所述存储区域中待同步数据的存储地址信息;数据同步单元,用于根据所述地址信息确定单元确定出的存储地址信息,分别将所述存储区...

【专利技术属性】
技术研发人员:赵林汪海张清张依娜
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:VG[英属维尔京群岛]

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

1