CN101419616A - 一种数据同步方法及装置 - Google Patents
一种数据同步方法及装置 Download PDFInfo
- Publication number
- CN101419616A CN101419616A CNA2008101793946A CN200810179394A CN101419616A CN 101419616 A CN101419616 A CN 101419616A CN A2008101793946 A CNA2008101793946 A CN A2008101793946A CN 200810179394 A CN200810179394 A CN 200810179394A CN 101419616 A CN101419616 A CN 101419616A
- Authority
- CN
- China
- Prior art keywords
- data
- synchrodata
- tables
- storage area
- current goal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2393—Updating materialised views
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法及装置,该方法包括:预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,当从所述源数据表向所述目标数据表中同步数据时,执行下列步骤:从所述两张目标数据表中确定出一张当前目标数据表;从所述源数据表向所述当前目标数据表中同步数据;同步数据完成后,应用服务器转向访问所述当前目标数据表。上述方法两张目标数据表交替使用,既有效的避免了撤销/回滚空间被占满的风险,也大大提高了数据同步速度和效率。
Description
技术领域
本发明涉及计算机领域,尤指一种数据同步方法及装置。
背景技术
在大型的电子商务网站中,经常要从数据仓库中同步计算好的数据到前台的联机事务处理(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个数据同步进程;并根据所述存储地址信息,由每个数据同步进程依次同步对应组中的各个所述存储区域中的数据到所述当前目标数据表中。
本发明的上述方法,还包括:当同步某一个所述存储区域中的数据失败时,重新启动同步该存储区域中的数据的过程;
当重新启动的次数超过设定阈值时,结束同步该存储区域内的数据的过程。
本发明的上述方法,还包括:同步数据成功后,清空所述两张目标数据表中未同步数据的另一张目标数据表。
一种数据同步装置,包括:
数据表建立模块,用于预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表;以及建立上层视图,使应用服务器能通过所述上层视图访问其指向的一张目标数据表;
确定模块,用于从所述两张目标数据表中确定出一张当前目标数据表;
数据同步模块,用于从所述源数据表向所述当前目标数据表中同步数据;
访问更新模块,用于当同步数据成功后,应用服务器转向访问所述当前目标数据表。
根据本发明的上述装置,所述访问更新模块,具体用于:预先建立上层视图,使应用服务器能通过所述上层视图访问其指向的一张目标数据表;
当同步数据完成后,更新所述上层视图,使其指向所述当前目标数据表。
根据本发明的上述装置,所述确定模块包括:
计算单元,用于分别计算所述两张目标数据表中数据的记录数;
确定单元,用于确定所述计算单元计算出的记录数为零的一张目标数据表为所述当前目标数据表。
根据本发明的上述装置,所述确定单元,还用于当所述计算单元计算出的所述两张目标数据表中数据的记录数均不为零时,显示异常,并结束数据同步流程。
根据本发明的上述装置,所述数据同步模块包括:
存储区域确定单元,用于确定所述源数据表中待同步数据所占用的若干存储区域;
地址信息确定单元,用于确定出每一个所述存储区域中待同步数据的存储地址信息;
数据同步单元,用于根据所述地址信息确定单元确定出的存储地址信息,分别将所述存储区域中的待同步数据同步到所述当前目标数据表中。
根据本发明的上述装置,所述数据同步单元包括:
第一数据同步子单元,用于根据所述存储地址信息,由一个数据同步进程依次同步每一个所述存储区域中的数据到所述当前目标数据表中;
第二数据同步单元,用于将所述存储区域分为N组,启动对应的N个数据同步进程;并根据所述存储地址信息,由每个数据同步进程依次同步对应组中的各个所述存储区域中的数据到所述当前目标数据表中。
根据本发明的上述装置,所述数据同步单元,还包括:
重启子单元,用于当同步某一个所述存储区域中的数据失败时,重新启动同步该存储区域中的数据的过程;以及当重新启动的次数超过设定阈值时,结束同步该存储区域中的数据的过程。
本发明的上述装置,还包括:
数据表清空模块,用于同步数据成功后,清空所述两张目标数据表中未同步数据的另一张目标数据表。
一种同步数据的方法,包括:
将源数据表中待同步数据所占用的存储区域划分为若干组;
并行启动对应的若干个数据同步进程,由每个数据同步进程同步对应组中的各个所述存储区域中的待同步数据到当前目标数据表中。
根据本发明的上述方法,所述由每个数据同步进程同步对应组中的各个所述存储区域中的数据是依次进行的,具体包括:
每个数据同步进程处理所述对应组中的一个存储区域中的待同步数据;
同步所述一个存储区域中的待同步数据并成功提交后,判断是否处理完所述对应组内的所有存储区域;
当未处理完所述对应组内的所有存储区域时,启动处理所述对应组中下一个存储区域中的待同步数据的过程。
本发明的上述方法,还包括:当同步某一个所述存储区域中的待同步数据失败时,重新启动同步该存储区域中的待同步数据的过程;
当重新启动的次数超过设定阈值时,结束同步该存储区域内的待同步数据的过程。
根据本发明的上述方法,将源数据表中待同步数据所占用的存储区域划分为若干组之前,还包括:
确定源数据表中待同步数据所占用的若干存储区域;以及
确定出每一个所述存储区域中待同步数据的存储地址信息。
根据本发明的上述方法,所述确定出每一个所述存储区域中待同步数据的存储地址信息,具体包括:
确定出每一个所述存储区域中待同步数据的存储的最小地址和最大地址;
将确定出的包含最小地址和最大地址的地址范围存储到一张中间表中。
一种同步数据的装置,包括:
分组单元,用于将源数据表中待同步数据所占用的存储区域划分为若干组;
数据同步单元,用于并行启动对应的若干个数据同步进程,由每个数据同步进程同步对应组中的各个所述存储区域中的待同步数据到当前目标数据表中。
根据本发明的上述置,所述数据同步单元,具体包括:控制执行子单元和判断子单元;
控制执行子单元,用于控制每个数据同步进程处理所述对应组中的一个存储区域中的待同步数据;以及当判断子单元判断出未处理完所述对应组内的所有存储区域时,启动处理所述对应组中下一个存储区域中的待同步数据的过程;
判断子单元,用于同步所述一个存储区域中的待同步数据并成功提交后,判断是否处理完所述对应组内的所有存储区域。
根据本发明的上述置,所述数据同步单元,还包括:
重启子单元,用于当同步某一个所述存储区域中的待同步数据失败时,重新启动同步该存储区域中的待同步数据的过程;以及当重新启动的次数超过设定阈值时,结束同步该存储区域中的待同步数据的过程。
本发明的上述置,还包括:
存储区域确定单元,用于确定源数据表中待同步数据所占用的若干存储区域;
地址信息确定单元,用于确定出每一个所述存储区域中待同步数据的存储地址信息。
本发明实施例提供的数据同步方法及装置,通过预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,当从所述源数据表向所述目标数据表中同步数据时,首先从所述两张目标数据表中确定出一张当前目标数据表;然后从所述源数据表向所述当前目标数据表中同步数据;同步数据成功后,应用服务器转向访问所述当前目标数据表。上述方法中,两张目标数据表交替使用,应用服务器访问的数据表和同步数据程序访问的数据表互不干涉,避免了将大量数据转移到撤销/回滚表空间中,既有效的避免了撤销/回滚空间被占满后造成排队和拥堵现象,又提高了数据同步速度和效率。
附图说明
图1为现有技术中数据同步方法的原理示意图;
图2为本发明实施例中数据同步方法的原理示意图;
图3为本发明实施例中数据同步方法的流程图;
图4为本发明实施例中向t2表中同步数据的原理示意图;
图5为本发明实施例中向t1表中同步数据的原理示意图;
图6为本发明实施例一中数据同步方法的流程图;
图7为本发明实施例二中数据同步方法的流程图;
图8为本发明实施例中向当前目标数据表中同步数据的流程图;
图9为本发明实施例中oracle数据库的数据存储格式示意图;
图10为本发明实施例中采用多进程并行同步数据的流程图;
图11为本发明实施例中数据同步装置的结构示意图;
图12为本发明实施例中多进程同步数据的装置的结构示意图。
具体实施方式
本发明实施例提供的数据同步方法,其原理如图2所示。对同一数据业务,预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,图2中所示的目标数据表1和目标数据表2。也就是说每一张源数据表对应的目标数据表有两张,两张目标数据表交替使用。
使用目标数据表中数据的应用服务器(Application)通过预先建立的上层视图(View)访问上层视图指向的那一张目标数据表。其中,上层视图的作用相当于一个指针,使得服务器可以通过它访问数据表。例如图2中,当上层视图指向目标数据表1时,应用服务器可以通过上层视图访问目标数据表1中的数据,同时,由于目标数据表2此时处于空闲状态,当有待同步数据时,则可以向目标数据表2中同步数据;当上层视图指向目标数据表2时,应用服务器可以通过上层视图访问目标数据表2中的数据,同时,由于目标数据表1此时处于空闲状态,当有待同步数据时,则可以向目标数据表1中同步数据。从而使同步数据和应用服务器访问数据的进程不必在同一张表中进行,可以互不干扰。
本发明实施例提供的从源数据表向目标数据表中进行数据同步的方法,具体过程如图3所示,执行步骤如下:
步骤S1:从两张目标数据表中确定出一张当前目标数据表。
可以通过分别计算两张目标数据表中数据的记录数,确定记录数为零的那一张目标数据表为当前目标数据表。
例如:若目标数据表1中数据的记录数为零,则说明目标数据表1为空表,确定目标数据表1为当前目标数据表;若目标数据表2中数据的记录数为零,则说明目标数据表2为空表,确定目标数据表2为当前目标数据表。
特别的,当两张目标数据表中数据的记录数均为零时,可以根据计算顺序确定一张或任选其中一张作为当前目标数据表;当两张目标数据表中数据的记录数均不为零时,显示异常,并结束数据同步流程。
步骤S2:从源数据表向确定出的当前目标数据表中同步数据。
特别的,从源数据表向确定出的当前目标数据表中同步数据时,可以直接向确定出的当前目标数据表(即原有的空的目标数据表)中同步数据;也可以将原来的空的目标数据表删除(drop)掉,并重新建立一个新的目标数据表,作为当前目标数据表,向新建立的当前目标数据表中同步数据。
对于新建目标数据表的情况,可以采用如下命令实现:
create table t2 as select * from schema2.tablename@lnk_dw;
该命令的操作实际上是一个复合操作,一个DDL(创建t2表),一个数据同步,但ORACLE会把它看成是一个DDL操作,DDL操作基本上不占用撤销/回滚表空间。另外可以采用并行提示,具体命令如下:
create table t2 as select/*+ parallel(dw_t2,4)*/* fromschema2.tablename@lnk_dw dw_t2;
上面命令中的/*+parallel(dw_t2,4)*/表示对dw_t2表的扫描,采用四个进程来处理。
采用此种方案,可以进一步减少撤销/回滚表空间被占满的可能,以及可以在一定程度上提高同步数据的效率,但整个DDL操作的时间过长,整个同步数据的容错能力比较差,且同步数据的进度无法监控。
从源数据表向当前目标数据表中同步数据的具体过程在后边再进行详细阐述。
步骤S3:同步数据成功后,应用服务器转向访问当前目标数据表。具体包括:
每次同步数据成功后,都需要更新上层视图,使上层视图指向新导入数据的目标数据表,从而保证应用服务器能够顺利访问同步到目标数据表中的数据。
特别的,在同步数据成功后,会执行清空两张目标数据表中未同步数据的另一张目标数据表的操作。
上述源数据表和目标数据表可以都是后台数据库仓库中的数据表,也可以都是前台ORACLE数据库中的数据表,还可以一个是后台数据库仓库中的数据表,另一个是前台ORACLE数据库中的数据表。
下面以从后台数据仓库的数据表(源数据表)向前台ORACLE数据库中的数据表(目标数据表)同步数据为例进行详细阐述。
在前台数据库中,对同一数据业务建立两张数据表,即后台数据仓库中的一张数据表对应前台数据库的两张数据表(t1表和t2表),两张数据表格交替使用,即源数据表为后台数据仓库中的一张数据表,目标数据表为前台ORACLE数据库中预先建立的与其对应的两张数据表。
其原理如图4和图5所示。其中,图4为应用服务器(Application)访问t1表,从后台数据仓库向空的t2表中同步数据的情况;图5为应用服务器访问t2表,从后台数据仓库向空的t1表中同步数据的情况。
图4和图5中数据仓库DW表示后台的数据仓库,t1表和t2表为前台数据库中对应同一数据业务的两张数据表,后台数据仓库DW中的一张数据表对应前台数据库中的两张数据表(t1表和t2表),即可以从后台数据仓库的一个表中向t1表或t2表中同步数据。
应用服务器通过上层视图(view)指向t1表或t2表,来确定访问t1表或t2表中的数据。即上层视图指向t1表,则应用服务器通过上层视图访问t1表中的数据;上层视图指向t2表,则应用服务器通过上层视图访问t2表中的数据。
从数据仓库DW同步数据到前台ORACLE数据库中,通常都有一定的时间间隔(或说设定的数据同步周期),例如:一天同步一次。当要同步数据时,检测t1表和t2表;如果t1表为空,则向t1表中同步数据;如果t2表为空,则向t2表中同步数据。
图4所示是应用服务器访问t1表,t2表为空,向t2表中同步数据的情况,待同步数据完成,重新定义上层视图view,使上层视图指向t2表,然后执行如下命令:
truncate table t1;
将t1表中的数据清空。
特别的,由于truncate(删节)方式和删除(delete)方式的原理不同,使用truncate方式比delete方式快很多,大大减少了删除旧数据的时间。
当向t2表中同步数据并重定义上层视图后,应用服务器访问t2表中的数据,当下次再需要同步数据时,则将向空的t1表中同步数据。图5所示即为应用服务器访问t2表,t1表为空,向t1表中同步数据的情况。待同步数据完成,重新定义上层视图view,使上层视图指向t1表,然后执行如下命令:
truncate table t2;
将t2表中的数据清空。
当从源数据表(后台数据仓库的数据表)向目标数据表(前台ORACLE数据库中的数据表)中同步数据时,具体可以包括下列实施例一和实施例二所给出的两种具体执行过程。
实施例一:
本发明实施例一所提供的从源数据表(后台数据仓库的数据表)向目标数据表(前台ORACLE数据库中的数据表)中进行同步数据的方法,以t1表作为目标数据表1,t2表作为目标数据表2为例进行说明,其流程如图6所示,执行步骤如下:
步骤S101:计算t1表中的记录数N1。
特别的,在处理时,可以使用rownum<2的方式计算t1表的记录数N1,具体命令如下:
Select count(*)into N1 from t1 where rownum<2。
其中,rownum表示数据记录,所说的rownum<2的方式具体为:只要检测到数据表中有至少一条记录时即认为数据表中有数据,而不必继续检测更多的数据记录。
步骤S102:判断t1表中是否有数据。具体为:通过判断计算出的记录数N1是否等于零来判断t1表中是否有数据。
若是,则执行步骤S103;若否,则执行步骤S111。
步骤S103:从后台数据仓库向t1表中同步数据。
从后台数据仓库中的数据表向t1表中同步数据的具体过程参见后续步骤的详细描述。
特别的,进行数据同步时,可以采用现有的数据同步方式,也可以根据ORACLE EXTENT的原理,采用分段提交的方式。
步骤S104:判断是否同步成功。
若是则执行步骤S105;若否,则执行步骤S108。
步骤S105:创建新的上层视图。
创建新的上层视图,指向t1表,使得应用服务器能够通过上层视图访问t1表中的数据。
步骤S106:对t2表执行清空操作。
特别的,对t2表执行清空操作时,优选使用上述的truncate table命令快速删除旧数据,清空t2表。
然后执行步骤S107。
步骤S107:结束数据同步流程。
步骤S108:显示异常,并结束数据同步流程。
步骤S111:计算t2表中的记录数N2。
在处理时,也可以使用上述rownum<2的方式计算t2表的记录数N2,具体命令行为:
Select count(*)into N2 from t2 where rownum<2。
步骤S112:判断t2表中是否有数据。具体为:通过判断计算出的记录数N2是否等于零来判断t2表中是否有数据。
若是,则执行步骤S113;若否,说明两张表中均有数据,出现异常,则执行步骤S108。
步骤S113:从后台数据仓库向t2表中同步数据。
从后台数据仓库中的数据表向t2表中同步数据的具体过程参见后续步骤的详细描述。
特别的,进行数据同步时,可以采用现有的数据同步方式,也可以根据ORACLE EXTENT的原理,采用分段提交的方式。
步骤S114:判断是否同步成功。
若是则执行步骤S115;若否,则执行步骤S108。
步骤S115:创建新的上层视图。
如果同步数据成功,则重新创建上层视图,指向刚同步数据的表,即t2表,使得应用服务器能够通过上层视图访问t2表中的数据。
步骤S116:对t1表执行清空操作。
特别的,对t1表执行清空操作时,优选使用上述的truncate table命令快速删除旧数据,清空t1表。
然后执行步骤S107。
实施例二:
本发明实施例二所提供的当从源数据表(后台数据仓库的数据表)向目标数据表(前台ORACLE数据库中的数据表)中同步数据的过程,仍以t1表作为目标数据表1,t2表作为目标数据表2为例进行说明,其流程如图7所示,执行步骤如下:
步骤S201:分别计算t1表中的记录数N1和t2表中的记录数N2。
在处理时,仍然可以使用上述rownum<2的方式计算t1表的记录数N1和t2表中的记录数N2,具体命令行为:
Select count(*)into N1 from t1 where rownum<2;
Select count(*)into N2 from t2 where rownum<2。
步骤S202:判断t1表和t2表中是否有数据。具体包括:判断t1表中的记录数N1和t2表中的记录数N2是否等于零。
若N1=0,N2≠0,则说明t1表中没有数据,t2表中有数据,则执行步骤S203;
若N1≠0,N2=0,则说明t1表中有数据,t2表中没有数据,则执行步骤S213;
若N1=0,N2=0,则说明t1表和t2表中都没有数据,则执行步骤S223;
若N1≠0,N2≠0,则说明t1表和t2表中都有数据,则执行步骤S233。
步骤S203:从后台数据仓库向t1表中同步数据。
从后台数据仓库的数据表向t1表中同步数据的具体过程参见后续步骤的详细描述。
特别的,进行数据同步时,可以采用现有的数据同步方式,也可以根据ORACLE EXTENT的原理,采用分段提交的方式。
步骤S204:判断是否同步成功。
若是则执行步骤S205;若否,则执行步骤S233。
步骤S205:创建新的上层视图。
常见新的上层视图,指向t1表,使得应用服务器能够通过上层视图访问t1表中的数据。
步骤S206:对t2表执行清空操作。
特别的,对t2表执行清空操作时,优选使用上述的truncate table命令快速删除旧数据,清空t2表。
然后执行步骤S207。
步骤S207:结束数据同步流程。
步骤S213:从后台数据仓库向t2表中同步数据。
从后台数据仓库的数据表向t2表中同步数据的具体过程参见后续步骤的详细描述。
特别的,进行数据同步时,可以采用现有的数据同步方式,也可以根据ORACLE EXTENT的原理,采用分段提交的方式。
步骤S214:判断是否同步成功。
若是则执行步骤S215;若否,则执行步骤S233。
步骤S215:创建新的上层视图。
如果同步数据成功,则重新创建上层视图,指向刚同步数据的表,即t2表,使得应用服务器能够通过上层视图访问t2表中的数据。
步骤S216:对t1表执行清空操作。
特别的,对t1表执行清空操作时,优选使用上述的truncate table命令快速删除旧数据,清空t1表。
然后执行步骤S207。
步骤S223:从t1表和t2表中选择一个数据表。
若选择了t1表,则执行步骤S203-207;若选择了t2表,则执行步骤S213-216及步骤207。
步骤S233:显示异常,并结束数据同步流程。
上述实施例一中对两张目标数据表中的记录数逐一判断,当判断得到第一目标数据表中记录数为零时,则不需再判断另一个目标数据表中的记录数。实施例二中则是同时计算出两个目标数据表中的记录数,并选择其中记录数为零的一个目标数据表。
下面具体描述步骤S2中从源数据表向确定出的当前目标数据表中同步数据的过程,如图8所示,包括:
步骤S31:确定源数据表中待同步数据所占用的若干存储区域。
特别的,可以从ORACLE数据库的数据字典视图里查询到待同步数据在源数据表中所占用的存储区域。
步骤S32:确定出上述存储区域中的待同步数据的存储地址信息。其中,存储地址信息至少包括每一个存储区域中存储的待同步数据的地址范围。
根据ORACLE数据库的数据字典视图得到的待同步数据在源数据表中所占用的存储区域,可以计算出每一个存储区域内的待同步数据存储的最小地址(e_min_rowid)和最大地址(e_max_rowid)。
特别的,可以将计算出的每个区域内存储数据的地址范围保存到一张中间表里,例如:一个tmp_rowid表。该中间表的表结构可以设计如下:
create table tmp_rowid
(
id number;
ROWID_MIN VARCHAR2(100),
ROWID_MAX VARCHAR2(100)
);
当需要时通过查询该中间表,即可获取源数据表中每个存储区域存储的待同步数据的地址信息。
步骤S33:根据存储地址信息,分别将各存储区域中的待同步数据同步到当前目标数据表中。具体可以选择下列两种方式之一:
(1)根据存储地址信息,由一个数据同步进程依次同步每一个存储区域中的数据到当前目标数据表中。
(2)将确定出的存储区域分为N组,并启动对应的N个数据同步进程,根据存储地址信息,由每个数据同步进程依次同步一组中的各个存储区域的数据到当前目标数据表中。
若同步某一个存储区域中数据失败时,重新启动同步该存储区域内数据的过程,当重新启动的次数超过设定阈值时,结束同步该存储区域内数据的过程。
实施例一中步骤S103、步骤S113和实施例二中步骤S203、步骤S213执行从后台数据仓库数据表向t1或t2表中同步数据时,就是采用上述数据同步过程。
上述方式(1)是常用的方式,而方式(2)则是基于本发明实施例数据同步方法的特点和ORACLE数据库中数据存储的特点才能实现的。具体分析如下:
首先,本发明实施例的上述数据同步方法用一个上层视图将应用服务器与具体的数据隔离开来,当从数据仓库同步数据到前台ORACLE数据库的数据表时,与业务***正在使用的表,即应用服务器正在调用的数据所在的表没有任何关系。因此,使得从数据仓库同步数据到前台ORACLE数据库的数据表和上层应用服务器调用数据的操作可以不在同一张数据表中进行,因此可以互不干扰。
其次,ORACLE数据库中数据存储具有如下特点:
ORACLE数据库的数据表由很多个存储区域(EXTENTS)组成,每个EXTENT由多个大小一定的连续的块(block)组成,数据存放在各个块里。EXTENT是数据表空间的最小单位,EXTENT与EXTENT之间在物理位置上不一定是连续的。但在每个EXTENT内部,由一串连续的block组成,每个EXTENT内部各个块的物理地址是连续的。其存储格式如图9所示。
在数据同步进程与应用服务器访问进程互不干扰的情况下,结合ORACLE数据库中数据存储的上述特点,从而使得同步数据可以分段提交,即可以采用方式(2)来实现数据同步过程,这样既可以不影响业务***所访问的数据的准确性,又能提高数据同步的速度。
下面以一个具体实例,详细说明采用方式(2)实现数据同步的过程,可以采用分段提交的方式从源数据表(例如:后台数据仓库)向当前目标数据表(例如:前台的t1表或t2表)中同步数据,如图10所示,包括下列步骤:
步骤S331:查询待同步数据所占用的存储区域。
查询源数据表所在的后台数据仓库的数据字典视图,可以获取到待同步数据在源数据表中所占用的存储区域。
步骤S332:确定出每一个存储区域中的待同步数据在源数据表中的地址范围。
可以通过查询存储的中间表,例如:tmp_rowid表,确定每一个存储区域中的待同步数据在源数据表中的地址范围。
步骤S333:将存储有待同步数据的所有存储区域划分为N组。
接下来,我们可以对tmp_rowid表中的数据进行分组处理,分组的方式很多,比如:可以按照标识ID(Identify)取模,分成N组。
步骤S334:启动N个数据同步进程分别同步划分出的N组存储区域中的数据到当前目标数据表中。
由N个数据同步进程并行处理,其中,每个进程对应一个组的存储区域,执行将对应组内的存储区域中的数据同步到目标数据表中过程,各组互不干扰,同时进行。在同步各存储区域内数据时采用并行处理,提高了数据同步的效率。
步骤S335a:逐一处理本组(例如:第一组)中的各个存储区域中待同步数据。具体为:
处理本组中的一个存储区域的待同步数据,当得到同步成功的确认消息后,启动同步本组中下一个存储区域中的数据的过程。
步骤S336a:判断是否同步成功;
判断当前存储区域的待同步数据是否被同步成功。
若是,执行对应的步骤S338a;若否,则需要回滚以便重新执行同步该存储区域内数据的过程,执行对应的步骤S337a。
步骤S337a:判断回滚次数是否超过设定阈值。具体为:
可以预先设置回滚(重试)次数的阈值,并统计重试的次数,当重试次数大于设定的阀值,则不再重试,并立即退出循环,表示同步该存储区域的数据失败。在数据同步过程中,采用重试策略,提高了数据同步的容错能力。
若否,则返回重新执行步骤S335a,重新同步该存储区域内的数据到目标数据表中;若是,则执行步骤S339a。
步骤S338a:提交同步过来的数据。
若当前存储区域的数据同步成功,则向目标数据表提交同步过来的数据。
步骤S339a:判断是否全部完成,即判断是否处理完本组内的所有存储区域。
若是,则说明已同步完该组所有存储区域的对应数据,执行步骤S340;若否则说明没有同步完该组所有存储区域的对应数据,返回步骤S335a,继续同步该组中的下一个存储区域的数据。
在并行处理的过程中,可以为每组设置一个计数器变量v_done_num,用来对应表示每组已经同步完数据的存储区域的个数,这样可以很方便的计算出每个进程同步数据的速度,以及计算出数据同步的总的速度。基于上述统计还可以方便的实现对数据同步的效率进行监控。
步骤S335b-S339b为逐一同步第二组中的各个存储区域中的数据的过程;
......;
步骤S335x-S339x为逐一同步第N组中的各个存储区域中的数据的过程;
步骤S335b-S339b、......、步骤S335x-S339x的处理过程与步骤S335a-S339a对应相同,此处不再赘述。
步骤S340:结束数据同步流程。
上述从源数据表向目标数据表中同步数据过程,如果采用了多个进程并行处理,一次处理多个存储区域(EXTENT)的数据,在提交的时候就可以同时提交这多个存储区域的数据给目标数据表,减少了提交的次数,从而提高了同步数据的提交(commit)速度和效率。其中,具体可以同时处理多少个存储区域根据实际情况调整。
上述图8、图9、图10所给出的从源数据表向当前目标数据表中同步数据的过程,可以单独用于其他需要从源数据表向目标数据表中同步数据的过程中,而不限于本发明实施例所给出的数据同步过程中。
根据本发明实施例的上述数据同步方法,可以构建一种数据同步装置,如图11所示,包括:数据表建立模块10、确定模块20、数据同步模块30和访问更新模块40。
数据表建立模块10,用于预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表。
确定模块20,用于从两张目标数据表中确定出一张当前目标数据表。
较佳的,确定模块20进一步可以包括:计算单元201和确定单元202。
计算单元201,用于分别计算两张目标数据表中数据的记录数。
确定单元202,用于确定计算单元201计算出的记录数为零的一张目标数据表为当前目标数据表。
确定单元202,还用于当计算单元201计算出的两张目标数据表中数据的记录数均不为零时,显示异常,并结束数据同步流程。
数据同步模块30,用于从源数据表向确定模块20确定出的当前目标数据表中同步数据。
较佳的,数据同步模块进一步可以包括:存储区域确定单元301、地址信息确定单元302和数据同步单元303。
存储区域确定单元301,用于根确定源数据表中待同步数据所占用的若干存储区域。
地址信息确定单元302,用于确定出每一个存储区域中待同步数据的存储地址信息。
数据同步单元303,用于根据地址信息确定单元302确定出的存储地址信息,分别将存储区域中的待同步数据同步到当前目标数据表中。
较佳的,数据同步单元303进一步可以包括:第一数据同步子单元3031和第二数据同步子单元3032。
第一数据同步子单元3031,用于根据地址信息确定单元302确定出的存储地址信息,由一个数据同步进程依次同步每一个存储区域中的数据到当前目标数据表中。
第二数据同步子单元3032,用于将存储区域分为N组,启动对应的N个数据同步进程;并根据地址信息确定单元302确定出的存储地址信息,由每个数据同步进程依次同步对应组中的各个存储区域的数据到当前目标数据表中。
数据同步单元303,还包括:重启子单元3033,用于当同步某一个存储区域的数据失败时,重新启动同步该存储区域中的数据的过程;以及当重新启动的次数超过设定阈值时,结束同步该存储区域中的数据的过程。
访问更新模块40,用于当数据同步模块30同步数据成功后,应用服务器转向确定模块20确定出的当前目标数据表。
访问更新模块40,具体用于:预先建立上层视图,使应用服务器能通过该上层视图访问其指向的一张目标数据表;以及当同步数据完成后,更新所述上层视图,使其指向所述当前目标数据表。
上述数据同步装置,还包括:数据表清空模块50,用于当数据同步模块30同步数据成功后,清空两张目标数据表中未同步数据的另一张目标数据表。
上述数据同步装置中的数据同步模块30可以设置为一个单独的、用于同步数据的装置,并且可以单独用于任何数据转移的过程中。
根据上述图8和图10所示的从源数据表向目标数据表同步数据的流程,可以构建一种多进程同步数据的装置,如图12所示,包括:分组单元121和数据同步单元122。
分组单元121,用于将源数据表中待同步数据所占用的存储区域划分为若干组。
数据同步单元122,用于并行启动对应的若干个数据同步进程,由每个数据同步进程同步对应组中的各个1存储区域中的待同步数据到当前目标数据表中。
较佳的,数据同步单元122进一步可以包括:控制执行子单元1221和判断子单元1222。
控制执行子单元1221,用于控制每个数据同步进程处理对应组中的一个存储区域中的待同步数据;以及当判断子单元判断出未处理完对应组内的所有存储区域时,启动处理对应组中下一个存储区域中的待同步数据的过程。
判断子单元1222,用于同步一个存储区域中的待同步数据并成功提交后,判断是否处理完对应组内的所有存储区域。
数据同步单元122,还包括:重启子单元1223,用于当同步某一个存储区域中的待同步数据失败时,重新启动同步该存储区域中的待同步数据的过程;以及当重新启动的次数超过设定阈值时,结束同步该存储区域中的待同步数据的过程。
上述同步数据的装置,还包括:
存储区域确定单元123,用于确定源数据表中待同步数据所占用的若干存储区域。
地址信息确定单元124,用于确定出每一个存储区域中待同步数据的存储地址信息。
上述数据同步装置在具体实现中可以有多种方式,例如:可以通过软件的实现方式,也可以通过软件与硬件结合的方式实现。
本发明实施例提供的数据同步方法及装置,通过预先建立与一张存储有待同步数据的源数据表对应的两张目标数据表,应用服务器通过预先建立的上层视图访问所述上层视图指向的一张目标数据表,通过上层视图,应用层不需要去关心数据具体来自哪张表,减少了应用实现的复杂度。
当从所述源数据表向所述目标数据表中同步数据时,首先确定出两张目标数据表中空的一张为当前目标数据表;然后从源数据表向当前目标数据表中同步数据;同步数据成功后,更新上层视图,使其指向当前目标数据表。上述方法中,两张目标数据表交替使用,应用服务器访问的数据表和同步数据程序访问的数据表互不干涉,避免了将大量数据转移到撤销/回滚表空间中,有效的避免了撤销/回滚空间被占满后造成排队和拥堵现象,又提高了数据同步速度和效率。
在同步数据的过程中,在充分结合ORACLE表的空间分配及存储原理的基础上,并利用ORACLE数据表的内在存储机制,同步各存储区域中的数据到目标数据表,在数据迁移时针对每个存储区域执行,实现按存储区域并行同步数据,分段提交,在数据同步的过程中,减少对前台ORACLE数据库撤销/回滚表空间的长时间占用,使撤销/回滚表空间的总体使用率大大减少,大大降低占满撤销/回滚表空间的可能,确保生产数据库的安全。在同步数据时,也可以对存储区域进行分组,采用并行方式迁移数据来进一步提高迁移数据的效率。
当同步某一个存储区域中的数据失败时,采用回滚机制,大大提高了***的容错能力,同时通过回滚次数控制机制,避免了无限次回滚等死循环的发生。且由于针对每个存储区域进行操作,且不与应用服务器所访问的表空间发生干扰,所使用的当前数据表的初始状态为空没有干扰数据,因此,在数据同步中断时,可以继续同步未同步过来的部分数据,使得同步数据的断点续传成为可能。
同时,由于设置了计数器变量统计已经同步完数据的存储区域的个数,从而可以实现对数据同步的进度、速度和效率进行监控。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化、替换或应用到其他类似的装置,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (25)
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所述的装置,其特征在于,所述数据同步模块包括:
存储区域确定单元,用于确定所述源数据表中待同步数据所占用的若干存储区域;
地址信息确定单元,用于确定出每一个所述存储区域中待同步数据的存储地址信息;
数据同步单元,用于根据所述地址信息确定单元确定出的存储地址信息,分别将所述存储区域中的待同步数据同步到所述当前目标数据表中。
14、如权利要求13所述的装置,其特征在于,所述数据同步单元包括:
第一数据同步子单元,用于根据所述存储地址信息,由一个数据同步进程依次同步每一个所述存储区域中的数据到所述当前目标数据表中;
第二数据同步子单元,用于将所述存储区域分为N组,启动对应的N个数据同步进程;并根据所述存储地址信息,由每个数据同步进程依次同步对应组中的各个所述存储区域中的数据到所述当前目标数据表中。
15、如权利要求14所述的装置,其特征在于,所述数据同步单元,还包括:
重启子单元,用于当同步某一个所述存储区域中的数据失败时,重新启动同步该存储区域中的数据的过程;以及当重新启动的次数超过设定阈值时,结束同步该存储区域中的数据的过程。
16、如权利要求9-15任一所述的装置,其特征在于,还包括:
数据表清空模块,用于同步数据成功后,清空所述两张目标数据表中未同步数据的另一张目标数据表。
17、一种同步数据的方法,其特征在于,包括:
将源数据表中待同步数据所占用的存储区域划分为若干组;
并行启动对应的若干个数据同步进程,由每个数据同步进程同步对应组中的各个所述存储区域中的待同步数据到当前目标数据表中。
18、如权利要求17所述的方法,其特征在于,所述由每个数据同步进程同步对应组中的各个所述存储区域中的数据是依次进行的,具体包括:
每个数据同步进程处理所述对应组中的一个存储区域中的待同步数据;
同步所述一个存储区域中的待同步数据并成功提交后,判断是否处理完所述对应组内的所有存储区域;
当未处理完所述对应组内的所有存储区域时,启动处理所述对应组中下一个存储区域中的待同步数据的过程。
19、如权利要求18所述的方法,其特征在于,还包括:当同步某一个所述存储区域中的待同步数据失败时,重新启动同步该存储区域中的待同步数据的过程;
当重新启动的次数超过设定阈值时,结束同步该存储区域内的待同步数据的过程。
20、如权利要求17-19任一所述的方法,其特征在于,将源数据表中待同步数据所占用的存储区域划分为若干组之前,还包括:
确定源数据表中待同步数据所占用的若干存储区域;以及
确定出每一个所述存储区域中待同步数据的存储地址信息。
21、如权利要求20所述的方法,其特征在于,所述确定出每一个所述存储区域中待同步数据的存储地址信息,具体包括:
确定出每一个所述存储区域中待同步数据的存储的最小地址和最大地址;
将确定出的包含最小地址和最大地址的地址范围存储到一张中间表中。
22、一种同步数据的装置,其特征在于,包括:
分组单元,用于将源数据表中待同步数据所占用的存储区域划分为若干组;
数据同步单元,用于并行启动对应的若干个数据同步进程,由每个数据同步进程同步对应组中的各个所述存储区域中的待同步数据到当前目标数据表中。
23、如权利要求22所述的装置,其特征在于,所述数据同步单元,具体包括:控制执行子单元和判断子单元;
控制执行子单元,用于控制每个数据同步进程处理所述对应组中的一个存储区域中的待同步数据;以及当判断子单元判断出未处理完所述对应组内的所有存储区域时,启动处理所述对应组中下一个存储区域中的待同步数据的过程;
判断子单元,用于同步所述一个存储区域中的待同步数据并成功提交后,判断是否处理完所述对应组内的所有存储区域。
24、如权利要求23所述的装置,其特征在于,所述数据同步单元,还包括:
重启子单元,用于当同步某一个所述存储区域中的待同步数据失败时,重新启动同步该存储区域中的待同步数据的过程;以及当重新启动的次数超过设定阈值时,结束同步该存储区域中的待同步数据的过程。
25、如权利要求22-24任一所述的装置,其特征在于,还包括:
存储区域确定单元,用于确定源数据表中待同步数据所占用的若干存储区域;
地址信息确定单元,用于确定出每一个所述存储区域中待同步数据的存储地址信息。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101793946A CN101419616A (zh) | 2008-12-10 | 2008-12-10 | 一种数据同步方法及装置 |
US12/653,091 US8949178B2 (en) | 2008-12-10 | 2009-12-08 | Method and system for efficient data synchronization |
PCT/US2009/006457 WO2010068260A1 (en) | 2008-12-10 | 2009-12-09 | Method and system for efficient data synchronization |
JP2011540691A JP5577350B2 (ja) | 2008-12-10 | 2009-12-09 | 効率的なデータ同期化のための方法及びシステム |
EP09832231.6A EP2368178A4 (en) | 2008-12-10 | 2009-12-09 | METHOD AND SYSTEM FOR EFFICIENT DATA SYNCHRONIZATION |
US14/570,837 US9727576B2 (en) | 2008-12-10 | 2014-12-15 | Method and system for efficient data synchronization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101793946A CN101419616A (zh) | 2008-12-10 | 2008-12-10 | 一种数据同步方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100240321A Division CN102081665A (zh) | 2008-12-10 | 2008-12-10 | 一种数据同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101419616A true CN101419616A (zh) | 2009-04-29 |
Family
ID=40630405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101793946A Pending CN101419616A (zh) | 2008-12-10 | 2008-12-10 | 一种数据同步方法及装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8949178B2 (zh) |
EP (1) | EP2368178A4 (zh) |
JP (1) | JP5577350B2 (zh) |
CN (1) | CN101419616A (zh) |
WO (1) | WO2010068260A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838762A (zh) * | 2012-11-26 | 2014-06-04 | ***股份有限公司 | 基于数据表轮换的不间断数据处理装置及方法 |
CN104268234A (zh) * | 2014-09-26 | 2015-01-07 | 东软集团股份有限公司 | 一种基于sql语句的数据同步方法和装置 |
CN104603775A (zh) * | 2012-08-14 | 2015-05-06 | 华为技术有限公司 | 事务的回滚方法和装置,以及关系数据库管理*** |
CN104980463A (zh) * | 2014-04-04 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 同步网络数据的方法和*** |
CN105183898A (zh) * | 2015-09-29 | 2015-12-23 | 北京奇艺世纪科技有限公司 | 数据同步方法和数据同步*** |
CN106021494A (zh) * | 2016-05-19 | 2016-10-12 | ***股份有限公司 | 一种主数据同步方法及装置 |
CN106297599A (zh) * | 2015-05-12 | 2017-01-04 | 杨鸿年 | 一种实时动态投影***的部署方法 |
CN106446090A (zh) * | 2016-09-12 | 2017-02-22 | 浪潮软件股份有限公司 | 一种跨库传输海量数据的方法 |
CN106484560A (zh) * | 2015-08-25 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 数据同步方法及装置 |
CN106802897A (zh) * | 2015-11-26 | 2017-06-06 | 北京国双科技有限公司 | 查询表数据同步方法和装置 |
CN108984337A (zh) * | 2018-05-29 | 2018-12-11 | 杭州网易再顾科技有限公司 | 一种数据同步异常的修复方法、修复装置、介质和计算设备 |
CN109492000A (zh) * | 2018-10-09 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种数据库表的复制方法及*** |
CN110196786A (zh) * | 2019-04-30 | 2019-09-03 | 武汉达梦数据库有限公司 | 数据库回滚同步中内存的控制方法及设备 |
CN110347693A (zh) * | 2019-07-11 | 2019-10-18 | 招商局金融科技有限公司 | 数据同步方法、装置及存储介质 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473953B2 (en) | 2010-07-21 | 2013-06-25 | International Business Machines Corporation | Batching transactions to apply to a database |
DE102010054446A1 (de) * | 2010-12-14 | 2012-06-14 | Giesecke & Devrient Gmbh | Portabler Datenträger mit Fehlbedienungszähler |
CN102841897B (zh) * | 2011-06-23 | 2016-03-02 | 阿里巴巴集团控股有限公司 | 一种实现增量数据抽取的方法、装置及*** |
US9223842B2 (en) * | 2011-12-05 | 2015-12-29 | Blackberry Limited | Apparatus, and associated method, for synchronizing a database |
US10148530B2 (en) | 2012-09-07 | 2018-12-04 | Oracle International Corporation | Rule based subscription cloning |
US9253113B2 (en) | 2012-09-07 | 2016-02-02 | Oracle International Corporation | Customizable model for throttling and prioritizing orders in a cloud environment |
US9667470B2 (en) | 2012-09-07 | 2017-05-30 | Oracle International Corporation | Failure handling in the execution flow of provisioning operations in a cloud environment |
US10521746B2 (en) | 2012-09-07 | 2019-12-31 | Oracle International Corporation | Recovery workflow for processing subscription orders in a computing infrastructure system |
US9501541B2 (en) | 2012-09-07 | 2016-11-22 | Oracle International Corporation | Separation of pod provisioning and service provisioning |
US9621435B2 (en) | 2012-09-07 | 2017-04-11 | Oracle International Corporation | Declarative and extensible model for provisioning of cloud based services |
KR102020358B1 (ko) * | 2013-03-14 | 2019-11-05 | 삼성전자 주식회사 | 단말 및 그 단말에서 애플리케이션 동기화 방법 |
US10528590B2 (en) * | 2014-09-26 | 2020-01-07 | Oracle International Corporation | Optimizing a query with extrema function using in-memory data summaries on the storage server |
US9977820B1 (en) * | 2013-03-15 | 2018-05-22 | Tasktop Technologies, Incorporated | System and method for synchronizing states in associated data records |
US9342512B1 (en) | 2013-03-15 | 2016-05-17 | Tasktop Technologies, Incorporated | System and method for repairing data synchronization links |
US9588685B1 (en) * | 2013-05-03 | 2017-03-07 | EMC IP Holding Company LLC | Distributed workflow manager |
US9436724B2 (en) * | 2013-10-21 | 2016-09-06 | Sap Se | Migrating data in tables in a database |
CN104750744B (zh) * | 2013-12-31 | 2018-05-22 | ***通信集团河南有限公司 | 一种基于Oracle数据库的压缩数据同步方法及装置 |
US10164901B2 (en) | 2014-08-22 | 2018-12-25 | Oracle International Corporation | Intelligent data center selection |
CN105701116A (zh) * | 2014-11-27 | 2016-06-22 | 英业达科技有限公司 | 数据同步*** |
US9459839B2 (en) | 2014-12-15 | 2016-10-04 | Tasktop Technologies, Incorporated | Systems and methods to synchronize artifact relationships across a plurality of repositories |
KR101573663B1 (ko) | 2015-07-21 | 2015-12-01 | 한다시스템 주식회사 | 데이터 통합 방법 및 시스템 |
US10061536B2 (en) * | 2015-09-28 | 2018-08-28 | EMC IP Holding Company LLC | Disk synchronization |
CN111510954B (zh) * | 2016-02-05 | 2021-12-31 | 中兴通讯股份有限公司 | 调度定时间隔的确定方法及装置 |
CN107122354B (zh) * | 2016-02-24 | 2020-05-08 | 华为技术有限公司 | 事务执行方法、装置及*** |
CN109063005B (zh) * | 2018-07-10 | 2021-05-25 | 创新先进技术有限公司 | 一种数据迁移方法及***、存储介质、电子设备 |
US10997202B1 (en) | 2018-07-27 | 2021-05-04 | Veeva Systems Inc. | System and method for synchronizing data between a customer data management system and a data warehouse |
US10970255B1 (en) * | 2018-07-27 | 2021-04-06 | Veeva Systems Inc. | System and method for synchronizing data between a customer data management system and a data warehouse |
US11184406B1 (en) * | 2018-08-20 | 2021-11-23 | Shashank | System and methods for secure user interface session recording, transmission, and replay without third party disclosure |
CN109785042A (zh) * | 2018-12-13 | 2019-05-21 | 深圳平安财富宝投资咨询有限公司 | 分布式部署的异常处理方法、服务器、存储介质及装置 |
CN109933630B (zh) * | 2019-03-19 | 2021-11-23 | 武汉达梦数据库股份有限公司 | 数据库数据实时同步方法及设备 |
CN111367839B (zh) * | 2020-02-21 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种主机端与fpga加速器之间的数据同步方法 |
US11487784B2 (en) * | 2020-04-17 | 2022-11-01 | Sap Se | Reload procedure to retain data in target system |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE456782B (sv) | 1986-04-29 | 1988-10-31 | Ibm Svenska Ab | Databasprocessor i ett databehandlingssystem, metod foer tabellbehandling i en databasprocessor samt anvaendning av en databasprocessor i ett databehandlingssystem |
US5333299A (en) * | 1991-12-31 | 1994-07-26 | International Business Machines Corporation | Synchronization techniques for multimedia data streams |
US5822588A (en) * | 1995-06-09 | 1998-10-13 | Sun Microsystem, Inc. | System and method for checking the use of synchronization locks in a multi-threaded target program |
US5778389A (en) * | 1996-05-23 | 1998-07-07 | Electronic Data Systems Corporation | Method and system for synchronizing computer file directories |
WO1998035306A1 (en) * | 1997-02-11 | 1998-08-13 | Connected Corporation | File comparison for data backup and file synchronization |
US5950198A (en) * | 1997-03-24 | 1999-09-07 | Novell, Inc. | Processes and apparatuses for generating file correspondency through replication and synchronization between target and source computers |
US5848405A (en) * | 1997-04-21 | 1998-12-08 | Oracle Corporation | Method and apparatus for identifying new data by address ranges |
US6345313B1 (en) * | 1997-08-22 | 2002-02-05 | Sun Microsystems, Inc. | Recovery of synchronization constructs |
US6289357B1 (en) * | 1998-04-24 | 2001-09-11 | Platinum Technology Ip, Inc. | Method of automatically synchronizing mirrored database objects |
US6353835B1 (en) * | 1998-08-03 | 2002-03-05 | Lucent Technologies Inc. | Technique for effectively maintaining materialized views in a data warehouse |
US6108653A (en) * | 1998-08-31 | 2000-08-22 | Platinum Technology Ip, Inc. | Method and apparatus for fast and comprehensive DBMS analysis |
US6122640A (en) * | 1998-09-22 | 2000-09-19 | Platinum Technology Ip, Inc. | Method and apparatus for reorganizing an active DBMS table |
US6397125B1 (en) * | 1998-12-18 | 2002-05-28 | International Business Machines Corporation | Method of and apparatus for performing design synchronization in a computer system |
US6430577B1 (en) * | 1999-10-08 | 2002-08-06 | Unisys Corporation | System and method for asynchronously receiving multiple packets of audit data from a source databased host in a resynchronization mode and asynchronously writing the data to a target host |
JP3845535B2 (ja) | 1999-12-10 | 2006-11-15 | 株式会社東芝 | データベースシステム |
US20020059299A1 (en) * | 2000-07-14 | 2002-05-16 | Frederic Spaey | System and method for synchronizing databases |
JP2002202906A (ja) | 2000-12-28 | 2002-07-19 | Nec Corp | データベース二重化システムおよび方法 |
US6728736B2 (en) * | 2001-03-14 | 2004-04-27 | Storage Technology Corporation | System and method for synchronizing a data copy using an accumulation remote copy trio |
US6745209B2 (en) * | 2001-08-15 | 2004-06-01 | Iti, Inc. | Synchronization of plural databases in a database replication system |
EP1433086A4 (en) * | 2001-09-26 | 2006-07-26 | Emc Corp | EFFICIENT MANAGEMENT OF LARGE SIZE FILES |
CN100426875C (zh) | 2001-12-20 | 2008-10-15 | 中兴通讯股份有限公司 | 数据主备内存处理方法 |
US7574652B2 (en) * | 2002-06-20 | 2009-08-11 | Canon Kabushiki Kaisha | Methods for interactively defining transforms and for generating queries by manipulating existing query data |
US6973452B2 (en) * | 2003-05-19 | 2005-12-06 | Netezza Corporation | Limiting scans of loosely ordered and/or grouped relations using nearly ordered maps |
JP2004355203A (ja) | 2003-05-28 | 2004-12-16 | Nec Corp | データの更新・履歴・集計管理方式 |
US7873684B2 (en) * | 2003-08-14 | 2011-01-18 | Oracle International Corporation | Automatic and dynamic provisioning of databases |
US7440960B2 (en) * | 2003-09-03 | 2008-10-21 | International Business Machines Corporation | Result set management |
CA2555630C (en) * | 2004-02-12 | 2016-04-05 | Mobileframe Llc | Integrated deployment of software projects |
US7225307B2 (en) * | 2004-05-04 | 2007-05-29 | International Business Machines Corporation | Apparatus, system, and method for synchronizing an asynchronous mirror volume using a synchronous mirror volume |
US20060047696A1 (en) * | 2004-08-24 | 2006-03-02 | Microsoft Corporation | Partially materialized views |
JP4643395B2 (ja) | 2004-08-30 | 2011-03-02 | 株式会社日立製作所 | ストレージシステム及びデータの移動方法 |
US20060085491A1 (en) * | 2004-10-08 | 2006-04-20 | Foote Jane E | System and method for recovering from interruptions during data loading |
US8108389B2 (en) * | 2004-11-12 | 2012-01-31 | Make Sence, Inc. | Techniques for knowledge discovery by constructing knowledge correlations using concepts or terms |
JP2006301820A (ja) * | 2005-04-19 | 2006-11-02 | Hitachi Ltd | ストレージシステム及びストレージシステムのデータ移行方法 |
JP4693540B2 (ja) * | 2005-08-04 | 2011-06-01 | 富士通株式会社 | データベース再構成装置、およびデータベース再構成プログラム |
US7680767B2 (en) * | 2006-03-23 | 2010-03-16 | Microsoft Corporation | Mapping architecture with incremental view maintenance |
JP2008059367A (ja) * | 2006-08-31 | 2008-03-13 | Fujitsu Ltd | システムデータ構造管理プログラム、システムデータ構造管理装置、およびシステムデータ構造管理方法 |
US7707298B2 (en) * | 2007-05-10 | 2010-04-27 | Microsoft Corporation | Secure sharing of LOB bound information in client applications |
-
2008
- 2008-12-10 CN CNA2008101793946A patent/CN101419616A/zh active Pending
-
2009
- 2009-12-08 US US12/653,091 patent/US8949178B2/en active Active
- 2009-12-09 EP EP09832231.6A patent/EP2368178A4/en not_active Ceased
- 2009-12-09 JP JP2011540691A patent/JP5577350B2/ja not_active Expired - Fee Related
- 2009-12-09 WO PCT/US2009/006457 patent/WO2010068260A1/en active Application Filing
-
2014
- 2014-12-15 US US14/570,837 patent/US9727576B2/en active Active
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104603775A (zh) * | 2012-08-14 | 2015-05-06 | 华为技术有限公司 | 事务的回滚方法和装置,以及关系数据库管理*** |
CN104603775B (zh) * | 2012-08-14 | 2018-06-19 | 华为技术有限公司 | 事务的回滚方法和装置,以及关系数据库管理*** |
CN103838762B (zh) * | 2012-11-26 | 2017-09-29 | ***股份有限公司 | 基于数据表轮换的不间断数据处理装置及方法 |
CN103838762A (zh) * | 2012-11-26 | 2014-06-04 | ***股份有限公司 | 基于数据表轮换的不间断数据处理装置及方法 |
CN104980463B (zh) * | 2014-04-04 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 同步网络数据的方法和*** |
CN104980463A (zh) * | 2014-04-04 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 同步网络数据的方法和*** |
CN104268234A (zh) * | 2014-09-26 | 2015-01-07 | 东软集团股份有限公司 | 一种基于sql语句的数据同步方法和装置 |
CN104268234B (zh) * | 2014-09-26 | 2018-05-29 | 东软集团股份有限公司 | 一种基于sql语句的数据同步方法和装置 |
CN106297599A (zh) * | 2015-05-12 | 2017-01-04 | 杨鸿年 | 一种实时动态投影***的部署方法 |
CN106484560A (zh) * | 2015-08-25 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 数据同步方法及装置 |
CN106484560B (zh) * | 2015-08-25 | 2019-01-15 | 阿里巴巴集团控股有限公司 | 数据同步方法及装置 |
CN105183898A (zh) * | 2015-09-29 | 2015-12-23 | 北京奇艺世纪科技有限公司 | 数据同步方法和数据同步*** |
CN106802897A (zh) * | 2015-11-26 | 2017-06-06 | 北京国双科技有限公司 | 查询表数据同步方法和装置 |
CN106021494A (zh) * | 2016-05-19 | 2016-10-12 | ***股份有限公司 | 一种主数据同步方法及装置 |
CN106446090A (zh) * | 2016-09-12 | 2017-02-22 | 浪潮软件股份有限公司 | 一种跨库传输海量数据的方法 |
CN108984337A (zh) * | 2018-05-29 | 2018-12-11 | 杭州网易再顾科技有限公司 | 一种数据同步异常的修复方法、修复装置、介质和计算设备 |
CN108984337B (zh) * | 2018-05-29 | 2021-04-16 | 杭州网易再顾科技有限公司 | 一种数据同步异常的修复方法、修复装置、介质和计算设备 |
CN109492000A (zh) * | 2018-10-09 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种数据库表的复制方法及*** |
CN110196786A (zh) * | 2019-04-30 | 2019-09-03 | 武汉达梦数据库有限公司 | 数据库回滚同步中内存的控制方法及设备 |
CN110196786B (zh) * | 2019-04-30 | 2021-10-08 | 武汉达梦数据库股份有限公司 | 数据库回滚同步中内存的控制方法及设备 |
CN110347693A (zh) * | 2019-07-11 | 2019-10-18 | 招商局金融科技有限公司 | 数据同步方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US9727576B2 (en) | 2017-08-08 |
WO2010068260A1 (en) | 2010-06-17 |
US8949178B2 (en) | 2015-02-03 |
EP2368178A1 (en) | 2011-09-28 |
US20100145910A1 (en) | 2010-06-10 |
EP2368178A4 (en) | 2016-04-06 |
JP2012511773A (ja) | 2012-05-24 |
US20150186408A1 (en) | 2015-07-02 |
JP5577350B2 (ja) | 2014-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101419616A (zh) | 一种数据同步方法及装置 | |
CN102081665A (zh) | 一种数据同步方法及装置 | |
Huang et al. | X-Engine: An optimized storage engine for large-scale E-commerce transaction processing | |
US9589041B2 (en) | Client and server integration for replicating data | |
US10678808B2 (en) | Eager replication of uncommitted transactions | |
US7529752B2 (en) | Asymmetric streaming record data processor method and apparatus | |
US8078610B2 (en) | Optimization technique for dealing with data skew on foreign key joins | |
CN101334797B (zh) | 一种分布式文件***及其数据块一致性管理的方法 | |
US20200142992A1 (en) | Dual-stack architecture that integrates relational database with blockchain | |
CN107038162A (zh) | 基于数据库日志的实时数据查询方法和*** | |
US8386445B2 (en) | Reorganizing database tables | |
US20120290595A1 (en) | Super-records | |
KR102038529B1 (ko) | 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템 | |
CN110532272A (zh) | 数据查询方法、装置、电子设备及计算机可读存储介质 | |
CN104834635A (zh) | 一种数据处理方法和装置 | |
TWI475409B (zh) | Data synchronization method and device | |
US11449521B2 (en) | Database management system | |
US20130332465A1 (en) | Database management device and database management method | |
CN107908713A (zh) | 一种基于Redis集群的分布式动态杜鹃过滤***及其过滤方法 | |
US8290935B1 (en) | Method and system for optimizing database system queries | |
CN115509693A (zh) | 一种基于集群Pod调度结合数据湖的数据优化方法 | |
CN107924399B (zh) | 处理对主机而言数据传输量不明的检索请求的检索处理***和方法 | |
CN105354323A (zh) | 使用二级过滤提高列存数据库精确查询速度的方法与装置 | |
JP2000020374A (ja) | レプリケーション制御システム | |
US20240004882A1 (en) | Handling null values in processing join operations during query execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1129938 Country of ref document: HK |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090429 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1129938 Country of ref document: HK |