基于ftp协议的行业数据库数据实时同步系统的制作方法

文档序号:7985749阅读:256来源:国知局
基于ftp协议的行业数据库数据实时同步系统的制作方法【专利摘要】一种基于FTP协议的行业数据库数据实时同步系统,包括增量数据导出工具模块、增量数据导入工具模块、FTP服务器、增量数据浏览工具模块;增量数据导出工具模块,用于读取数据库增量信息,形成增量数据包,并存入配置好的FTP服务器,数据库增量数据抽取“简称ETL”方式采用了触发器方式;增量数据导入工具模块,用于从FTP服务器上获取增量更新包文件并执行,将遗产系统所管理使用的数据同步增量更新到新系统;增量数据浏览工具模块,对增量SQL语句进行分析,显示需要执行的新系统中的增量数据。【专利说明】基于FTP协议的行业数据库数据实时同步系统【
技术领域
】[0001]本发明涉及数据库数据同步领域,特别是涉及相同模式的两个数据库之间实时的数据同步,对于解决各个系统之间的数据共享,提出了一种通用的解决方法。【
背景技术
】[0002]在企业新旧系统的开发实施过程中,存在这样的情况:1、企业中存在很多现有的系统和数据库,我们称之为遗产(Legacy);2、新开发或新实施的系统往往需要使用现有的数据库或数据库中的一部分;3、很多现有的系统或数据库,作为线上系统,从安全性角度考虑,并不支持新系统的直接访问;4、为了保证企业数据的一致性,同时也为了管理上的便利性,企业管理人员只维护一份数据。在这种情况下,需要研究行业数据库数据实时同步系统及其方法。[0003]在一般应用系统中,通常采用硬编码的方式,将需要同步的数据直接在代码中实现,同时通过编码调用外部系统的接口,将数据操作事件通知给外部系统。例如,对数据库A进行了插入数据操作,需要将这些数据同时插入到数据库B,那么硬编码会在代码中将对数据库B的操作写在代码中。同时,通过调用外部系统的接口,将对数据库的操作通知给外部系统。[0004]这种系统存在两个问题:1、在应用场景改变时就需要修改源代码来满足需求,随着数据和应用场景的增加,需要不断地修改源代码,因而会导致代码维护的难度越来越大。例如,当业务发生更改,对数据库A进行插入数据操作后,不需要将数据插入到B,也不需要将其通知外部系统,由于是硬编码,所以需要进行修改代码后重新编译和部署,才能满足业务需求。2、需要遗产系统开发商修改代码,植入同步将其数据更新到新系统数据库的功能,这么做,即存在安全隐患,也有商务问题;3、同时,遗产系统必须具有访问操作新系统数据库权限,增加了安全隐患。[0005]为了减少修改源代码带来的不便,还可以通过配置文件来进行数据的同步,调用外部系统的接口,将事件通知给外部系统。例如,对数据库A进行了插入数据操作,需要将这些数据同时插入到数据库B中。此时,读取配置文件获取数据库B的连接信息,将数据更新到数据库B中。同时,通过调用外部系统的接口,将对数据库的操作通知给外部系统。[0006]虽然通过配置文件的方式可以进行数据同步,但是配置文件中的信息为数据库连接信息,对数据的同步操作语句仍然需要硬编码来实现;而且由于在代码中调用了外部系统的接口,当外部系统的接口发生改变时,会导致系统出现问题,例如原来在代码中调用的外部接口为接收,如外部系统接口发生变化后,变成了发送。但是原代码没有修改,会导致系统不能正常运行。而且,当有新的应用系统想得到数据库操作通知时,也需要修改代码,影响了系统的扩展性。【
发明内容】[0007]针对以上问题,本发明提供了一种基于FTP协议的行业数据库数据实时同步系统,本发明可以让遗产系统和数据库中的数据可以增量更新到新系统中,使得管理人员仅需要维护一份数据,同时又不需要额外的接口开发工作量,避免了代码的大量修改,又可以增强系统的扩展性。[0008]技术方案:为了解决以上问题本发明提供了一种基于FTP协议的行业数据库数据实时同步系统,其特征在于:包括增量数据导出工具模块、增量数据导入工具模块、FTP服务器、增量数据浏览工具模块;增量数据导出工具模块,用于读取数据库增量信息,形成增量数据包,并存入配置好的FTP服务器,数据库增量数据抽取“简称ETL”方式采用了触发器方式;增量数据导入工具模块,用于从FTP服务器上获取增量更新包文件并执行,将遗产系统所管理使用的数据同步增量更新到新系统;增量数据浏览工具模块,对增量SQL语句进行分析,显示需要执行的新系统中的增量数据。[0009]所述的触发器方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除;增量日志表不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作类型“knseruupdate或delete“,ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。[0010]所述的增量数据导入工具模块:①配置数据关联规则;②从FTP服务器上获取增量更新包;③执行增量更新包;④多线程执行保存在数据库中的SQL语句;⑤从FTP服务器上删除增量更新文件;完成遗产系统和新系统之间的增量数据同步,实现遗产系统与新系统之间的数据共享。[0011]所述的增量数据导入工具模块由定时器启动。[0012]所述的数据关联规则配置文件为XML文件。[0013]所述的从FTP服务器上获取增量更新包:①增量数据导入工具向FTP代理类对象发送配置FTP服务器地址的消息,该消息只发送一次;②增量数据导入工具主类向FTP代理类对象发送请求,判断是否有新的增量更新包FTP文件,FTP代理类会向FTP服务器进行确认;③如果有新的增量更新包FTP文件,则向FTP代理类发送获取增量更新包文件的请求,并进入解析执行增量更新包的过程;如果没有增量更新包,则休眠一段时间后,继续步骤②。[0014]所述的执行增量更新包:①使用JSON转换器,将增量更新包文件转换成增量数据实体类对象数组;②使用增量数据实体解析器对每一个增量数据实体类对象进行解析,实现数据的增量更新;增量数据实体的解析:由数据关联规则可得到源表所对应的目的表表名和目的表各个字段与源表的关系;增量数据实体解析器根据增量数据实体内容进行操作,如果Operate==D,则生成一条删除语句,如果Operate==〗,则生成一条插入语句,如果Operate=U,则生成一条更新语句;这些语句的绑定变量值,来自增量数据实体,或增量数据实体字段和目的表字段的函数;③保存生成的SQL语句到数据库中。[0015]所述的增量数据浏览工具模块的显示分两级进行,首先实现增量更新表,然后显示表中的增量更新数据。[0016]所述的数据关联规则表示为:将“来自遗产系统的源表”映射到“新系统的目的表”;目的表的字段要么是源表的某个字段,要么是源表某些字段的函数,已实现的函数包括:①strncat功能:字符串连接;格式:strncat(参数I,....)参数类型:源表字段,用“s_”为前缀;目的表字段,用“d_”为前缀;普通字符串,用“”引起来;②replace功能:字符串替换;格式:r印Iace(源串,查找串,替换串)“源串”“查找串”和“替换串”参数类型:源表字段,用“s_”为前缀;目的表字段,用“d_”为前缀;普通字符串,用“”引起来;?validate功能:字符串替换;格式:validate(content,type)content参数说明:源表字段,用“s_”为前缀;目的表字段,用“d_”为前缀。[0017]type参数说明:〃身份证〃:验证content是否为身份证;〃Email〃:验证content是否为Email;〃范围[M-N]〃:验证content在M和N范围之内;〃包含(包含值)〃:验证content是否包含“包含值”;〃枚举{值1,值2,....}〃:验证content取值在{值1,值2,....}之内;所述的数据关联规则表示为:新系统中的表NewWord,来自某个遗产系统表Word,称Word是NewWord表的源表,NewWord表是Word表的目的表。其中,目的表中的Word字段来自源表的Word,WordClass字段来自源表的WordClass,WordID字段来自源表的ID。[0018]有益效果:①本发明允许用户根据新系统数据和现有系统间的数据关联关系需求,配置数据关联规则。[0019]②本发明提供的数据同步方法,不需要修改遗产系统,也不需要修改新系统,而是将客户数据同步需求归结为增量数据导入导出。[0020]③本发明采用了已有的数据库日志分析功能,能够实现增量数据的集中管理。[0021]④本发明在新系统数据库和现有遗产数据库之间建立了联系,可以在理解客户需求的基础上,帮助客户完成这两个数据库之间的数据同步。[0022]⑤在关系数据库中保留历史对用户来说非常重要,本发明能帮助用户轻松实现该功能,用户能随时去查看数据库的历史操作。【专利附图】【附图说明】[0023]图1是本发明中系统的增量数据流图;图2是本发明中系统工作流程的活动图;图3是本发明中增量信息示例;图4是本发明中增量数据导入工具模块的使用案例图;图5是本发明中关联规则编辑页面;图6是本发明中数据关联规则语法;图7是本发明中数据关联规则示例;图8是本发明中的获取增量数据更新包过程的序列图;图9是本发明中的执行增量数据更新包过程的序列图;图10是本发明中增量数据实体的解析过程的流程图;图11是本发明中增量更新信息对应的SQL语句示例图;图12是本发明中的有更新的增量数据表显示页面;图13是本发明中某个数据表的增量数据显示页面。【具体实施方式】[0024]下面结合附图对本发明作进一步详细的描述。[0025]如图1所示,本发明中的系统架构在遗产系统及其数据库和新系统新数据库之间,完成新系统所需的,来自遗产系统的增量数据的同步更新。[0026]一种基于FTP协议的行业数据库数据实时同步系统,包括增量数据导出工具模块、增量数据导入工具模块、FTP服务器、增量数据浏览工具模块。[0027]图2是本发明中的系统工作流程的活动图,描述了系统中这些主要模块中包含的活动及它们的先后关系。[0028]下面详细介绍各个模块:增量数据导出工具模块,用于读取数据库增量信息,形成增量数据包,并存入配置好的FTP服务器。常见的数据库增量数据抽取(简称ETL)方式,包括:1、触发器方式:触发器方式是普遍采取的一种增量抽取机制。2、时间戳方式:时间戳方式是指增量抽取时,抽取进程通过比较系统时间与抽取源表的时间戳字段的值来决定抽取哪些数据。3、全表删除插入方式:全表删除插入方式是指每次抽取前先删除目标表数据,抽取时全新加载数据。该方式实际上将增量抽取等同于全量抽取。对于数据量不大,全量抽取的时间代价小于执行增量抽取的算法和条件代价时,可以采用该方式。4、全表比对方式:全表比对即在增量抽取时,ETL进程逐条比较源表和目标表的记录,将新增和修改的记录读取出来。5、日志表方式:对于建立了业务系统的生产数据库,可以在数据库中创建业务日志表,当特定需要监控的业务数据发生变化时,由相应的业务系统程序模块来更新维护日志表内容。增量抽取时,通过读日志表数据决定加载哪些数据及如何加载。日志表的维护需要由业务系统程序用代码来完成。6、系统日志分析方式:该方式通过分析数据库自身的日志来判断变化的数据。7、特定数据库方式,比如Oracle改变数据捕获方式(changeddatacapture,Q)C)。[0029]本发明采用了触发器方式。该方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除。为了简单起见,增量日志表一般不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作类型(knsen、update或delete),ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。[0030]1、增量数据抽取。以Oracle数据库为例,采用触发器方式进行增量数据捕获的过程如下:这样,对表T的所有DML操作就记录在增量日志表DML_L0G中,注意增量日志表中并没有完全记录增量数据本身,只是记录了增量数据的来源。进行增量ETL时,只需要根据增量日志表中的记录情况,反查源表得到真正的增量数据。[0031](I)创建增量日志表DML_L0G:createtableDML_L0G(IDNUMBERprimarykey,—自增主键TABLENAMEVARCHAR2(200),—源表名称RECORDIDNUMBER,—源表增量记录的主键值DMLTYPEchar(I),—增量类型,I表示新增:U表示更新;D表示删除EXECUTEDATE发生时间);(2)为DML_L0G创建一个序列SEQ_DML_L0G上,以便触发器写增量日志表时生成ID值。[0032]createsequenceSEQ_DML_L0GminvalueImaxvalue999999999999999999999999999startwithIincrementbyIcache20;(3)针对要监听的每一张表,创建一个触发器,例如对表Word创建触发器如下:createOrreplacetriggerIUDTestBEFOREINSERTORUPDATEORDELETEONWordforeachrow【权利要求】1.一种基于FTP协议的行业数据库数据实时同步系统,其特征在于:包括增量数据导出工具模块、增量数据导入工具模块、FTP服务器、增量数据浏览工具模块;增量数据导出工具模块,用于读取数据库增量信息,形成增量数据包,并存入配置好的FTP服务器,数据库增量数据抽取“简称ETL”方式采用了触发器方式;增量数据导入工具模块,用于从FTP服务器上获取增量更新包文件并执行,将遗产系统所管理使用的数据同步增量更新到新系统;增量数据浏览工具模块,对增量SQL语句进行分析,显示需要执行的新系统中的增量数据。2.根据权利要求1所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的触发器方式是根据抽取要求,在要被抽取的源表上建立插入、修改、删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表,ETL的增量抽取则是从增量日志表中而不是直接在源表中抽取数据,同时增量日志表中抽取过的数据要及时被标记或删除;增量日志表不存储增量数据的所有字段信息,而只是存储源表名称、更新的关键字值和更新操作类型“knsen、update或delete“,ETL增量抽取进程首先根据源表名称和更新的关键字值,从源表中提取对应的完整记录,再根据更新操作类型,对目标表进行相应的处理。3.根据权利要求1所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的增量数据导入工具模块:①配置数据关联规则;②从FTP服务器上获取增量更新包;③执行增量更新包;④多线程执行保存在数据库中的SQL语句;⑤从FTP服务器上删除增量更新文件;完成遗产系统和新系统之间的增量数据同步,实现遗产系统与新系统之间的数据共享。4.根据权利要求1或3所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的增量数据导入工具模块由定时器启动。5.根据权利要求3所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的数据关联规则配置文件为XML文件。6.根据权利要求3所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的从FTP服务器上获取增量更新包:①增量数据导入工具向FTP代理类对象发送配置FTP服务器地址的消息,该消息只发送一次;②增量数据导入工具主类向FTP代理类对象发送请求,判断是否有新的增量更新包FTP文件,FTP代理类会向FTP服务器进行确认;③如果有新的增量更新包FTP文件,则向FTP代理类发送获取增量更新包文件的请求,并进入解析执行增量更新包的过程;如果没有增量更新包,则休眠一段时间后,继续步骤2。7.根据权利要求3所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的执行增量更新包:①使用JSON转换器,将增量更新包文件转换成增量数据实体类对象数组;②使用增量数据实体解析器对每一个增量数据实体类对象进行解析,实现数据的增量更新;增量数据实体的解析:由数据关联规则可得到源表所对应的目的表表名和目的表各个字段与源表的关系;增量数据实体解析器根据增量数据实体内容进行操作,如果Operate==D,则生成一条删除语句,如果Operate==〗,则生成一条插入语句,如果Operate=U,则生成一条更新语句;这些语句的绑定变量值,来自增量数据实体,或增量数据实体字段和目的表字段的函数;③保存生成的SQL语句到数据库中。8.根据权利要求1所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的增量数据浏览工具模块的显示分两级进行,首先实现增量更新表,然后显示表中的增量更新数据。9.根据权利要求3或5所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的数据关联规则表示为:将“来自遗产系统的源表”映射到“新系统的目的表”;目的表的字段要么是源表的某个字段,要么是源表某些字段的函数,已实现的函数包括:strncat功能:字符串连接;格式:strncat(参数I,....)参数类型:源表字段,用“s_”为前缀;目的表字段,用“d_”为前缀;普通字符串,用“”引起来;replace`功能:字符串替换;格式:r印Iace(源串,查找串,替换串)“源串”“查找串”和“替换串”参数类型:源表字段,用“s_”为前缀;目的表字段,用“d_”为前缀;普通字符串,用“”引起来;validate功能:字符串替换;格式:validate(content,type)content参数说明:源表字段,用“s_”为前缀;目的表字段,用“d_”为前缀;type参数说明:〃身份证〃:验证content是否为身份证;〃Email〃:验证content是否为Email;〃范围[M-N]〃:验证content在M和N范围之内;〃包含(包含值)〃:验证content是否包含“包含值”;〃枚举{值1,值2,....}〃:验证content取值在{值1,值2,....}之内。10.根据权利要求3或5所述的基于FTP协议的行业数据库数据实时同步系统,其特征在于:所述的数据关联规则表示为:新系统中的表NewWord,来自某个遗产系统表Word,称Word是NewWord表的源表,NewWord表是Word表的目的表;其中,目的表中的Word字段来自源表的Word,WordClass字段来自源表的WordClass,WoixIID字段来自源表的ID。【文档编号】H04L29/08GK103823797SQ201210460308【公开日】2014年5月28日申请日期:2012年11月16日优先权日:2012年11月16日【发明者】王卫民,符建辉,王石申请人:镇江诺尼基智能技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1