一种基于日志的异构多源数据库同步方法.pdf

上传人:r5 文档编号:975978 上传时间:2018-03-22 格式:PDF 页数:8 大小:353.30KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110287814.4

申请日:

2011.09.26

公开号:

CN102346775A

公开日:

2012.02.08

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/30申请公布日:20120208|||实质审查的生效IPC(主分类):G06F 17/30申请日:20110926|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

苏州博远容天信息科技有限公司

发明人:

董阳; 董斌; 李德逸; 王伟信; 孙学磊

地址:

215000 江苏省苏州市高新区科灵路2号苏高新软件园4幢4层

优先权:

专利代理机构:

南京经纬专利商标代理有限公司 32200

代理人:

楼高潮

PDF下载: PDF下载
内容摘要

本发明公开了一种基于日志的异构多源数据库同步方法,包括以下四个步骤:1)源数据读取,在源数据库端根据源数据库的日志文件,提取源数据库的操作,反向生成数据操作的SQL执行脚本;2)SQL脚本传递;3)数据冲突处理;4)目标数据写入。本发明用于实现异构的多个源数据库和目标数据库之间的数据同步,能够跨越数据库异构的障碍,并且对源数据库没有任何性能和结构方面的影响。

权利要求书

1: 一种基于日志的异构多源数据库同步方法, 其特征在于, 包括以下步骤 : 步骤 1) 源数据读取, 在源数据库端根据源数据库的日志文件, 提取源数据库的操作, 反 向生成数据操作的 SQL 执行脚本 ; 步骤 2) SQL 脚本传递 ; 步骤 3) 数据冲突处理 ; 步骤 4) 目标数据写入。
2: 根据权利要求 1 所述的基于日志的异构多源数据库同步方法, 其特征在于, 所述步 骤 1 的具体步骤如下 : 步骤 1.1) 在源数据库端通过源数据库的内置系统函数 ::fn_dblog 读取 SQL 的日志文 件, 将事先作为参数配置好的需要同步数据的表名称作为查询条件得到要同步表的所有日 志, 并将 “LOP_INSERT_ROWS” 、 “LOP_DELETE_ROWS” 、 “LOP_UPDATE_ROWS” 三个参数作为条件 筛选对同步表进行新增、 删除、 修改进行操作的语句, 最后得到二进制的行数据 ; 步骤 1.2) 通过 DBCC log ( {dbid ¦dbname}, [, type={0 ¦1 }] 对二进制的行数据进 行分析 : 先取定长字段, 根据表结构指定长度, 忽略不定长字段和其他不支持以及不需要考 虑的字段, 循环变长字段列表读取数据, 就此得到行数据的对应格式, 字段类型、 字段名称、 占用列数、 变长和列对应字段的内容, 然后对该内容进行拼接, 得到相应增加、 删除、 修改的 SQL 执行脚本 步骤 1.3) 根据作为参数配置好的需要同步数据的表名称, 从二进制的行数据中获取该 表的表结构, 成为 SQL 附属脚本。
3: 根据权利要求 1 所述的基于日志的异构多源数据库同步方法, 其特征在于, 所述步 骤 2 的具体步骤如下 : 步骤 2.1) SQL 执行脚本生成, 传递完成信号, 目的数据库端从源数据库端获取 SQL 执行 脚本 ; 步骤 2.2) 对所述 SQL 执行脚本标注获取的源数据库的数据库类型、 版本、 IP 地址、 数 据库名称及将 SQL 附属脚本也作为标记 ; 步骤 2.3) 将所述 SQL 执行脚本及其附属标记存入临时表。
4: 根据权利要求 1 所述的基于日志的异构多源数据库同步方法, 其特征在于, 所述步 骤 3 的具体步骤如下 : 读取临时表数据, 将源数据库 SQL 执行脚本, 根据 SQL 附属脚本, 按目标数据库的数据 类型进行转换, 转换表结构的字段类型, 转换列对应字段的数据内容的存储格式, 根据以上 转换将 SQL 执行脚本按对应的方式进行相应的转换, 生成可在目标数据库顺利执行的 SQL 语句, 用目标数据库的 SQL 分析命令进行语句检查, 检查通过, 存入转换后的 SQL 执行脚本, 进入下一步, 否则, 重新转换 SQL 执行脚本, 直到读取临时表结束 ; 将临时表中同一目标表的数据按在源数据库中执行时间进行排序, 删除不同的源数据 库中重复的 SQL 执行脚本, 按照预设置的处理逻辑对 SQL 执行脚本进行优化, 然后按时间重 新进行序列处理。
5: 根据权利要求 4 所述的基于日志的异构多源数据库同步方法, 其特征在于, 所述优 化的方法如下 : 1) 将多条数据插入语句合并为一条数据批量插入语句 ; 2 2) 将多条数据删除语句合并为一条数据删除语句 ; 3) 将多条对同一主键的行数据修改语句合并为一条数据修改语句 ; 4) 在数据批量插入语句后增加 nologging 选项, 使其执行时, 提高执行速度。
6: 根据权利要求 1 或 2 或 3 或 4 或 5 所述的基于日志的异构多源数据库同步方法, 其 特征在于, 所述步骤 4 的具体步骤如下 : 将周期内的 SQL 脚本按标注的序号, 在目的数据库端逐一执行, 单条 SQL 脚本执行时, 不进行数据库提交, 全部执行完成后, 统一提交。

