CN103761318A - 一种关系型异构数据库数据同步的方法及系统 - Google Patents
一种关系型异构数据库数据同步的方法及系统 Download PDFInfo
- Publication number
- CN103761318A CN103761318A CN201410040174.0A CN201410040174A CN103761318A CN 103761318 A CN103761318 A CN 103761318A CN 201410040174 A CN201410040174 A CN 201410040174A CN 103761318 A CN103761318 A CN 103761318A
- Authority
- CN
- China
- Prior art keywords
- statement
- file
- database
- data
- name
- 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.)
- Granted
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/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/284—Relational databases
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种关系型异构数据库数据同步的方法及系统,所述方法包括:获取用户预先配置的同步表文件、关键字信息表、语句调用表;实时获取源数据库产生的归档日志文件;对所述的归档日志文件进行分析,转化为标准SQL语句;实时获取源数据库产生的后续日志文件;根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。本发明使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,同时大大提高数据同步的时效性。
Description
技术领域
本发明关于大型数据库的数据处理技术领域,特别是关于大型数据库系统之间的数据同步技术,具体的讲是一种关系型异构数据库数据同步的方法及系统。
背景技术
现有技术中的大型IT系统,各个不同的应用间一般有大量的信息需要进行同步。数据同步的处理方法包括如下几类:
(一)、采用日终批量进行处理。该种方式具有如下缺陷:但是采用日终批量的方法首先牺牲了数据同步的时效性,上游应用最新维护的数据在第一时间无法同步到下游,从而在较长的时间段内引起上下游数据的不一致;每新增一个表的上下游同步就要同时开发一套批量同步程序,可维护性较差。
(二)、多数数据库系统使用数据库链进行分布式事务提交。该种方式具有如下明显不足:只适用于种类相同的数据库之间,异构数据库之间无法使用;由分布式事务带来的分布式事务锁占用了一定系统资源增大了系统开销;完成数据同步的过程需要同步修改交易,程序维护量较大。
发明内容
为了克服现有技术存在的上述问题,本发明提供了一种关系型异构数据库数据同步的方法及系统,针对时效要求较高的数据同步需求,使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,同时大大提高数据同步的时效性。
本发明的目的之一是,提供一种关系型异构数据库数据同步的方法,包括:获取用户预先配置的同步表文件、关键字信息表、语句调用表;实时获取源数据库产生的归档日志文件;对所述的归档日志文件进行分析,转化为标准SQL语句;实时获取源数据库产生的后续日志文件;根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
本发明的目的之一是,提供了一种关系型异构数据库数据同步的系统,所述的系统具体包括源数据库、目标数据库以及数据同步设备,其中,所述的数据同步设备具体包括:预设信息获取装置,用于获取用户预先配置的同步表文件、关键字信息表、语句调用表;归档日志文件获取装置,用于实时获取源数据库产生的归档日志文件;分析装置,用于对所述的归档日志文件进行分析,转化为标准SQL语句;后续日志文件获取装置,用于实时获取源数据库产生的后续日志文件;语句传输装置,用于根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
本发明的有益效果在于,提供了一种关系型异构数据库数据同步的方法及系统,针对时效要求较高的数据同步需求,使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,打破了只能在相同类型数据库间同步的局限,在投入较小、通过简单的配置的情况下即可实现异构数据库之间的数据实时同步。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式一的流程图;
图2为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式二的流程图;
图3为图1中的步骤S103的具体流程图;
图4为图3中的步骤S303的具体流程图;
图5为图1中的步骤S105的具体流程图;
图6为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式三的流程图;
图7为本发明实施例提供的一种关系型异构数据库数据同步的系统的结构框图;
图8为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的实施方式二的结构框图;
图9为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的分析装置303的具体结构框图;
图10为本发明实施例提供的一种关系型异构数据库数据同步的系统中分析装置301的获取模块3033的具体结构框图;
图11为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的语句传输装置305的具体结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明涉及关系型异构数据库系统之间的数据同步领域。大型IT系统存在着大量需要同步上下游应用的数据,而这些数据库系统可能使用不同公司的数据库产品。本发明提供一种关系型异构数据库数据同步的方法和系统,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,同时大大提高数据同步的时效性。
图1为本发明提出的一种关系型异构数据库数据同步的方法的实施方式一的具体流程图,由图1可知,在实施方式一中,所述的方法包括:
S101:获取用户预先配置的同步表文件、关键字信息表、语句调用表。
在具体的实施方式中,用户可根据自身需要通过客户端预先配置同步表文件、关键字信息表、语句调用表这三个参数文件,下面逐一进行介绍。
1、同步表文件
同步表文件是供用户配置需要同步的表的表名。同步表文件中包括源数据库类型、表所属用户名、表名信息,这三项需要用户进行设置。以ORACLE为例,如表1所示:
表1
<db_type>ORACLE</db_type> |
<username>PERSONAL</username> |
<tabname>Table1</tabname> |
<tabname>Table2</tabname> |
2、关键字信息表
为了提高数据库记录日志的速度,数据库日志文件中记录的信息都是内部格式,装置需要根据关键字信息进行检索、分析,关键字信息表中记录不同类型的数据库(如Oracle、DB2、Sql Server)生成的日志文件中,关键信息对应的关键字的数据字典,依据该表中的关键字在日志中进行搜索。
关键字信息表中关键信息有6项:对象号、事务号、操作类型、数据块地址、块内行号、具体字段值。以下以Oracle为例如表2所示,说明各关键信息所对应的关键字,及其作用。
表2
数据库 | 关键信息 | 对应关键字 |
Oracle | 对象号 | OBJ |
Oracle | 事务号 | XID/SQN |
Oracle | 操作类型 | OP |
Oracle | 数据块地址 | DBA |
Oracle | 块内行号 | SLOT |
Oracle | 具体字段值 | Col |
对象号——OBJ:表名信息,根据对象号,可以通过数据库内部信息视图BA_OBJECTS得到操作的表名;对象号还可以同数据文件号、数据块号、块内行号一起组成数据库中每条记录的唯一标识—ROWID。
事务号——XID或SQN:XID在DML语句中使用,SQN在DCL语句中使用,据此可以判断一个DML语句是否做了提交操作。XID的组成形式是A.B.C,其中C部分用来QN匹配,即记录DCL语句的日志中SQN的值与记录DML语句的日志中XID的值的C部分一样时,该DCL语句与该DML语句相对应,根据该DCL语句中的操作类型可以判断DML语句做了提交还是回滚操作。
操作类型——OP:常用的字典,11.2代表操作是插入一条记录;11.4代表删除一条记录;11.5代表修改一条记录;5.4代表执行COMMIT;5.11代表执行ROLLBACK。前三项对应DML语句操作,后两项对应DCL语句的操作。
数据块地址——DBA:包含数据文件号和数据块号,它是一个十六进制数,获取后需将其转化为二进制,前10位为文件号,后22位代表的块号,它与对象号和块内行号可以组成ROWID。例如值为0X010001A7,转化为二进制为0000 0001 0000 0000 0000 00011010 0100,其中前10位0000 0001 00,为文件号,翻译为十进制为4,后22位00 0000 00000001 1010 0100代表文件内的块号,翻译为十进制为420。
块内行号——SLOT:它与数据文件号、对象号、块号一起可以组成ROWID。格式为一般为a(0xb),a为十进制下数值,括号内0x表示十六进制单位,b为十六进制下数值。例如2(0x2),第一个2为十进制下数值,括号内0X表示十六进制单位,2为十六进制下数值。获取a即可。
具体字段的值——col q:[n]xx:q表示字段的顺序号,从0开始记,n表示字段长度,xx表示具体内容。例如COL0:[1]36,其中0代表字段顺序号,因为是从0开始计数,所以对应第一个字段,通过DBA_TAB_COLUMNS视图可以查出对应的字段名;[1]代表该字段长度为1;36代表ASCII码十六进制数36,即字符‘6’。
3、语句调用表
语句调用表是记录不同类型数据库中,根据日志中关键信息,结合源数据库提供的相关视图或方法,获取源数据库操作的相关信息时,执行语句的列表。
语句调用表,以Oracle为例,包括如下语句:
获取对象语句:根据对象号OBJ的值,获取日志内容对应的表名。
SQL>SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_ID=xx;
(其中xx为对象号OBJ的值)
获取唯一标识语句:根据对象号、数据文件号、数据块号、块内行号的值,获取被修改的记录的唯一标识ROWID。
SQL>select dbms_rowid.ROWID_CREATE(1,a,b,c,d)rid from dual;
其中a为对象号OBJ的对应值;b为数据文件号的值,从数据库地址DBA中得到;c为块号的值,从数据库地址DBA中得到;d为块内行号SLOT的值。其中1是代表扩展类型的rowid,兼容cluster表。
获取主键字段语句:根据表名,获取表中的主键字段,如表3所示。
表3
SQL>SELECT A.TABLE_NAME,B.COLUMN_NAME |
2 FROM DBA_CONSTRAINTS A,DBA_IND_COLUMNS B |
3 WHERE A.TABLE_NAME='xx' |
4 AND A.CONSTRAINT_TYPE='P'--类型P代表主键 |
5 AND A.CONSTRAINT_NAME=B.INDEX_NAME |
其中xx为通过获取对象语句获得的表名,P代表主键。
获取主键值语句:根据表名、主键字段和ROWID获取被操作的记录对应的主键字段的值,如表4所示。
表4
SQL>SELECT a FROM b |
2 WHERE ROWID='c' |
其中a为通过获取主键字段语句得到的主键字段,b为通过获取对象语句获得的表名,c为通过获取唯一标识语句得到的ROWID。
获取操作字段语句:根据表名和字段顺序号,获取被修改的具体字段,如表5所示。
表5
SQL>SELECT COLUMN_NAME |
2 FROM DBA_TAB_COLUMNS |
3 WHERE TABLE_NAME='a' |
4 AND COLUMN_ID=b |
其中a为通过获取对象语句获得的表名;b为被操作的具体字段的序号,根据具体字段值col得到:col的值一般格式为q:[n]xx,q表示字段的顺序号,因为它是从0开始记,因此b=q+1。
S102:实时获取源数据库产生的归档日志文件。
S103:对所述的归档日志文件进行分析,转化为标准结构化查询语言SQL语句。图3为步骤S103的具体流程图。
S104:实时获取源数据库产生的后续日志文件;
S105:根据所述的后续日志文件将所述的标准结构化查询语言SQL语句传输至目标数据库。图5为步骤S105的具体流程图。
图2为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式二的流程图,由图2可知,在实施方式二中,该方法具体包括:
S201:获取用户预先配置的同步表文件、关键字信息表、语句调用表。
S202:实时获取源数据库产生的归档日志文件。在具体的实施方式中,可对已读取过的归档日志文件进行记录。
S203:获取所述的归档日志文件对应的归档表信息,在具体的实施方式中,通过读取归档日志文件中操作内容对应的表名来实现该步骤。
S204:判断所述的归档表信息是否在所述的同步表文件中,当判断为否时,则忽略这部分日志内容,继续读取后续日志文件。
S205:当判断为是时,对所述的归档日志文件进行分析,转化为标准结构化查询语言SQL语句。图3为步骤S205的具体流程图,由图3可知,该步骤具体包括:
S301:从所述的关键字信息表中提取出关键字;
S302:根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、数据操纵语言DML操作类型、DML事务号;
S303:根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值,图4为步骤S303的具体流程图,由图4可知,该步骤具体包括:
S401:对所述的数据块地址进行分解,得到数据文件号、数据块号;
S402:根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名。在具体的实施方式中,根据所述的对象号调用语句调用表中的获取对象语句,通过DBA_OBJECTS视图获取日志内容对应的表名。
S403:对所述的字段值进行分解,得到字段顺序号、字段长度以及具体值;
S404:根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段,在具体的实施方式中,根据所述的表名调用语句调用表中的获取主键字段语句,通过DBA_CONSTRAINTS视图获取表中的主键字段。
S405:根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的行唯一标识ROWID。在具体的实施方式中,调用语句调用表中获取唯一标识语句,通过DBMS_ROWID程序包获取被操作记录的ROWID。
S406:根据所述的表名、主键字段、ROWID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值,在具体的实施方式中,通过调用语句调用表中的获取主键值语句,获取被操作记录对应的主键字段值。
S407:根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。在具体的实施方式中,通过调用语句调用表中的获取操作字段语句,通过DBA_TAB_COLUMNS视图,获取被修改字段名以及被修改字段值。
由图3可知,步骤S205还包括:
S304:根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
由图2可知,在实施方式二中,该方法还包括:
S206:实时获取源数据库产生的后续日志文件;
S207:根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。图5为步骤S207的具体流程图,由图5可知,该步骤具体包括:
S501:从所述的后续日志文件中提取出含顺序号SQN信息的日志文件;
S502:根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的数据控制语言DCL操作;
S503:当判断为是时,若所述的DCL操作执行的是回滚(ROLLBACK),则丢弃所述的标准SQL语句;
S504:当判断为是时,若所述的DCL操作执行的是提交(COMMIT),则将所述的标准SQL语句传输至目标数据库。
图6为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式三的流程图,由图6可知,在实施方式三中,该方法具体包括:
S601:获取用户预先配置的同步表文件、关键字信息表、语句调用表。
S602:实时获取源数据库产生的归档日志文件。在具体的实施方式中,可对已读取过的归档日志文件进行记录。
S603:获取所述的归档日志文件对应的归档表信息,在具体的实施方式中,通过读取归档日志文件中操作内容对应的表名来实现该步骤。
S604:判断所述的归档表信息是否在所述的同步表文件中,当判断为否时,则忽略这部分日志内容,继续读取后续日志文件。
S605:当判断为是时,对所述的归档日志文件进行分析,转化为标准SQL语句。图3为步骤S605的具体流程图,由图3可知,该步骤具体包括:
S301:从所述的关键字信息表中提取出关键字;
S302:根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、DML操作类型、DML事务号;
S303:根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值,图4为步骤S303的具体流程图,由图4可知,该步骤具体包括:
S401:对所述的数据块地址进行分解,得到数据文件号、数据块号;
S402:根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名。在具体的实施方式中,根据所述的对象号调用语句调用表中的获取对象语句,通过DBA_OBJECTS视图获取日志内容对应的表名。
S403:对所述的字段值进行分解,得到字段顺序号、字段长度以及具体值;
S404:根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段,在具体的实施方式中,根据所述的表名调用语句调用表中的获取主键字段语句,通过DBA_CONSTRAINTS视图获取表中的主键字段。
S405:根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的ROWID。在具体的实施方式中,调用语句调用表中获取唯一标识语句,通过DBMS_ROWID程序包获取被操作记录的ROWID。
S406:根据所述的表名、主键字段、ROWID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值,在具体的实施方式中,通过调用语句调用表中的获取主键值语句,获取被操作记录对应的主键字段值。
S407:根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。在具体的实施方式中,通过调用语句调用表中的获取操作字段语句,通过DBA_TAB_COLUMNS视图,获取被修改字段名以及被修改字段值。
由图6可知,步骤S605还包括:
S304:根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
也即,根据关键字信息表中的关键字参数,对收到的归档日志文件进行检索分析,从中提取构造标准SQL语句所需的重要信息:记录有DML操作的数据文件号、对象号、数据块号、块内的行号、字段的顺序号以及操作类型和修改后的内容值。确定修改的表名,表的主键字段,被修改记录的主键值,被修改字段的字段名;并结合操作类型和值,将日志内容转化为一条标准SQL语句。然后通过事务号在后续日志中找到对应的DCL操作,判断其操作类型是提交还是回滚,如果执行了提交操作,则将生成的SQL语句传输至目标数据库,否则如果进行了回滚,则丢弃转化好的SQL语句。
由图6可知,在实施方式三中,该方法还包括:
S606:实时获取源数据库产生的后续日志文件;
S607:根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。图5为步骤S607的具体流程图,由图5可知,该步骤具体包括:
S501:从所述的后续日志文件中提取出含SQN信息的日志文件;
S502:根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的DCL操作;
S503:当判断为是时,若所述的DCL操作执行的是回滚(ROLLBACK),则丢弃所述的标准SQL语句;
S504:当判断为是时,若所述的DCL操作执行的是提交(COMMIT),则将所述的标准SQL语句传输至目标数据库。在具体的实施方式中,可通过异步方式传输到目标数据库。
下面将ORACLE数据库作为源数据库为例,对归档日志文件的分析过程做进一步说明。以下为ORACLE数据库实际的dump出的一段日志文件,如表6所示(此处只选取了日志中和本发明相关的内容)。
表6
获取到归档日志文件后,检索到关键字OBJ,获取对应值为52968,调用获取对象语句,通过查询DBA_OBJECTS视图,得到对应表名;并读取同步表文件,如表名在同步表文件中,则需要同步(本例假设需要同步)。
从所述的关键字信息表中提取出关键字,根据所述的关键字对所述的归档日志文件进行检索。检索到关键字XID,判断日志内容为DML语句,同时检索关键字DBA、OBJ、slot、col,得到表名,确定修改的记录(通过主键字段和被修改记录的主键值)和被修改字段的字段名。同时,根据op的值,判断该段内容的DML语句的执行类型,是插入、修改还是删除等,结合收到的表名、主键字段、主键值、被修改字段名和具体值,生成相应的标准SQL语句。
获取后续日志文件,根据SQN可知该内容为DCL语句,将SQN的值与之前获取的XID值比较,如一致,说明该段内容为SQL语句对应的DCL操作,根据OP判断它是COMMIT还是ROLLBACK操作。如果是COMMIT,将标准SQL语句传输至目标数据库;如果是ROLLBACK则不再向后传送。
由图6可知,在实施方式三中,该方法还包括:
S608:所述的目标数据库执行所述的标准SQL语句;
S609:所述的目标数据库执行提交(COMMIT)操作;
S610:所述的目标数据库判断所述的标准SQL语句是否执行成功;
S611:当判断为否时,所述的目标数据库生成错误信息,并将所述的错误信息传输至所述的源数据库;
S612:所述的源数据库根据所述的错误信息生成错误日志,便于今后查询。如果语句执行成功,则单条语句的同步工作结束。
如上所述,即为本发明提供的一种关系型异构数据库数据同步的方法,其总体思路包括:读取源数据库生成的归档日志的信息;分析归档日志内容,将异构数据库的日志信息转换为标准SQL语句;将标准SQL语句传输到目标数据库端并执行。
图7为本发明提出的一种关系型异构数据库数据同步的系统的具体结构框图,由图7可知,所述的系统包括源数据库100、目标数据库200以及数据同步设备300。源数据库产生归档日志文件,同步服务器实时扫描归档日志文件,并对日志内容进行读取、判断、分析,最后将需要同步的信息提交到目标数据库,实现源数据库到目标数据库的数据同步。所述同步服务器可以是小型服务器或PC服务器。此外,还可包括客户端,与同步服务器连接,通过同步服务器提供的界面进行参数设置,客户端可以是PC机。
由图7可知,所述的数据同步设备具体包括:
预设信息获取装置301,用于获取用户预先配置的同步表文件、关键字信息表、语句调用表。
在具体的实施方式中,用户可根据自身需要通过客户端预先配置同步表文件、关键字信息表、语句调用表这三个参数文件,下面逐一进行介绍。
1、同步表文件
同步表文件是供用户配置需要同步的表的表名。同步表文件中包括源数据库类型、表所属用户名、表名信息,这三项需要用户进行设置。以ORACLE为例,如表1所示。
2、关键字信息表
为了提高数据库记录日志的速度,数据库日志文件中记录的信息都是内部格式,装置需要根据关键字信息进行检索、分析,关键字信息表中记录不同类型的数据库(如Oracle、DB2、Sql Server)生成的日志文件中,关键信息对应的关键字的数据字典,依据该表中的关键字在日志中进行搜索。
关键字信息表中关键信息有6项:对象号、事务号、操作类型、数据块地址、块内行号、具体字段值。以下以Oracle为例如表2所示,说明各关键信息所对应的关键字,及其作用。
对象号——OBJ:表名信息,根据对象号,可以通过数据库内部信息视图DBA_OBJECTS得到操作的表名;对象号还可以同数据文件号、数据块号、块内行号一起组成数据库中每条记录的唯一标识—ROWID。
事务号——XID或SQN:XID在DML语句中使用,SQN在DCL语句中使用,据此可以判断一个DML语句是否做了提交操作。XID的组成形式是A.B.C,其中C部分用来SQN匹配,即记录DCL语句的日志中SQN的值与记录DML语句的日志中XID的值的C部分一样时,该DCL语句与该DML语句相对应,根据该DCL语句中的操作类型可以判断DML语句做了提交还是回滚操作。
操作类型——OP:常用的字典,11.2代表操作是插入一条记录;11.4代表删除一条记录;11.5代表修改一条记录;5.4代表执行COMMIT;5.11代表执行ROLLBACK。前三项对应DML语句操作,后两项对应DCL语句的操作。
数据块地址——DBA:包含数据文件号和数据块号,它是一个十六进制数,获取后需将其转化为二进制,前10位为文件号,后22位代表的块号,它与对象号和块内行号可以组成ROWID。例如值为0X010001A7,转化为二进制为0000 0001 0000 0000 0000 00011010 0100,其中前10位0000 0001 00,为文件号,翻译为十进制为4,后22位00 0000 00000001 1010 0100代表文件内的块号,翻译为十进制为420。
块内行号——SLOT:它与数据文件号、对象号、块号一起可以组成ROWID。格式为一般为a(0xb),a为十进制下数值,括号内0x表示十六进制单位,b为十六进制下数值。例如2(0x2),第一个2为十进制下数值,括号内0X表示十六进制单位,2为十六进制下数值。获取a即可。
具体字段的值——col q:[n]xx:q表示字段的顺序号,从0开始记,n表示字段长度,xx表示具体内容。例如COL0:[1]36,其中0代表字段顺序号,因为是从0开始计数,所以对应第一个字段,通过DBA_TAB_COLUMNS视图可以查出对应的字段名;[1]代表该字段长度为1;36代表ASCII码十六进制数36,即字符‘6’。
3、语句调用表
语句调用表是记录不同类型数据库中,根据日志中关键信息,结合源数据库提供的相关视图或方法,获取源数据库操作的相关信息时,执行语句的列表。
语句调用表,以Oracle为例,包括如下语句:
获取对象语句:根据对象号OBJ的值,获取日志内容对应的表名。
SQL>SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_ID=xx;
(其中xx为对象号OBJ的值)
获取唯一标识语句:根据对象号、数据文件号、数据块号、块内行号的值,获取被修改的记录的唯一标识ROWID。
SQL>select dbms_rowid.ROWID_CREATE(1,a,b,c,d)rid from dual;
其中a为对象号OBJ的对应值;b为数据文件号的值,从数据库地址DBA中得到;c为块号的值,从数据库地址DBA中得到;d为块内行号SLOT的值。其中1是代表扩展类型的rowid,兼容cluster表。
获取主键字段语句:根据表名,获取表中的主键字段,如表3所示。
其中xx为通过获取对象语句获得的表名,P代表主键。
获取主键值语句:根据表名、主键字段和ROWID获取被操作的记录对应的主键字段的值,如表4所示。
其中a为通过获取主键字段语句得到的主键字段,b为通过获取对象语句获得的表名,c为通过获取唯一标识语句得到的ROWID。
获取操作字段语句:根据表名和字段顺序号,获取被修改的具体字段,如表5所示。
其中a为通过获取对象语句获得的表名;b为被操作的具体字段的序号,根据具体字段值col得到:col的值一般格式为q:[n]xx,q表示字段的顺序号,因为它是从0开始记,因此b=q+1。
归档日志文件获取装置302,用于实时获取源数据库产生的归档日志文件。
分析装置303,用于对所述的归档日志文件进行分析,转化为标准SQL语句。
后续日志文件获取装置304,用于实时获取源数据库产生的后续日志文件;
语句传输装置305,用于根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
图8为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的实施方式二的结构框图,由图8可知,在实施方式二中,数据同步设备300具体包括:
预设信息获取装置301,用于获取用户预先配置的同步表文件、关键字信息表、语句调用表。
归档日志文件获取装置302,用于实时获取源数据库产生的归档日志文件。在具体的实施方式中,可对已读取过的归档日志文件进行记录。
归档表信息获取装置306,用于获取所述的归档日志文件对应的归档表信息,在具体的实施方式中,通过读取归档日志文件中操作内容对应的表名来实现该步骤。
判断装置307,用于判断所述的归档表信息是否在所述的同步表文件中,当判断为否时,则忽略这部分日志内容,继续读取后续日志文件。
分析装置303,用于当判断装置判断为是时,对所述的归档日志文件进行分析,转化为标准SQL语句。图9为分析装置303的具体结构框图,由图9可知,分析装置303具体包括:
关键字提取模块3031,用于从所述的关键字信息表中提取出关键字;
检索模块3032,用于根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、DML操作类型、DML事务号;
获取模块3033,用于根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值,图10为获取模块3033的具体结构框图,由图10可知,获取模块3033具体包括:
数据块地址分解单元30331,用于对所述的数据块地址进行分解,得到数据文件号、数据块号;
表名获取单元30332,用于根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名。在具体的实施方式中,根据所述的对象号调用语句调用表中的获取对象语句,通过DBA_OBJECTS视图获取日志内容对应的表名。
字段值分解单元30333,用于对所述的字段值进行分解,得到字段顺序号、字段长度以及具体值;
主键字段获取单元30334,用于根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段,在具体的实施方式中,根据所述的表名调用语句调用表中的获取主键字段语句,通过DBA_CONSTRAINTS视图获取表中的主键字段。
ROWID获取单元30335,用于根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的ROWID。在具体的实施方式中,调用语句调用表中获取唯一标识语句,通过DBMS_ROWID程序包获取被操作记录的ROWID。
主键字段值获取单元30336,用于根据所述的表名、主键字段、ROWID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值,在具体的实施方式中,通过调用语句调用表中的获取主键值语句,获取被操作记录对应的主键字段值。
被修改字段获取单元30337,用于根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。在具体的实施方式中,通过调用语句调用表中的获取操作字段语句,通过DBA_TAB_COLUMNS视图,获取被修改字段名以及被修改字段值。
由图9可知,分析装置303还包括:
标准语句生成模块3034,用于根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
也即,根据关键字信息表中的关键字参数,对收到的归档日志文件进行检索分析,从中提取构造标准SQL语句所需的重要信息:记录有DML操作的数据文件号、对象号、数据块号、块内的行号、字段的顺序号以及操作类型和修改后的内容值。确定修改的表名,表的主键字段,被修改记录的主键值,被修改字段的字段名;并结合操作类型和值,将日志内容转化为一条标准SQL语句。然后通过事务号在后续日志中找到对应的DCL操作,判断其操作类型是提交还是回滚,如果执行了提交操作,则将生成的SQL语句传输至目标数据库,否则如果进行了回滚,则丢弃转化好的SQL语句。
由图8可知,在实施方式二中,数据同步设备300还包括:
后续日志文件获取装置304,用于实时获取源数据库产生的后续日志文件;
语句传输装置305,用于根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。图11为语句传输装置305的具体结构框图,由图11可知,语句传输装置305具体包括:
日志文件提取模块3051,用于从所述的后续日志文件中提取出含SQN信息的日志文件;
判断模块3052,用于根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的DCL操作;
第一处理模块3053,用于当所述的判断模块判断为是时,若所述的DCL操作执行的是回滚(ROLLBACK),则丢弃所述的标准SQL语句;
第二处理模块3054,用于当所述的判断模块判断为是时,若所述的DCL操作执行的是提交(COMMIT),则将所述的标准SQL语句传输至目标数据库。
下面将ORACLE数据库作为源数据库为例,对归档日志文件的分析过程做进一步说明。以下为ORACLE数据库实际的dump出的一段日志文件,如表6所示(此处只选取了日志中和本发明相关的内容)。
获取到归档日志文件后,检索到关键字OBJ,获取对应值为52968,调用获取对象语句,通过查询DBA_OBJECTS视图,得到对应表名;并读取同步表文件,如表名在同步表文件中,则需要同步(本例假设需要同步)。
从所述的关键字信息表中提取出关键字,根据所述的关键字对所述的归档日志文件进行检索。检索到关键字XID,判断日志内容为DML语句,同时检索关键字DBA、OBJ、slot、col,得到表名,确定修改的记录(通过主键字段和被修改记录的主键值)和被修改字段的字段名。同时,根据op的值,判断该段内容的DML语句的执行类型,是插入、修改还是删除等,结合收到的表名、主键字段、主键值、被修改字段名和具体值,生成相应的标准SQL语句。
获取后续日志文件,根据SQN可知该内容为DCL语句,将SQN的值与之前获取的XID值比较,如一致,说明该段内容为SQL语句对应的DCL操作,根据OP判断它是COMMIT还是ROLLBACK操作。如果是COMMIT,将标准SQL语句传输至目标数据库;如果是ROLLBACK则不再向后传送。
所述的目标数据库还用于:执行所述的标准SQL语句,执行提交操作,并判断所述的标准SQL语句是否执行成功,当判断为否时,目标数据库生成错误信息,并将所述的错误信息传输至所述的源数据库;
所述的源数据库根据所述的错误信息生成错误日志,便于今后查询。如果语句执行成功,则单条语句的同步工作结束。
如上所述,即为本发明提供的一种关系型异构数据库数据同步的系统,其总体思路包括:读取源数据库生成的归档日志的信息;分析归档日志内容,将异构数据库的日志信息转换为标准SQL语句;将标准SQL语句传输到目标数据库端并执行。
下面结合具体的实施例,详细介绍本发明的技术方案。通过一个ORACLE数据库的实际例子进行详细说明:
源数据库中,有表TT,对其进行了更新操作。
用户预先配置的同步表文件如表7所示,TT为需要同步的表。
表7
<db_type>ORACLE</db_type> |
<username>admin</username> |
<tabname>TT</tabname> |
源数据库中,TT中有3个字段,AA,BB,CC,其中AA为该表主键字段;其中有一条记录为表8所示:
表8
在源数据库中,对该记录执行了如下操作:将CC字段的值“g”修改为大写“G”。
该操作在源数据库的归档日志文件中生成了如下表9所示的对应信息:
表9
实时读取日志文件(CHANGE#1)。检索到对象号对应关键字OBJ,获取对应值52968,将对应值作为参数,执行获取对象语句,通过查询DBA_OBJECTS视图,得到对应表名TT如表10所示:
表10
SQL>SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE |
OBJECT_ID=52968; |
OBJECT_NAME |
-------------------------------------------------------------------- |
TT |
查询同步表文件,包含TT,判断出该表的操作需要进行同步。将收到的日志进行检索。
关键字检索模块32检索到关键字DBA,获取其值0x010001a6,将该值转化为二进制数0000 0001 0000 0000 0000 0001 1010 0100,截取前10位0000 0001 00,得到数据文件号,转换十进制为4;截取后22位00 0000 0000 0001 1010 0110,得到文件内的块号,转换十进制为422。检索到关键字OBJ,获取其值52968。
检索到关键字slot,获取其值2(0x2),得到块内行号2。检索到的col的值2[1]:47,检索到op,检索到XID。
调用获取对象语句,通过DBA_OBJECTS视图得到表名TT,如表11所示。
表11
SQL>SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE |
OBJECT_ID=52968; |
OBJECT_NAME |
--------------------------------------------------------------------- |
TT |
调用获取主键字段语句,通过DBA_CONSTRAINTS视图获取表的主键字段为AA,如表12所示。
表12
SQL>SELECT A.TABLE_NAME,B.COLUMN_NAME |
2 FROM DBA_CONSTRAINTS A,DBA_IND_COLUMNS B |
3 WHERE A.TABLE_NAME='TT' |
4 AND A.CONSTRAINT_TYPE='P' |
5 AND A.CONSTRAINT_NAME=B.INDEX_NAME; |
TABLE_NAME COLUMN_NAME |
-------------------------------------------------------------------------------------- |
TT AA |
根据对象号52968、数据文件号4、数据块号422、块内行号2,调用获取唯一标识语句,通过DBMS_ROWID程序包获取被修改记录在数据库内的唯一标识——ROWID的值,如表13所示。
表13
SQL>select dbms_rowid.ROWID_CREATE(1,52968,4,422,2)rid from dual; |
RID |
------------------------------------------------------------------------------------------ |
AAAM7oAAEAAAAGmAAC |
调用获取主键值语句,得到被操作记录对应的主键字段的值为7,如表14所示。
表14
SQL>SELECT AA FROM TT |
2 WHERE ROWID='AAAM7oAAEAAAAGmAAC'; |
AA |
------------------------------------------------------------------------------------------ |
7 |
调用获取操作字段语句,通过DBA_TAB_COLUMNS视图,得到被修改字段的字段名为CC。字段顺序号为2,但由于日志中是从0开始计数,因此被修改的应为第三个字段,如表15所示。
表15
SQL>SELECT COLUMN_NAME |
2 FROM DBA_TAB_COLUMNS |
3 WHERE TABLE_NAME='TT' |
4 AND COLUMN_ID=3; |
COLUMN_NAME |
------------------------------------------------------------------------------------------ |
CC |
根据操作类型OP的值11.5,判断出该段内容执行update操作,对应将生成update语句。获得的具体值47为ASCII码的十六进制,经转化为‘G’。生成最终的标准SQL语句如表16所示:
表16
UPDATE TT |
SET CC=‘G’ |
WHERE AA=‘7’; |
读取后续日志(CHANGE#3),检索到关键字SQN,进行检索。检索到关键字SQN和op。判断SQN的值与之前收到的DML语句的XID的值000013eb相同,确定该段日志内容为对应的DCL语句。同时,根据OP值5.4,确定执行COMMIT操作。将SQL语句传输,通过异步方式将语句传输到目标数据库端,目标数据库执行传输过来的SQL语句并执行提交(COMMIT)操作。
delete操作与update操作类似,在此不再赘述。几种关系型数据库的分析方法基本类似。
综上所述,本发明提出的一种关系型异构数据库数据同步的方法及系统,针对时效要求较高的数据同步需求,使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,打破了只能在相同类型数据库间同步的局限,在投入较小、通过简单的配置的情况下即可实现异构数据库之间的数据实时同步。
本发明主要优点如下:
1、实现了异构数据库间的数据实时同步。保证了数据同步的时效性。
2、不必每新增一个表的上下游同步,就要同时开发一套批量同步程序,提高了系统的可维护性。
3、打破了只能在相同类型数据库间同步的局限。在投入较小、通过简单的配置的情况下即可实现异构数据库之间的数据实时同步。
4、本发明所述方法直接读取数据库运行中产生的归档日志文件,通过额外的服务器进行对日志文件进行分析工作,可以减少数据库服务器本身的负责压力,提高数据库服务器的运行效率。即使是一源对多目标同步,本发明由于使用额外的服务器处理,只是将标准SQL语句发送到多个目标数据库即可实现一源对多目标的同步,性能开销较低。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一般计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
本领域技术人员还可以了解到本发明实施例列出的各种功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种关系型异构数据库数据同步的方法,其特征是,所述的方法具体包括:
获取用户预先配置的同步表文件、关键字信息表、语句调用表;
实时获取源数据库产生的归档日志文件;
对所述的归档日志文件进行分析,转化为标准结构化查询语言SQL语句;
实时获取源数据库产生的后续日志文件;
根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
2.根据权利要求1所述的方法,其特征是,所述的方法在实时获取源数据库产生的归档日志文件之后还包括:
获取所述的归档日志文件对应的归档表信息;
判断所述的归档表信息是否在所述的同步表文件中;
当判断为是时,执行对所述的归档日志文件进行分析,转化为标准SQL语句的步骤。
3.根据权利要求1或2所述的方法,其特征是,对所述的归档日志文件进行分析,转化为标准SQL语句具体包括:
从所述的关键字信息表中提取出关键字;
根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、数据操纵语言DML操作类型、DML事务号;
根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值;
根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
4.根据权利要求3所述的方法,其特征是,根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值具体包括:
对所述的数据块地址进行分解,得到数据文件号、数据块号;
根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名;
对所述的字段值进行分解,得到字段顺序号;
根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段;
根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的行唯一标识ROWID;
根据所述的表名、主键字段、ROWID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值;
根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。
5.根据权利要求4所述的方法,其特征是,根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库具体包括:
从所述的后续日志文件中提取出含顺序号SQN信息的日志文件;
根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的数据控制语言DCL操作;
当判断为是时,若所述的DCL操作执行的是回滚,则丢弃所述的标准SQL语句;
当判断为是时,若所述的DCL操作执行的是提交,则将所述的标准SQL语句传输至目标数据库。
6.根据权利要求1或5所述的方法,其特征是,所述的方法在将所述的标准SQL语句传输至目标数据库之后还包括:
所述的目标数据库执行所述的标准SQL语句;
所述的目标数据库执行提交操作;
所述的目标数据库判断所述的标准SQL语句是否执行成功;
当判断为否时,所述的目标数据库生成错误信息,并将所述的错误信息传输至所述的源数据库;
所述的源数据库根据所述的错误信息生成错误日志。
7.一种关系型异构数据库数据同步的系统,其特征是,所述的系统具体包括源数据库、目标数据库以及数据同步设备,其中,所述的数据同步设备具体包括:
预设信息获取装置,用于获取用户预先配置的同步表文件、关键字信息表、语句调用表;
归档日志文件获取装置,用于实时获取源数据库产生的归档日志文件;
分析装置,用于对所述的归档日志文件进行分析,转化为标准结构化查询语言SQL语句;
后续日志文件获取装置,用于实时获取源数据库产生的后续日志文件;
语句传输装置,用于根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
8.根据权利要求7所述的系统,其特征是,所述的数据同步设备还包括:
归档表信息获取装置,用于获取所述的归档日志文件对应的归档表信息;
判断装置,用于判断所述的归档表信息是否在所述的同步表文件中,当判断为是时,执行所述的分析装置。
9.根据权利要求7或8所述的系统,其特征是,所述的分析装置具体包括:
关键字提取模块,用于从所述的关键字信息表中提取出关键字;
检索模块,用于根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、数据操纵语言DML操作类型、DML事务号;
获取模块,用于根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值;
标准语句生成模块,用于根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
10.根据权利要求9所述的系统,其特征是,所述的获取模块具体包括:
数据块地址分解单元,用于对所述的数据块地址进行分解,得到数据文件号、数据块号;
表名获取单元,用于根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名;
字段值分解单元,用于对所述的字段值进行分解,得到字段顺序号;
主键字段获取单元,用于根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段;
ROWID获取单元,用于根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的行唯一标识ROWID;
主键字段值获取单元,用于根据所述的表名、主键字段、ROWID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值;
被修改字段获取单元,用于根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。
11.根据权利要求10所述的系统,其特征是,所述的语句传输装置具体包括:
日志文件提取模块,用于从所述的后续日志文件中提取出含顺序号SQN信息的日志文件;
判断模块,用于根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的DCL操作;
第一处理模块,用于当所述的判断模块判断为是时,若所述的DCL操作执行的是回滚,则丢弃所述的标准SQL语句;
第二处理模块,用于当所述的判断模块判断为是时,若所述的DCL操作执行的是提交,则将所述的标准SQL语句传输至目标数据库。
12.根据权利要求7或11所述的系统,其特征是:
所述的目标数据库还用于:执行所述的标准SQL语句,执行提交操作,并判断所述的标准SQL语句是否执行成功,当判断为否时,目标数据库生成错误信息,并将所述的错误信息传输至所述的源数据库;
所述的源数据库根据所述的错误信息生成错误日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410040174.0A CN103761318B (zh) | 2014-01-27 | 2014-01-27 | 一种关系型异构数据库数据同步的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410040174.0A CN103761318B (zh) | 2014-01-27 | 2014-01-27 | 一种关系型异构数据库数据同步的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103761318A true CN103761318A (zh) | 2014-04-30 |
CN103761318B CN103761318B (zh) | 2017-08-18 |
Family
ID=50528555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410040174.0A Active CN103761318B (zh) | 2014-01-27 | 2014-01-27 | 一种关系型异构数据库数据同步的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103761318B (zh) |
Cited By (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346479A (zh) * | 2014-11-26 | 2015-02-11 | 北京奇虎科技有限公司 | 一种数据库同步方法及装置 |
CN104361064A (zh) * | 2014-11-04 | 2015-02-18 | 中国银行股份有限公司 | 对数据文件的数据清洗方法和数据文件处理方法 |
CN105260486A (zh) * | 2015-11-23 | 2016-01-20 | 郑州悉知信息科技股份有限公司 | 一种数据处理方法、装置及系统 |
CN105320680A (zh) * | 2014-07-15 | 2016-02-10 | 中国移动通信集团公司 | 一种数据同步方法及装置 |
CN106354865A (zh) * | 2016-09-09 | 2017-01-25 | 北京奇虎科技有限公司 | 一种同步主从数据库的方法、装置和系统 |
WO2017084410A1 (zh) * | 2015-11-17 | 2017-05-26 | 中兴通讯股份有限公司 | 一种网管数据同步方法及装置 |
CN107590256A (zh) * | 2017-09-20 | 2018-01-16 | 北京九桥同步软件有限公司 | 异构数据库同步方法和装置 |
WO2018058983A1 (zh) * | 2016-09-28 | 2018-04-05 | 平安科技(深圳)有限公司 | 数据库容量计算方法、装置、服务器及存储设备 |
CN108241676A (zh) * | 2016-12-26 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 实现数据同步的方法及设备 |
CN108647112A (zh) * | 2018-03-16 | 2018-10-12 | 阿里巴巴集团控股有限公司 | 数据备份的方法、装置及分布式事务处理系统 |
CN108733671A (zh) * | 2017-04-14 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 数据历史归档的方法和装置 |
CN109376160A (zh) * | 2018-08-21 | 2019-02-22 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN109508245A (zh) * | 2017-09-15 | 2019-03-22 | 西安中兴新软件有限责任公司 | 一种实现异常分析的方法及终端 |
CN109829011A (zh) * | 2018-05-21 | 2019-05-31 | 四川中电启明星信息技术有限公司 | 一种分布式异构数据库的数据同步方法及装置 |
CN109885617A (zh) * | 2019-01-29 | 2019-06-14 | 中国工商银行股份有限公司 | 分布式异构数据库系统的数据同步方法及装置 |
CN109902094A (zh) * | 2019-01-24 | 2019-06-18 | 平安科技(深圳)有限公司 | 日志保存方法、装置及计算机可读存储介质 |
CN109933630A (zh) * | 2019-03-19 | 2019-06-25 | 武汉达梦数据库有限公司 | 数据库数据实时同步方法及设备 |
CN109960710A (zh) * | 2019-01-16 | 2019-07-02 | 平安科技(深圳)有限公司 | 数据库之间的数据同步方法和系统 |
CN110008209A (zh) * | 2018-12-07 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 数据库增强方法及装置 |
CN110019495A (zh) * | 2017-07-27 | 2019-07-16 | 广东蓝盾移动互联网信息科技有限公司 | 基于事务日志分析的单导系统中mysql数据库同步技术 |
CN110069489A (zh) * | 2017-10-17 | 2019-07-30 | 株式会社日立制作所 | 一种信息处理方法、装置、设备及计算机可读存储介质 |
CN110147411A (zh) * | 2019-05-20 | 2019-08-20 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN110196871A (zh) * | 2019-03-07 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据入库方法和系统 |
CN110321387A (zh) * | 2019-07-10 | 2019-10-11 | 中国联合网络通信集团有限公司 | 数据同步方法、设备及终端设备 |
CN110502585A (zh) * | 2019-08-30 | 2019-11-26 | 山东健康医疗大数据有限公司 | 一种可配置的MySql数据库间数据同步方法 |
CN110515913A (zh) * | 2019-08-02 | 2019-11-29 | 北京互金新融科技有限公司 | 日志处理方法及装置 |
CN110543513A (zh) * | 2018-05-29 | 2019-12-06 | 中兴通讯股份有限公司 | 分布式数据库增量数据同步方法、设备及存储介质 |
CN110633171A (zh) * | 2019-08-26 | 2019-12-31 | 重庆卡歌科技有限公司 | 基于JAVA hibernate框架的日志备份异地还原系统及方法 |
CN110837535A (zh) * | 2018-08-16 | 2020-02-25 | 中国移动通信集团江西有限公司 | 数据同步的方法、装置、设备和介质 |
CN110928892A (zh) * | 2019-10-15 | 2020-03-27 | 中国直升机设计研究所 | 一种数据信息扫描同步系统及方法 |
CN111352766A (zh) * | 2018-12-21 | 2020-06-30 | 中国移动通信集团山东有限公司 | 一种数据库的双活实现方法及装置 |
CN111414358A (zh) * | 2019-12-30 | 2020-07-14 | 杭州美创科技有限公司 | 应用于关系型数据库数据装载的方法 |
CN111444278A (zh) * | 2020-04-01 | 2020-07-24 | Oppo(重庆)智能科技有限公司 | 数据同步方法、装置及中转服务器 |
CN111597257A (zh) * | 2020-05-09 | 2020-08-28 | 远光软件股份有限公司 | 数据库的同步方法、装置、存储介质及终端 |
CN111767340A (zh) * | 2020-05-29 | 2020-10-13 | 中国工商银行股份有限公司 | 数据处理方法、装置、电子设备和介质 |
CN112434059A (zh) * | 2021-01-26 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112612830A (zh) * | 2020-12-03 | 2021-04-06 | 海光信息技术股份有限公司 | 一种压缩数据批量导出方法、系统及电子设备 |
CN112632183A (zh) * | 2020-12-11 | 2021-04-09 | 广东电力通信科技有限公司 | 一种基于电网网络分区数据表准实时同步方法及系统 |
CN112988897A (zh) * | 2021-03-30 | 2021-06-18 | 工银科技有限公司 | 系统升级场景下的数据双向同步方法及装置 |
CN113254534A (zh) * | 2021-06-04 | 2021-08-13 | 四川省明厚天信息技术股份有限公司 | 数据同步方法、装置及计算机存储介质 |
CN113590695A (zh) * | 2021-05-28 | 2021-11-02 | 浪潮电子信息产业股份有限公司 | 一种基于触发器和主键的数据传输方法、系统和终端 |
CN114647651A (zh) * | 2022-05-19 | 2022-06-21 | 同日云联信息技术(苏州)有限公司 | 异构数据库同步方法及系统 |
CN114706850A (zh) * | 2022-04-02 | 2022-07-05 | 国电南京自动化股份有限公司 | 一种分布式异构关系型数据库入库方法 |
CN117033519A (zh) * | 2023-09-28 | 2023-11-10 | 北京谷器数据科技有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN114706850B (zh) * | 2022-04-02 | 2024-05-31 | 国电南京自动化股份有限公司 | 一种分布式异构关系型数据库入库方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101627B (zh) * | 2018-08-14 | 2022-03-22 | 交通银行股份有限公司 | 异构数据库同步方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041679B1 (en) * | 2008-06-04 | 2011-10-18 | Symantec Operating Corporation | Synthetic differential backups creation for a database using binary log conversion |
US8510270B2 (en) * | 2010-07-27 | 2013-08-13 | Oracle International Corporation | MYSQL database heterogeneous log based replication |
CN102262662A (zh) * | 2011-07-22 | 2011-11-30 | 浪潮(北京)电子信息产业有限公司 | 实现异构平台下数据库数据迁移的系统、装置及方法 |
-
2014
- 2014-01-27 CN CN201410040174.0A patent/CN103761318B/zh active Active
Cited By (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320680A (zh) * | 2014-07-15 | 2016-02-10 | 中国移动通信集团公司 | 一种数据同步方法及装置 |
CN104361064A (zh) * | 2014-11-04 | 2015-02-18 | 中国银行股份有限公司 | 对数据文件的数据清洗方法和数据文件处理方法 |
CN104346479A (zh) * | 2014-11-26 | 2015-02-11 | 北京奇虎科技有限公司 | 一种数据库同步方法及装置 |
WO2017084410A1 (zh) * | 2015-11-17 | 2017-05-26 | 中兴通讯股份有限公司 | 一种网管数据同步方法及装置 |
CN105260486A (zh) * | 2015-11-23 | 2016-01-20 | 郑州悉知信息科技股份有限公司 | 一种数据处理方法、装置及系统 |
CN106354865A (zh) * | 2016-09-09 | 2017-01-25 | 北京奇虎科技有限公司 | 一种同步主从数据库的方法、装置和系统 |
CN106354865B (zh) * | 2016-09-09 | 2020-05-15 | 北京奇虎科技有限公司 | 一种同步主从数据库的方法、装置和系统 |
WO2018058983A1 (zh) * | 2016-09-28 | 2018-04-05 | 平安科技(深圳)有限公司 | 数据库容量计算方法、装置、服务器及存储设备 |
CN108241676B (zh) * | 2016-12-26 | 2022-09-02 | 阿里云计算有限公司 | 实现数据同步的方法及设备 |
CN108241676A (zh) * | 2016-12-26 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 实现数据同步的方法及设备 |
CN108733671B (zh) * | 2017-04-14 | 2020-11-03 | 北京京东尚科信息技术有限公司 | 数据历史归档的方法和装置 |
CN108733671A (zh) * | 2017-04-14 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 数据历史归档的方法和装置 |
CN110019495A (zh) * | 2017-07-27 | 2019-07-16 | 广东蓝盾移动互联网信息科技有限公司 | 基于事务日志分析的单导系统中mysql数据库同步技术 |
CN109508245A (zh) * | 2017-09-15 | 2019-03-22 | 西安中兴新软件有限责任公司 | 一种实现异常分析的方法及终端 |
CN107590256A (zh) * | 2017-09-20 | 2018-01-16 | 北京九桥同步软件有限公司 | 异构数据库同步方法和装置 |
CN110069489B (zh) * | 2017-10-17 | 2023-01-31 | 株式会社日立制作所 | 一种信息处理方法、装置、设备及计算机可读存储介质 |
CN110069489A (zh) * | 2017-10-17 | 2019-07-30 | 株式会社日立制作所 | 一种信息处理方法、装置、设备及计算机可读存储介质 |
CN108647112B (zh) * | 2018-03-16 | 2022-03-01 | 创新先进技术有限公司 | 数据备份的方法、装置及分布式事务处理系统 |
CN108647112A (zh) * | 2018-03-16 | 2018-10-12 | 阿里巴巴集团控股有限公司 | 数据备份的方法、装置及分布式事务处理系统 |
CN109829011B (zh) * | 2018-05-21 | 2024-01-30 | 四川中电启明星信息技术有限公司 | 一种分布式异构数据库的数据同步方法及装置 |
CN109829011A (zh) * | 2018-05-21 | 2019-05-31 | 四川中电启明星信息技术有限公司 | 一种分布式异构数据库的数据同步方法及装置 |
CN110543513B (zh) * | 2018-05-29 | 2024-03-15 | 金篆信科有限责任公司 | 分布式数据库增量数据同步方法、设备及存储介质 |
CN110543513A (zh) * | 2018-05-29 | 2019-12-06 | 中兴通讯股份有限公司 | 分布式数据库增量数据同步方法、设备及存储介质 |
CN110837535A (zh) * | 2018-08-16 | 2020-02-25 | 中国移动通信集团江西有限公司 | 数据同步的方法、装置、设备和介质 |
CN109376160B (zh) * | 2018-08-21 | 2024-03-29 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN109376160A (zh) * | 2018-08-21 | 2019-02-22 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN110008209A (zh) * | 2018-12-07 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 数据库增强方法及装置 |
CN110008209B (zh) * | 2018-12-07 | 2024-04-19 | 创新先进技术有限公司 | 数据库增强方法及装置 |
CN111352766A (zh) * | 2018-12-21 | 2020-06-30 | 中国移动通信集团山东有限公司 | 一种数据库的双活实现方法及装置 |
CN109960710B (zh) * | 2019-01-16 | 2023-04-11 | 平安科技(深圳)有限公司 | 数据库之间的数据同步方法和系统 |
CN109960710A (zh) * | 2019-01-16 | 2019-07-02 | 平安科技(深圳)有限公司 | 数据库之间的数据同步方法和系统 |
CN109902094B (zh) * | 2019-01-24 | 2023-11-03 | 平安科技(深圳)有限公司 | 日志保存方法、装置及计算机可读存储介质 |
CN109902094A (zh) * | 2019-01-24 | 2019-06-18 | 平安科技(深圳)有限公司 | 日志保存方法、装置及计算机可读存储介质 |
CN109885617A (zh) * | 2019-01-29 | 2019-06-14 | 中国工商银行股份有限公司 | 分布式异构数据库系统的数据同步方法及装置 |
CN110196871A (zh) * | 2019-03-07 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据入库方法和系统 |
CN110196871B (zh) * | 2019-03-07 | 2024-05-17 | 腾讯科技(深圳)有限公司 | 数据入库方法和系统 |
CN109933630A (zh) * | 2019-03-19 | 2019-06-25 | 武汉达梦数据库有限公司 | 数据库数据实时同步方法及设备 |
CN109933630B (zh) * | 2019-03-19 | 2021-11-23 | 武汉达梦数据库股份有限公司 | 数据库数据实时同步方法及设备 |
CN110147411A (zh) * | 2019-05-20 | 2019-08-20 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN110147411B (zh) * | 2019-05-20 | 2024-05-28 | 平安科技(深圳)有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN110321387A (zh) * | 2019-07-10 | 2019-10-11 | 中国联合网络通信集团有限公司 | 数据同步方法、设备及终端设备 |
CN110321387B (zh) * | 2019-07-10 | 2022-02-01 | 中国联合网络通信集团有限公司 | 数据同步方法、设备及终端设备 |
CN110515913B (zh) * | 2019-08-02 | 2022-08-09 | 北京互金新融科技有限公司 | 日志处理方法及装置 |
CN110515913A (zh) * | 2019-08-02 | 2019-11-29 | 北京互金新融科技有限公司 | 日志处理方法及装置 |
CN110633171A (zh) * | 2019-08-26 | 2019-12-31 | 重庆卡歌科技有限公司 | 基于JAVA hibernate框架的日志备份异地还原系统及方法 |
CN110502585A (zh) * | 2019-08-30 | 2019-11-26 | 山东健康医疗大数据有限公司 | 一种可配置的MySql数据库间数据同步方法 |
CN110928892A (zh) * | 2019-10-15 | 2020-03-27 | 中国直升机设计研究所 | 一种数据信息扫描同步系统及方法 |
CN110928892B (zh) * | 2019-10-15 | 2023-06-27 | 中国直升机设计研究所 | 一种数据信息扫描同步系统及方法 |
CN111414358A (zh) * | 2019-12-30 | 2020-07-14 | 杭州美创科技有限公司 | 应用于关系型数据库数据装载的方法 |
CN111444278A (zh) * | 2020-04-01 | 2020-07-24 | Oppo(重庆)智能科技有限公司 | 数据同步方法、装置及中转服务器 |
CN111444278B (zh) * | 2020-04-01 | 2023-08-29 | Oppo(重庆)智能科技有限公司 | 数据同步方法、装置及中转服务器 |
CN111597257A (zh) * | 2020-05-09 | 2020-08-28 | 远光软件股份有限公司 | 数据库的同步方法、装置、存储介质及终端 |
CN111767340B (zh) * | 2020-05-29 | 2024-01-05 | 中国工商银行股份有限公司 | 数据处理方法、装置、电子设备和介质 |
CN111767340A (zh) * | 2020-05-29 | 2020-10-13 | 中国工商银行股份有限公司 | 数据处理方法、装置、电子设备和介质 |
CN112612830A (zh) * | 2020-12-03 | 2021-04-06 | 海光信息技术股份有限公司 | 一种压缩数据批量导出方法、系统及电子设备 |
CN112632183B (zh) * | 2020-12-11 | 2023-07-11 | 广东电力通信科技有限公司 | 一种基于电网网络分区数据表准实时同步方法及系统 |
CN112632183A (zh) * | 2020-12-11 | 2021-04-09 | 广东电力通信科技有限公司 | 一种基于电网网络分区数据表准实时同步方法及系统 |
CN112434059B (zh) * | 2021-01-26 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112434059A (zh) * | 2021-01-26 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112988897A (zh) * | 2021-03-30 | 2021-06-18 | 工银科技有限公司 | 系统升级场景下的数据双向同步方法及装置 |
CN113590695B (zh) * | 2021-05-28 | 2024-02-23 | 浪潮电子信息产业股份有限公司 | 一种基于触发器和主键的数据传输方法、系统和终端 |
CN113590695A (zh) * | 2021-05-28 | 2021-11-02 | 浪潮电子信息产业股份有限公司 | 一种基于触发器和主键的数据传输方法、系统和终端 |
CN113254534A (zh) * | 2021-06-04 | 2021-08-13 | 四川省明厚天信息技术股份有限公司 | 数据同步方法、装置及计算机存储介质 |
CN114706850A (zh) * | 2022-04-02 | 2022-07-05 | 国电南京自动化股份有限公司 | 一种分布式异构关系型数据库入库方法 |
CN114706850B (zh) * | 2022-04-02 | 2024-05-31 | 国电南京自动化股份有限公司 | 一种分布式异构关系型数据库入库方法 |
CN114647651A (zh) * | 2022-05-19 | 2022-06-21 | 同日云联信息技术(苏州)有限公司 | 异构数据库同步方法及系统 |
CN117033519A (zh) * | 2023-09-28 | 2023-11-10 | 北京谷器数据科技有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103761318B (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103761318A (zh) | 一种关系型异构数据库数据同步的方法及系统 | |
CN101499069B (zh) | 内存数据库文件的更新方法及更新装置 | |
US8280840B2 (en) | Data integration apparatus, data integration method, and computer product | |
EP2608074A2 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN106407360B (zh) | 一种数据的处理方法及装置 | |
CN103678556A (zh) | 列式数据库处理的方法和处理设备 | |
CN111767303A (zh) | 一种数据查询方法、装置、服务器及可读存储介质 | |
WO2020135613A1 (zh) | 数据查询处理方法、装置及系统、计算机可读存储介质 | |
CN103778133A (zh) | 一种数据库对象的变更方法及装置 | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN107301214A (zh) | 在hive中数据迁移方法、装置及终端设备 | |
CN111858760B (zh) | 一种异构数据库的数据处理方法及装置 | |
CN105975489A (zh) | 一种基于元数据的在线sql代码补全方法 | |
KR20200094074A (ko) | 인덱스 관리 방법, 장치, 기기 및 저장 매체 | |
CN102508834A (zh) | 基于消息的大型事务应用装置和方法 | |
CN114691704A (zh) | 一种基于MySQL binlog的元数据同步方法 | |
Van Hieu et al. | MapReduce join strategies for key-value storage | |
CN102346765A (zh) | 一种查询内存数据的方法及装置 | |
CN112131214A (zh) | 数据写入、数据查询的方法、系统、设备和存储介质 | |
US20160179857A1 (en) | Database joins using uncertain criteria | |
WO2023197865A1 (zh) | 一种信息存储方法及装置 | |
CN107291938A (zh) | 订单查询系统及方法 | |
CN109491988B (zh) | 一种支持全量更新的数据实时关联方法 | |
CN111984745A (zh) | 数据库字段动态扩展方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |