一种基于自制序列化算法的数据库同步方法与流程

文档序号:20918069发布日期:2020-05-29 13:47阅读:153来源:国知局
一种基于自制序列化算法的数据库同步方法与流程

本发明涉及数据库同步技术领域,具体涉及一种基于自制序列化算法的数据库同步方法。



背景技术:

在集中管控模式的生产环境中,数据部署在中心机构的机房,而下属机构仅部署应急系统;正常情况下,下属机构的业务处理依赖于中心机构的系统,而在网络、中心数据库瘫痪的情况下,下属机构将启用应急系统进行日常业务处理。该业务要求在正常情况下,需要周期性的将中心数据库的业务数据同步到下属机构,以保证应急情况下的业务数据保证一定程度的新鲜度。

目前的数据同步手段可定制化较差,针对业务规则相关的关联数据的验证缺乏手段,在数据库主键等方面的处理不完善,同步过程中经常会出现主键冲突、关联数据不一致的情况发生,从而导致数据同步失败,或者同步的关联数据不一致,最终导致应急状况发生时,应急系统无法正常启用。



技术实现要素:

本发明的目的在于克服现有技术存在的问题,提供一种基于自制序列化算法的数据库同步方法,保证源数据库与目标数据库的数据在规定周期内保持数据一致。

为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种基于自制序列化算法的数据库同步方法,包括管理工具、发布服务模块和订阅服务模块,建立自定义的数据视图元数据结构,将源数据库按照该结构生成元数据,所述发布服务模块按照元数据的定义抽取数据,建立自制的序列化存储算法,对数据进行序列化存储并进行数据发布,所述订阅服务模块按照元数据的定义接收发布服务模块发布的数据,并对数据进行逆向处理,最终更新到目标数据中。

进一步的,将源数据库按照自定义的数据视图元数据结构生成元数据包括以下步骤:

步骤1.1)手动生成数据表的结构信息元数据,包括数据表名称、数据表类型、数据表分批条件、字段的名称、数据类型和长度;

步骤1.2)建立数据表的外部数据关系元数据,获取该数据表依赖的其他数据表清单,并记录依赖字段;

步骤1.3)结合步骤1.1)和步骤1.2),建立数据发布配置模型:

步骤1.31)配置源数据库连接字符串、数据序列化文件存储位置和数据订阅端服务地址信息;

步骤1.32)针对所有数据视图,配置数据同步时机,同步时机定义为以分号分割的多个数值,其中,第一个数值代表同步周期,周期最小单位为分钟,其余数值代表强制同步的时间点;

步骤1.4)结合步骤1.1)和步骤1.2),建立数据订阅配置模型:

步骤1.41)配置数据验证插件,若未配置,系统采取默认处理;

步骤1.42)配置数据表更新前和更新后插件,若未配置,系统采取默认处理;

步骤1.43)针对所有数据视图,配置目标数据库连接字符串、数据序文件和ftp服务器相关配置。

进一步的,所述自制的序列化存储算法包括以下步骤:

步骤2.1)针对数据视图元数据的定义,依次对各个数据项进行数据获取处理,对于单个数据定义项,进行步骤2.2)处理;

步骤2.2)对获取的数据项数据,按照记录条数依次处理每一条数据记录,对于单条数据记录,进行步骤2.3)处理;

步骤2.3)对每一条数据记录,依次按照字段元数据定义进行二进制处理;

步骤2.4)对单个数据定义项的二进制处理的结构,进行压缩处理,进一步减小数据存储和最后传输的尺寸,并对压缩后的数据进行文件存储。

进一步的,所述数据发布包括以下步骤:

步骤3.1)发布服务模块从数据视图元数据中获取数据同步的周期,并按照周期要求进行数据同步操作,每一个周期操作,系统自动分配一个批次号;

步骤3.2)发布服务模块获取订阅端状态,如果订阅端状态为异常,则本次更新所有的完整数据,以确保所有数据到达目标库后的数据一致性;如果订阅端状态为正常,本次更新变化的数据;计划类数据每次都进行完整更新;

步骤3.3)按照步骤3.2)的处理结果清单,系统进行步骤2.1)完成数据定义项的序列化存储,在每完成一个数据定义项的序列化操作后,发布服务模块向订阅服务模块发送同步指令。

进一步的,所述订阅服务模块接收和逆向处理数据包括以下步骤:

步骤4.1)订阅服务模块接收发布服务模块发布的同步指令,将该同步指令按照批次要求存入指令队列,并创建独立线程进行指令处理;

步骤4.2)指令处理线程中,依次对指令信息中指定的数据定义项进行ftp下载,针对下载失败的情况,系统进行重复尝试若干次,若干次均失败则标记异常,系统跳转至步骤4.4),否则视为下载成功,下载成功后的数据文件待用;

步骤4.3)指令处理线程中,当前批次所有数据定义项下载成功后,再按照数据约束关系依次进行数据文件的解压缩、反序列化、拼接处理;处理完毕后进行数据验证操作,验证通过后,系统执行更新前插件处理、批次更新保存处理、系统执行更新后插件处理;处理过程中未发生异常和错误,标记批次状态为正常,更新结束;否则,跳转至步骤4.4);

步骤4.4)针对批次处理异常的情况,该批次更新失败,所有指令处理判定为失败,标记批次状态为异常,批次更新结束。

进一步的,所述步骤1.43)中,ftp服务器相关配置包括服务器地址、端口、登录用户、密码和数据存储目录。

进一步的,所述步骤3.3)中,同步指令信息包括批次号、数据定义项名称、数据页码、数据条数和指令类型。

进一步的,所述步骤4.2)中,针对下载失败的情况,系统进行重复尝试3次,3次均失败则标记异常。

本发明的有益效果是:

本发明能够最大限度的压缩数据传输的大小,节省网络带宽资源的占用;同时系统实现了未发生变化数据的识别,在保证数据正确性的同时,减少了数据量;系统提供了数据同步的增量、安全、容错、异常处理、定制同步规则等众多机制,更加有效的实现数据同步业务,是一种性能优异,准确性好,运行稳定、资源占用少的数据库同步系统。

附图说明

图1为本发明的网络拓扑结构示意图;

图2为本发明中数据发布处理逻辑结构图;

图3为本发明中订阅接收和逆向处理逻辑结构图;

图4为本发明的总逻辑结构图。

具体实施方式

下面将参考附图并结合实施例,来详细说明本发明。

如图1所示,一种基于自制序列化算法的数据库同步方法,包括管理工具、发布服务模块和订阅服务模块,系统通过管理工具对要进行数据同步的数据库建立自定义的数据视图元数据结构,将源数据库按照该结构生成元数据,,同时提供日常同步服务的监控入口,所述发布服务模块按照元数据的定义抽取数据,具体是根据数据视图元数据的定义周期性的从源数据库中有序地、分批次获取数据,建立自制的序列化存储算法,对数据进行序列化存储并进行数据发布,在本实施例中,最终以文件形式发布在ftp服务器上,所述订阅服务模块按照元数据的定义接收发布服务模块发布的数据,并对数据进行逆向处理,最终更新到目标数据中。

将源数据库按照自定义的数据视图元数据结构生成元数据包括以下步骤:

步骤1.1)在管理端使用管理工具手动生成数据表的结构信息元数据,包括数据表名称、数据表类型(基础表或计划表)、数据表分批条件、字段的名称、数据类型和长度,其中数据类型信息按照自定义规则进行设定;

步骤1.2)建立数据表的外部数据关系元数据,获取该数据表依赖的其他数据表清单,并记录依赖字段;

步骤1.3)结合步骤1.1)和步骤1.2),建立数据发布配置模型:

步骤1.31)配置源数据库连接字符串、数据序列化文件存储位置和数据订阅端服务地址信息;

步骤1.32)针对所有数据视图,配置数据同步时机,同步时机定义为以分号分割的多个数值,其中,第一个数值代表同步周期,周期最小单位为分钟,其余数值代表强制同步的时间点,精确到分钟,例如0930,代表9:30;

步骤1.4)结合步骤1.1)和步骤1.2),建立数据订阅配置模型:

步骤1.41)配置数据验证插件,若未配置,系统采取默认处理;

步骤1.42)配置数据表更新前和更新后插件,若未配置,系统采取默认处理;

步骤1.43)针对所有数据视图,配置目标数据库连接字符串、数据序文件和ftp服务器相关配置。

所述自制的序列化存储算法包括以下步骤:

步骤2.1)针对数据视图元数据的定义,依次对各个数据项进行数据获取处理,对于单个数据定义项,进行步骤2.2)处理;

步骤2.2)对获取的数据项数据,按照记录条数依次处理每一条数据记录,对于单条数据记录,进行步骤2.3)处理;

步骤2.3)对每一条数据记录,依次按照字段元数据定义进行二进制处理;

步骤2.4)对单个数据定义项的二进制处理的结构,进行压缩处理,进一步减小数据存储和最后传输的尺寸,并对压缩后的数据进行文件存储。

所述数据发布包括以下步骤:

步骤3.1)发布服务模块从数据视图元数据中获取数据同步的周期,并按照周期要求进行数据同步操作,每一个周期操作,系统自动分配一个批次号;

步骤3.2)发布服务模块获取订阅端状态,如果订阅端状态为异常,则本次更新所有的完整数据,即不考虑基础类数据的版本问题,以确保所有数据到达目标库后的数据一致性;如果订阅端状态为正常,本次更新变化的数据(仅针对基础类数据);计划类数据每次都进行完整更新;

步骤3.3)按照步骤3.2)的处理结果清单,系统进行步骤2.1)完成数据定义项的序列化存储,在每完成一个数据定义项的序列化操作后,发布服务模块向订阅服务模块发送同步指令。

所述订阅服务模块接收和逆向处理数据包括以下步骤:

步骤4.1)订阅服务模块接收发布服务模块发布的同步指令,将该同步指令按照批次要求存入指令队列,并创建独立线程进行指令处理;

步骤4.2)指令处理线程中,依次对指令信息中指定的数据定义项进行ftp下载,针对下载失败的情况,系统进行重复尝试若干次,若干次均失败则标记异常,系统跳转至步骤4.4),否则视为下载成功,下载成功后的数据文件待用;

步骤4.3)指令处理线程中,当前批次所有数据定义项下载成功后,再按照数据约束关系依次进行数据文件的解压缩、反序列化、拼接处理;处理完毕后进行数据验证操作,验证通过后,系统执行更新前插件处理、批次更新保存处理、系统执行更新后插件处理;处理过程中未发生异常和错误,标记批次状态为正常,更新结束;否则,跳转至步骤4.4);

步骤4.4)针对批次处理异常的情况,该批次更新失败,所有指令处理判定为失败,标记批次状态为异常,批次更新结束。

所述步骤1.43)中,ftp服务器相关配置包括服务器地址、端口、登录用户、密码和数据存储目录。

所述步骤3.3)中,同步指令信息包括批次号、数据定义项名称、数据页码、数据条数和指令类型。

所述步骤4.2)中,针对下载失败的情况,系统进行重复尝试3次,3次均失败则标记异常。

本发明原理

本发明具体实施时,可采用如下参数:

管理工具部署在管理终端上,要求windows7专业版或更高,framework4.0;

数据库服务器要求windowsserver2008r2,mssqlserver2008r2;

网络要求是局域网。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1