说明书


一种基于日志的异构多源数据库同步方法

     技术领域
     本发明属于数据库同步领域, 具体涉及一种基于日志的异构多源数据库同步方法。
     背景技术 目前在数据库同步领域, 同类数据库之间的数据同步有着比较完善的方法, 如 SQL Server 的数据复制、 发布。
     异构数据库之间的数据同步也有着较多的方式, 如异构数据库数据的统合中间 件、 异构数据库基于 SQL 的数据同步等相关方法, 但都不太完善, 存在着一些问题。
     具体问题包括 : 1、 对源数据库有读取数据操作, 影响了源数据库的性能 ; 2、 需要在目标数据库建立中间表, 影响了目标数据库的完整性 ; 3、 只能对单个异构源数据库和目标数据库之间同步, 不能对异构的多源数据库与单一 目标数据库同步。
     而数据同步是不能对源数据库有任何性能和结构有任何影响的, 否则会对源数据 库的管理造成极大的困扰。
     而异构多源数据库的同步是目前信息化集成、 解决信息孤岛等集成化项目中迫切 需要的一种数据库同步接口方式。
     在数据库同步领域, 一直在寻求相应解决的方法, 是当前重要的研发课题之一。
     发明内容 为克服现有技术中不足, 本发明旨在提供一种基于日志的异构多源数据库同步方 法, 该方法以使得数据能够在多源数据库与目标数据库之间同步, 能够跨越数据库异构的 障碍, 并且对源数据库没有任何性能和结构方面的影响。
     为实现上述技术目的, 为达到上述技术效果, 本发明通过以下具体的技术方案实 现: 一种基于日志的异构多源数据库同步发放, 包括以下步骤 : 步骤 1) 源数据读取, 在源数据库端根据源数据库的日志文件, 提取源数据库的操作, 反 向生成数据操作的 SQL 执行脚本。
     在源数据库端通过源数据库的内置系统函数 ::fn_dblog 读取 SQL 的日志文件, 将 事先作为参数配置好的需要同步数据的表名称作为查询条件得到要同步表的所有日志, 并 将 “LOP_INSERT_ROWS” 、 “LOP_DELETE_ROWS” 和 “LOP_UPDATE_ROWS” 三个参数作为条件筛选
     对同步表进行新增、 删除、 修改进行操作的语句, 最后得到二进制的行数据, 如 “01220E0202 5200E7F2C01F29A03004500E20200” 。
     通过 DBCC log ( {dbid ¦dbname}, [, type={0 ¦1 }] 对二进制的行数据进行分 析, 先取定长字段, 根据表结构指定长度, 忽略不定长字段和其他不支持以及不需要考虑的 字段, 循环变长字段列表读取数据, 就此得到行数据的对应格式, 字段类型、 字段名称、 占用 列数、 变长和列对应字段的内容, 对该内容进行拼接, 得到相应增加、 删除、 修改的 SQL 执行 脚本。
     然后根据作为参数配置好的需要同步数据的表名称, 从二进制的行数据中获取该 表的表结构, 成为 SQL 附属脚本。
     步骤 2 : SQL 脚本传递 ; SQL 执行脚本生成, 传递完成信号, 目的数据库端从源数据库端获取 SQL 执行脚本 ; 然 后对该脚本标注获取的源数据库的数据库类型、 版本、 IP 地址、 数据库名称、 并将 SQL 附属 脚本也作为标记, 最后将该 SQL 执行脚本及其附属标记存入临时表。
     源数据库端与目标数据库端 SQL 脚本传递的间隔时间, 是由根据业务需要及网络 现状, 事先配置好的传输间隔参数 SENDTIME 来确定。
     步骤 3 : 数据冲突处理 ; 源数据库与目标数据库数据类型不同, SQL 执行脚本不能通用, 需要转换格式, 进行处 理; 多源数据库同时对目标数据库的目标表同步数据, 会有数据冲突, 需要进行序列处理。
     读取临时表数据, 将源数据库 SQL 执行脚本, 根据 SQL 附属脚本, 按目标数据库的 数据类型进行转换, 转换表结构的字段类型, 转换列对应字段的数据内容的存储格式, 根据 以上转换将 SQL 执行脚本按对应的方式进行相应的转换, 生成可在目标数据库顺利执行的 SQL 语句, 用目标数据库的 SQL 分析命令进行语句检查, 检查通过, 存入转换后的 SQL 执行脚 本, 进入下一步, 否则, 重新转换 SQL 执行脚本, 直到读取临时表结束 ; 将临时表中同一目标表的数据按在源数据库中执行时间进行排序, 删除不同的源数据 库中重复的 SQL 执行脚本, 按照预设置的处理逻辑对 SQL 执行脚本进行优化。
     优化方式, 将多条数据插入语句合并为一条数据批量插入语句 ; 将多条数据删除 语句合并为一条数据删除语句 ; 将多条对同一主键的行数据修改语句合并为一条数据修改 语句 ; 在数据批量插入语句后增加 nologging 选项, 使其执行时, 提高执行速度。
     然后按时间重新进行序列处理。
     步骤4 : 目标数据写入。
     将周期内的 SQL 脚本按标注的序号, 在目的数据库端逐一执行, 单条 SQL 脚本执行 时, 不进行数据库提交, 全部执行完成后, 统一提交。
     与现有技术相比, 本发明具有以下有益效果在于 : 1、 本发明的基于日志的异构多源数据库同步方法, 能够对源数据库没有任何的数据读 取操作, 对源数据库的性能没有任何影响 ; 2、 本发明的基于日志的异构多源数据库同步方法, 不会影响目标数据库的完整性 ; 3、 本发明的基于日志的异构多源数据库同步方法, 能够对异构的多个源数据库与单一 目标数据库进行数据同步, 能够适应于大型的数据化集成项目。
     4、 本发明的基于日志的异构多源数据库同步方法, 通过在数据冲突处理中的 SQL执行脚本优化, 能够极大的降低了目标数据库的 SQL 脚本的执行时间, 增强了目标数据库 的同步响应速度, 适用于百万级的大批量数据同步。
     上述说明仅是本发明技术方案的概述, 为了能够更清楚了解本发明的技术手段, 并可依照说明书的内容予以实施, 以下以本发明的较佳实施例并配合附图详细说明如后。 本发明的具体实施方式由以下实施例及其附图详细给出。
     附图说明 此处所说明的附图用来提供对本发明的进一步理解, 构成本申请的一部分, 本发 明的示意性实施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 : 图 1 为本发明的一种基于日志的异构多源数据库同步方法的流程示意图。
     具体实施方式
     下面将参考附图并结合实施例, 来详细说明本发明。
     参见图 1 所示, 一种基于日志的异构多源数据库同步方法, 其特征在于, 包括以下步骤 : 步骤 1) 源数据读取, 在源数据库端根据源数据库的日志文件, 提取源数据库的操作, 反 向生成数据操作的 SQL 执行脚本 ; 步骤 2) SQL 脚本传递 ; 步骤 3) 数据冲突处理 ; 步骤 4) 目标数据写入。
     进一步的, 所述步骤 1 的具体步骤如下 : 步骤 1.1) 在源数据库端通过源数据库的内置系统函数 ::fn_dblog 读取 SQL 的日志文 件, 将事先作为参数配置好的需要同步数据的表名称作为查询条件得到要同步表的所有日 志, 并将 “LOP_INSERT_ROWS” 、 “LOP_DELETE_ROWS” 、 “LOP_UPDATE_ROWS” 三个参数作为条件 筛选对同步表进行新增、 删除、 修改进行操作的语句, 最后得到二进制的行数据 ; 步骤 1.2) 通过 DBCC log ( {dbid ¦dbname}, [, type={0 ¦1 }] 对二进制的行数据进 行分析 : 先取定长字段, 根据表结构指定长度, 忽略不定长字段和其他不支持以及不需要考 虑的字段, 循环变长字段列表读取数据, 就此得到行数据的对应格式, 字段类型、 字段名称、 占用列数、 变长和列对应字段的内容, 然后对该内容进行拼接, 得到相应增加、 删除、 修改的 SQL 执行脚本 步骤 1.3) 根据作为参数配置好的需要同步数据的表名称, 从二进制的行数据中获取该 表的表结构, 成为 SQL 附属脚本。
     进一步的, 所述步骤 2 的具体步骤如下 : 步骤 2.1) SQL 执行脚本生成, 传递完成信号, 目的数据库端从源数据库端获取 SQL 执行 脚本 ; 步骤 2.2) 对所述 SQL 执行脚本标注获取的源数据库的数据库类型、 版本、 IP 地址、 数 据库名称及将 SQL 附属脚本也作为标记 ;步骤 2.3) 将所述 SQL 执行脚本及其附属标记存入临时表。
     进一步的, 所述步骤 3 的具体步骤如下 : 读取临时表数据, 将源数据库 SQL 执行脚本, 根据 SQL 附属脚本, 按目标数据库的数据 类型进行转换, 转换表结构的字段类型, 转换列对应字段的数据内容的存储格式, 根据以上 转换将 SQL 执行脚本按对应的方式进行相应的转换, 生成可在目标数据库顺利执行的 SQL 语句, 用目标数据库的 SQL 分析命令进行语句检查, 检查通过, 存入转换后的 SQL 执行脚本, 进入下一步, 否则, 重新转换 SQL 执行脚本, 直到读取临时表结束 ; 将临时表中同一目标表的数据按在源数据库中执行时间进行排序, 删除不同的源数据 库中重复的 SQL 执行脚本, 按照预设置的处理逻辑对 SQL 执行脚本进行优化, 然后按时间重 新进行序列处理。
     进一步的, 所述优化的方法如下 : 1) 将多条数据插入语句合并为一条数据批量插入语句 ; 2) 将多条数据删除语句合并为一条数据删除语句 ; 3) 将多条对同一主键的行数据修改语句合并为一条数据修改语句 ; 4) 在数据批量插入语句后增加 nologging 选项, 使其执行时, 提高执行速度。 进一步的, 所述步骤 4 的具体步骤如下 : 将周期内的 SQL 脚本按标注的序号, 在目的数据库端逐一执行, 单条 SQL 脚本执行时, 不进行数据库提交, 全部执行完成后, 统一提交。
     本发明实现了数据在多源异构数据库之间进行同步的及时性及高效性, 在技术上 具有突出的实时性特点和显著的进步。
     以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。
    

一种基于日志的异构多源数据库同步方法.pdf_第1页
第1页 / 共8页
一种基于日志的异构多源数据库同步方法.pdf_第2页
第2页 / 共8页
一种基于日志的异构多源数据库同步方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种基于日志的异构多源数据库同步方法.pdf》由会员分享,可在线阅读,更多相关《一种基于日志的异构多源数据库同步方法.pdf(8页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102346775A43申请公布日20120208CN102346775ACN102346775A21申请号201110287814422申请日20110926G06F17/3020060171申请人苏州博远容天信息科技有限公司地址215000江苏省苏州市高新区科灵路2号苏高新软件园4幢4层72发明人董阳董斌李德逸王伟信孙学磊74专利代理机构南京经纬专利商标代理有限公司32200代理人楼高潮54发明名称一种基于日志的异构多源数据库同步方法57摘要本发明公开了一种基于日志的异构多源数据库同步方法,包括以下四个步骤1)源数据读取,在源数据库端根据源数据库的日志文件,提取源数据库的。

2、操作,反向生成数据操作的SQL执行脚本;2)SQL脚本传递;3)数据冲突处理;4)目标数据写入。本发明用于实现异构的多个源数据库和目标数据库之间的数据同步,能够跨越数据库异构的障碍,并且对源数据库没有任何性能和结构方面的影响。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书4页附图1页CN102346795A1/2页21一种基于日志的异构多源数据库同步方法,其特征在于,包括以下步骤步骤1)源数据读取,在源数据库端根据源数据库的日志文件,提取源数据库的操作,反向生成数据操作的SQL执行脚本;步骤2)SQL脚本传递;步骤3)数据冲突处理;步骤4)目标数据写入。2根。

3、据权利要求1所述的基于日志的异构多源数据库同步方法,其特征在于,所述步骤1的具体步骤如下步骤11)在源数据库端通过源数据库的内置系统函数FN_DBLOG读取SQL的日志文件,将事先作为参数配置好的需要同步数据的表名称作为查询条件得到要同步表的所有日志,并将“LOP_INSERT_ROWS”、“LOP_DELETE_ROWS”、“LOP_UPDATE_ROWS”三个参数作为条件筛选对同步表进行新增、删除、修改进行操作的语句,最后得到二进制的行数据;步骤12)通过DBCCLOGDBIDDBNAME,TYPE01对二进制的行数据进行分析先取定长字段,根据表结构指定长度,忽略不定长字段和其他不支持以及。

4、不需要考虑的字段,循环变长字段列表读取数据,就此得到行数据的对应格式,字段类型、字段名称、占用列数、变长和列对应字段的内容,然后对该内容进行拼接,得到相应增加、删除、修改的SQL执行脚本步骤13)根据作为参数配置好的需要同步数据的表名称,从二进制的行数据中获取该表的表结构,成为SQL附属脚本。3根据权利要求1所述的基于日志的异构多源数据库同步方法,其特征在于,所述步骤2的具体步骤如下步骤21)SQL执行脚本生成,传递完成信号,目的数据库端从源数据库端获取SQL执行脚本;步骤22)对所述SQL执行脚本标注获取的源数据库的数据库类型、版本、IP地址、数据库名称及将SQL附属脚本也作为标记;步骤23。

5、)将所述SQL执行脚本及其附属标记存入临时表。4根据权利要求1所述的基于日志的异构多源数据库同步方法,其特征在于,所述步骤3的具体步骤如下读取临时表数据,将源数据库SQL执行脚本,根据SQL附属脚本,按目标数据库的数据类型进行转换,转换表结构的字段类型,转换列对应字段的数据内容的存储格式,根据以上转换将SQL执行脚本按对应的方式进行相应的转换,生成可在目标数据库顺利执行的SQL语句,用目标数据库的SQL分析命令进行语句检查,检查通过,存入转换后的SQL执行脚本,进入下一步,否则,重新转换SQL执行脚本,直到读取临时表结束;将临时表中同一目标表的数据按在源数据库中执行时间进行排序,删除不同的源数。

6、据库中重复的SQL执行脚本,按照预设置的处理逻辑对SQL执行脚本进行优化,然后按时间重新进行序列处理。5根据权利要求4所述的基于日志的异构多源数据库同步方法,其特征在于,所述优化的方法如下1)将多条数据插入语句合并为一条数据批量插入语句;权利要求书CN102346775ACN102346795A2/2页32)将多条数据删除语句合并为一条数据删除语句;3)将多条对同一主键的行数据修改语句合并为一条数据修改语句;4)在数据批量插入语句后增加NOLOGGING选项,使其执行时,提高执行速度。6根据权利要求1或2或3或4或5所述的基于日志的异构多源数据库同步方法,其特征在于,所述步骤4的具体步骤如下将。

7、周期内的SQL脚本按标注的序号,在目的数据库端逐一执行,单条SQL脚本执行时,不进行数据库提交,全部执行完成后,统一提交。权利要求书CN102346775ACN102346795A1/4页4一种基于日志的异构多源数据库同步方法0001技术领域0002本发明属于数据库同步领域,具体涉及一种基于日志的异构多源数据库同步方法。0003背景技术0004目前在数据库同步领域,同类数据库之间的数据同步有着比较完善的方法,如SQLSERVER的数据复制、发布。0005异构数据库之间的数据同步也有着较多的方式,如异构数据库数据的统合中间件、异构数据库基于SQL的数据同步等相关方法,但都不太完善,存在着一些问题。

8、。0006具体问题包括1、对源数据库有读取数据操作,影响了源数据库的性能;2、需要在目标数据库建立中间表,影响了目标数据库的完整性;3、只能对单个异构源数据库和目标数据库之间同步,不能对异构的多源数据库与单一目标数据库同步。0007而数据同步是不能对源数据库有任何性能和结构有任何影响的,否则会对源数据库的管理造成极大的困扰。0008而异构多源数据库的同步是目前信息化集成、解决信息孤岛等集成化项目中迫切需要的一种数据库同步接口方式。0009在数据库同步领域,一直在寻求相应解决的方法,是当前重要的研发课题之一。0010发明内容0011为克服现有技术中不足,本发明旨在提供一种基于日志的异构多源数据库。

9、同步方法,该方法以使得数据能够在多源数据库与目标数据库之间同步,能够跨越数据库异构的障碍,并且对源数据库没有任何性能和结构方面的影响。0012为实现上述技术目的,为达到上述技术效果,本发明通过以下具体的技术方案实现一种基于日志的异构多源数据库同步发放,包括以下步骤步骤1)源数据读取,在源数据库端根据源数据库的日志文件,提取源数据库的操作,反向生成数据操作的SQL执行脚本。0013在源数据库端通过源数据库的内置系统函数FN_DBLOG读取SQL的日志文件,将事先作为参数配置好的需要同步数据的表名称作为查询条件得到要同步表的所有日志,并将“LOP_INSERT_ROWS”、“LOP_DELETE_。

10、ROWS”和“LOP_UPDATE_ROWS”三个参数作为条件筛选说明书CN102346775ACN102346795A2/4页5对同步表进行新增、删除、修改进行操作的语句,最后得到二进制的行数据,如“01220E02025200E7F2C01F29A03004500E20200”。0014通过DBCCLOGDBIDDBNAME,TYPE01对二进制的行数据进行分析,先取定长字段,根据表结构指定长度,忽略不定长字段和其他不支持以及不需要考虑的字段,循环变长字段列表读取数据,就此得到行数据的对应格式,字段类型、字段名称、占用列数、变长和列对应字段的内容,对该内容进行拼接,得到相应增加、删除、修改。

11、的SQL执行脚本。0015然后根据作为参数配置好的需要同步数据的表名称,从二进制的行数据中获取该表的表结构,成为SQL附属脚本。0016步骤2SQL脚本传递;SQL执行脚本生成,传递完成信号,目的数据库端从源数据库端获取SQL执行脚本;然后对该脚本标注获取的源数据库的数据库类型、版本、IP地址、数据库名称、并将SQL附属脚本也作为标记,最后将该SQL执行脚本及其附属标记存入临时表。0017源数据库端与目标数据库端SQL脚本传递的间隔时间,是由根据业务需要及网络现状,事先配置好的传输间隔参数SENDTIME来确定。0018步骤3数据冲突处理;源数据库与目标数据库数据类型不同,SQL执行脚本不能通。

12、用,需要转换格式,进行处理;多源数据库同时对目标数据库的目标表同步数据,会有数据冲突,需要进行序列处理。0019读取临时表数据,将源数据库SQL执行脚本,根据SQL附属脚本,按目标数据库的数据类型进行转换,转换表结构的字段类型,转换列对应字段的数据内容的存储格式,根据以上转换将SQL执行脚本按对应的方式进行相应的转换,生成可在目标数据库顺利执行的SQL语句,用目标数据库的SQL分析命令进行语句检查,检查通过,存入转换后的SQL执行脚本,进入下一步,否则,重新转换SQL执行脚本,直到读取临时表结束;将临时表中同一目标表的数据按在源数据库中执行时间进行排序,删除不同的源数据库中重复的SQL执行脚本。

13、,按照预设置的处理逻辑对SQL执行脚本进行优化。0020优化方式,将多条数据插入语句合并为一条数据批量插入语句;将多条数据删除语句合并为一条数据删除语句;将多条对同一主键的行数据修改语句合并为一条数据修改语句;在数据批量插入语句后增加NOLOGGING选项,使其执行时,提高执行速度。0021然后按时间重新进行序列处理。0022步骤目标数据写入。0023将周期内的SQL脚本按标注的序号,在目的数据库端逐一执行,单条SQL脚本执行时,不进行数据库提交,全部执行完成后,统一提交。0024与现有技术相比,本发明具有以下有益效果在于1、本发明的基于日志的异构多源数据库同步方法,能够对源数据库没有任何的数。

14、据读取操作,对源数据库的性能没有任何影响;2、本发明的基于日志的异构多源数据库同步方法,不会影响目标数据库的完整性;3、本发明的基于日志的异构多源数据库同步方法,能够对异构的多个源数据库与单一目标数据库进行数据同步,能够适应于大型的数据化集成项目。0025、本发明的基于日志的异构多源数据库同步方法,通过在数据冲突处理中的SQL说明书CN102346775ACN102346795A3/4页6执行脚本优化,能够极大的降低了目标数据库的SQL脚本的执行时间,增强了目标数据库的同步响应速度,适用于百万级的大批量数据同步。0026上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可。

15、依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。0027附图说明0028此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1为本发明的一种基于日志的异构多源数据库同步方法的流程示意图。0029具体实施方式0030下面将参考附图并结合实施例,来详细说明本发明。0031参见图1所示,一种基于日志的异构多源数据库同步方法,其特征在于,包括以下步骤步骤1)源数据读取,在源数据库端根据源数据库的日志文件,提取源数据库的操作,反向生成。

16、数据操作的SQL执行脚本;步骤2)SQL脚本传递;步骤3)数据冲突处理;步骤4)目标数据写入。0032进一步的,所述步骤1的具体步骤如下步骤11)在源数据库端通过源数据库的内置系统函数FN_DBLOG读取SQL的日志文件,将事先作为参数配置好的需要同步数据的表名称作为查询条件得到要同步表的所有日志,并将“LOP_INSERT_ROWS”、“LOP_DELETE_ROWS”、“LOP_UPDATE_ROWS”三个参数作为条件筛选对同步表进行新增、删除、修改进行操作的语句,最后得到二进制的行数据;步骤12)通过DBCCLOGDBIDDBNAME,TYPE01对二进制的行数据进行分析先取定长字段,根。

17、据表结构指定长度,忽略不定长字段和其他不支持以及不需要考虑的字段,循环变长字段列表读取数据,就此得到行数据的对应格式,字段类型、字段名称、占用列数、变长和列对应字段的内容,然后对该内容进行拼接,得到相应增加、删除、修改的SQL执行脚本步骤13)根据作为参数配置好的需要同步数据的表名称,从二进制的行数据中获取该表的表结构,成为SQL附属脚本。0033进一步的,所述步骤2的具体步骤如下步骤21)SQL执行脚本生成,传递完成信号,目的数据库端从源数据库端获取SQL执行脚本;步骤22)对所述SQL执行脚本标注获取的源数据库的数据库类型、版本、IP地址、数据库名称及将SQL附属脚本也作为标记;说明书CN。

18、102346775ACN102346795A4/4页7步骤23)将所述SQL执行脚本及其附属标记存入临时表。0034进一步的,所述步骤3的具体步骤如下读取临时表数据,将源数据库SQL执行脚本,根据SQL附属脚本,按目标数据库的数据类型进行转换,转换表结构的字段类型,转换列对应字段的数据内容的存储格式,根据以上转换将SQL执行脚本按对应的方式进行相应的转换,生成可在目标数据库顺利执行的SQL语句,用目标数据库的SQL分析命令进行语句检查,检查通过,存入转换后的SQL执行脚本,进入下一步,否则,重新转换SQL执行脚本,直到读取临时表结束;将临时表中同一目标表的数据按在源数据库中执行时间进行排序,删。

19、除不同的源数据库中重复的SQL执行脚本,按照预设置的处理逻辑对SQL执行脚本进行优化,然后按时间重新进行序列处理。0035进一步的,所述优化的方法如下1)将多条数据插入语句合并为一条数据批量插入语句;2)将多条数据删除语句合并为一条数据删除语句;3)将多条对同一主键的行数据修改语句合并为一条数据修改语句;4)在数据批量插入语句后增加NOLOGGING选项,使其执行时,提高执行速度。0036进一步的,所述步骤4的具体步骤如下将周期内的SQL脚本按标注的序号,在目的数据库端逐一执行,单条SQL脚本执行时,不进行数据库提交,全部执行完成后,统一提交。0037本发明实现了数据在多源异构数据库之间进行同步的及时性及高效性,在技术上具有突出的实时性特点和显著的进步。0038以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN102346775ACN102346795A1/1页8图1说明书附图CN102346775A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1