基于数据库服务间的通用数据同步方法及其系统的制作方法

文档序号:6369024阅读:195来源:国知局
专利名称:基于数据库服务间的通用数据同步方法及其系统的制作方法
技术领域
本发明涉及应用间数据文件交换和数据同步技术领域,特别是涉及一种基于数据库服务间(即,数据库服务器之间)的通用数据同步的方法及其系统。
背景技术
现有应用之间的数据传输技术主要有联机接口和文件接口两种方式,无论是对于联机接口方式还是文件接口方式,若要实现数据同步,都需要上游应用系统和下游应用系统按照统一的规范和接口标准进行定制,如果需要新增接口就需要上下游对该新增的接口定义格式,重新针对该接口定制数据生成、校验、导入等功能模块,导致接口的扩展性、灵活性差,且众多接口间存在较多的共性部分,不能充分复用,造成计算机系统资源浪费。另外,对于数据接收异常的情况,目前应用间没有实现统一的自动化反馈处理机制,一般需要依赖某些人工介入的处理流程实现跳过或数据重新接收。在数据交换非常频繁的情况下,可能会时常出现人工接管请求,而系统不能自适应处理,导致数据准确性和处理效率受到影响。

发明内容
本发明克服了现有数据传输同步技术中程序复用性弱、参数化程度低、无反馈机制等不足,提供一种复用性强、准确度高、可参数化配置、并基本实现主辅数据源间准实时的数据同步方法及其系统。本发明的基于数据库服务间的通用数据同步系统包括发送端供数控制装置,用于检测各个导出任务是否满足可供导出的条件,并执行满足条件的导出任务;发送端数据存储装置,用于存储发送端应用的系统数据、数据库程序及存放待发送的供数文件;文件传输装置,用于将发送端应用节点下,指定发送目录中的文件传送到接收端应用节点的指定接收目录;接收端文件检测装置,用于检测接收端数据存储装置的接收目录中是否有供数文件到达,若存在,则向待处理任务批次列表中登记各个文件的属性信息;接收端数据存储装置,用于存储接收端应用的系统数据及存放供数文件;接收端数据处理装置,用于提取接收端文件检测装置登记的待处理任务,执行装载导入。本发明还提供了一种基于数据库服务间的通用数据同步方法,该方法包括步骤1,发送端供数控制装置I取得并执行供数任务,将查询结果集按照设定模板的格式,生成数据文件;步骤2 :文件检测装置4按照一定的文件名规则检测文件,若文件到则进行属性解析和登记,生成导入任务;步骤3 :数据处理装置6获取待处理导入任务,将数据文件进行装载,按一定的规则校验通过后,向目标表进行导入。应用本发明的本发明的基于数据库服务间的通用数据同步方法和系统,具有以下效果有效地解决了新增接口的重复编制问题 ,减少了各类资源成本。通过本发明提供的方法,如果需要新增一项数据传输,只需要对数据同步任务及数据结构属性信息进行配置,即可实现上下游数据的自动同步,无需重新定制联机接口或文件生成、装载、导入等功能模块,极大地减少了工作量,并显著缩短了项目周期。满足了应用与应用之间准实时数据同步的需求,保证了数据准确性。本发明以多线程轮询的形式进行定频、定时供数任务执行,实现了数据的准实时传输。对数据生成和还原流程进行不同程度的优化,能够稳定、高效地完成大数据量的同步工作。同时通过一定规则的校验,并配合数据异常重发请求机制,能够对数据还原的准确性有较强的保证。


图I是本发明基于数据库服务间的通用数据同步系统的结构框图。图2是本发明的供数控制装置结构示意图。图3是本发明的数据处理装置结构示意图。图4是本发明的发送端数据导出过程流程图。图5是本发明的接收端文件检测过程流程图。图6是本发明的接收端数据处理过程流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。本发明的基于数据库服务间的通用数据同步方法和系统的工作原理是将数据传输同步过程中可复用的部分进行提取,并将个性化的部分转换为参数配置,采用上游应用表——文件——下游应用表的途径,实现数据同步。一般是将每张表的每种数据传输方式(增量、全量)分别作为一个传输任务,使用者可通过配置传输任务,在任务清单中设置上游应用的源数据表、下游应用的目的数据表、供数频率(供数频率描述的是两次同步之间的时间间隔,频率越高则实时性越强)、数据传输方式、模板等参数。通过设置任务清单,可以实现多种典型的同步方案,例如,日间定频率扫描源数据表,如有增量数据更新,则同步到下游应用的目的表,日终定时进行源表和目的表的全量同步。采用参数配置的形式,根据上下游应用不同的需求定制合适的同步方案,主要的参数配置及设置依据有根据传输数据量的大小,在数据传输方式上,选择增量、全量或者两者结合的方式;根据对准实时性能的要求,在性能允许的范围内设置任务的供数频率和导入导出线程的数量;根据数据传输方向,设置文件发送目录和接收文件的目标应用;根据数据存储结构,设置上下游的表名、字段名、主键名并建立对照关系。为了使数据在还原过程中保持准确,本发明提供的同步方案,对每一个供数任务都分别设置一个序列的批次号,上游应用系统每次供数都要对生成的文件按升序指定一个批次号,下游应用在接收到数据文件后,分别对每个导入任务,按批次号的顺序,采用一定的逻辑判断有无存在冲突的数据,最后对数据进行一定规则的校验,校验通过后才进行导入,若出现批次号不连续、校验失败或导入出错等情况,下游应用会发起有限次数的数据重发请求,上游应用接收请求并重新生成和发送文件,机制上能够充分保证主辅数据源间数据一致性的原则。图I是本发明数据库服务间的通用数据同步系统结构示意图,参照图1,该系统包、括发送端供数控制装置I、发送端数据存储装置2、文件传输装置3、接收端文件检测装置4、接收端数据存储装置5和接收端数据处理装置6。在实际应用中,发送端和接收端并不局限于一对一,可以是多个主数据源和辅数据源的任意组合。发送端供数控制装置I可以是一种通过批量调度工具实现的轮询设备,用于检测各个导出任务是否满足可供导出的条件,并执行满足条件的导出任务(即,被导出的任务),从发送端数据存储装置2获取数据,经过处理后生成一定格式的文件。图2为发送端供数控制装置I的逻辑结构图。参照图2,发送端供数控制装置I包括时间频率检测单元11、查询执行单元12、模板转化单元13、文件生成单元14和重发请求处理单元15。时间频率检测单元11用于读取各个导出任务的间隔时间、单位等参数以及任务状态,并根据当前时间点和任务的上次供数时间,筛选出需要执行导出的任务,例如,筛选条件为任务状态为空闲,且上次供数时间+供数时间间隔 < 当前时间。查询执行单元12用于取得经过时间频率检测单元11筛选后的任务的SQL语句,对SQL语句中的变量进行绑定后执行动态查询。模板转化单元13用于读取导出任务对应的模板格式,将查询执行单元12所得的记录以该格式进行套用。文件生成单元14用于将模板化后的属性信息及查询结果写入接口文件,写入完毕后根据该任务对应的各个目标应用,分别复制到各目标应用的发送目录以及备份目录。重发请求处理单元15用于接收并处理下游应用因各种异常而反馈给该单元的重发请求,根据请求中的异常代码,决定处理流程,重发数据文件。例如若下游出现了不连续的批次号,则从备份目录中获取丢失的批次号对应的文件进行重发;若下游数据行数校验出现异常,则按照原条件,重新生成数据文件并发送。发送端数据存储装置2可以是一台数据库服务器,是数据同步的主数据源,用于存储发送端应用的系统数据、数据库程序及存放待发送的供数文件,供数文件即上游生成供给下游的,以一定格式存放同步数据的文件。文件传输装置3起到企业数据总线的作用,在企业内部网络的各应用系统之间提供自动化点对点传输服务,负责将发送端应用节点下,指定发送目录中的文件传送到接收端应用节点的指定接收目录。接收端文件检测装置4负责检测接收端数据存储装置5的接收目录中是否有供数文件到达,若存在,则向待处理任务批次列表中登记各个文件的属性信息。接收端数据存储装置5可以是一台数据库服务器,是数据同步的辅数据源,用于存储接收端应用的系统数据及存放供数文件。接收端数据处理装置6可以是一种通过批量调度程序实现的轮询设备,提取文件检测装置4登记的待处理任务,执行装载导入。图3为接收端数据处理装置6的逻辑结构框图。参照图3,数据处理装置6任务获取单元61、数据装载单元62、数据校验单元63和数据导入单元64。任务获取单元61用于取得待处理、且前置依赖都已完成的导入任务,其中前置依赖是指向同一张表进行数据导入,且文件生成时间早于该任务的任务为前置依赖。例如,对于向某个任务A来说,若存在另一个任务B也要向该张表导入数据,且任务B对应的文件生、成更早,则任务B为任务A的前置依赖。数据装载单元62负责将供数文件数据写入到通用数据装载表中。数据校验单元63用于检验文件格式、行数等属性信息是否正确。数据导入单元64负责将通用数据装载表中的未处理数据取出,按照事先配置的目标表名、字段名和主键等信息动态地导入到目标表中。
基于上述的数据库服务间的通用数据同步系统,本发明还提出了一种基于数据库服务间的通用数据同步方法。本发明的基于数据库服务间的通用数据同步方法包括以下三个步骤。在步骤一,发送端数据导出步骤。在该步骤,发送端供数控制装置I取得并执行供数任务,将查询结果集按照设定模板的格式,生成数据文件。图4为发送端数据导出步骤的详细流程图。参照图4,在步骤101,供数控制装置I的时间频率检测单元11判断是否有任务的上次供数时间+供数间隔时间小于等于系统当前时间,若有,按上次执行时间从小到大排序,取得第一条任务,转到步骤102,否则,重复步骤101。在步骤102,供数控制装置I将取得的任务的状态设为“正在处理”,避免该装置另外的线程取到该条任务。在步骤103,供数控制装置I判断所取任务的供数方式为增量还是全量,若是全量,则转到步骤104,若是增量,则转到步骤105。在步骤104,查询执行单元12取得导出配置中的查询语句,验证语句的合法性,解析查询结果列的属性信息,而后执行查询语句,转到步骤108。在步骤105,供数控制装置I获取增量任务的上次供数时间和当前系统时间,将这两个时间变量绑定到动态查询语句中,将查询结果限定在这两个时间点之间修改或新增的记录。在步骤106,查询执行单元12验证查询语句的合法性,解析查询结果列的属性信息,而后执行查询语句。在步骤107,查询执行单元12检查执行后的查询结果,判断是否存在结果集,若存在,则转到步骤108,若不存在,则转到步骤111。在步骤108,根据步骤104或106中获得的查询结果列属性信息,以一定的转换规则,对查询到的非字符串类型的列进行格式转换。在步骤109,模板转化单元13查询导出任务对应的模板号,若为标准模板,则将属性信息和查询结果数据套用于固定的模板规范,若不为标准模板,则取得该模板号对应的文件名、扩展名、文件头信息格式、文件记录格式、文件尾信息格式,将属性信息和查询结果数据套用于以上模板。在步骤110,文件生成单元14将步骤109模板化后的属性信息及查询结果写入接口文件,写入完毕后根据该任务对应的各个目标应用,分别复制到不同的目标目录。在步骤111,如上述步骤执行成功,供数控制装置I将取得的任务的状态设为“空闲”,最后供数时间和上次执行时间设为步骤104或106中执行查询语句的系统时间,当前批次号设为原批次号+1。若供数任务执行过程中有异常发生,则不更新最后供数时间和批次号,只更新任务状态和上次执行时间,使该任务落到队列的尾部,先保证其余任务的执行,避免一直异常,占用导出线程。完成后转到步骤101,循环执行上述步骤。在步骤二,检测接收端文件,文件检测装置4按照一定的文件名规则检测文件,若文件到达则进行属性解析和登记,生成导入任务。图5为接收端文件检测过程流程图,参照图5,具体步骤包括步骤201,文件检测装置4检查文件传输接收目录,若存在符合一定规则文件名的数据文件,则转到步骤202,若不存在,则重复执行步骤201 ;步骤202,对于步骤201中检测到的每一个文件,文件检测装置4读取文件中的属性信息,包括来源应用、任务号、批次号、行数、导出时间等信息,然后将上述信息作为一条导入任务,登记到导入批次状态列表中,任务状态为“待处理”;步骤203,文件检测装置4将步骤202中登记成功的文件,移动到文件系统中的待装载目录;完成后转到步骤201,循环执行上述步骤。在步骤三,导入接收端数据,数据处理装置6获取待处理导入任务,将数据文件进行装载,按一定的规则校验通过后,向目标表进行导入。图6为接收端数据导入过程流程图,其具体步骤如下步骤301,任务获取单元61查询导入批次状态列表,检查是否有任务状态为“待处理”的任务,若有,则转到步骤302, 否则,重复步骤301 ;步骤302,任务获取单元61选择导入批次状态列表中待处理的一个任务号,若该任务号有多条待处理任务,则选择批次号最小的任务;步骤303,任务获取单元61查询导入批次状态列表中批次号为上一批次的同号任务,检查其状态是否为“已完成”,若是,则转到步骤305,否则,转到步骤304 ;步骤304,任务获取单元61读取系统中设置的超时时间I以及重发时间阈值,检查当前系统时间减去任务登记时间是否大于超时时间1,若是,则转到步骤305,否则,转到步骤301,在转到步骤301之前,如果该任务没有发送过重发请求且超过了重发时间阈值,则根据该异常情况生成异常代码,向来源应用发起一个重发请求;步骤305,任务获取单元61查询导入任务定义中与该任务有依赖或冲突的任务号,检查导入批次状态列表中是否存在导出时间早于该任务、且导入未完成的冲突任务,若不存在,则转到步骤307,否则,转到步骤306 ;步骤306,任务获取单元61读取系统中设置的超时时间2,检查当前系统时间减去任务登记时间是否大于超时时间2,若是,则转到步骤307,否则转到步骤301 ;步骤307,数据装载单元62根据任务获取单元61得到的任务,读取该任务在待装载目录中的对应文件,利用数据加载工具,将文件数据装载进通用数据装载表中,并将文件转移到归档目录,以备后续追踪和关联分析;步骤308,数据校验单元63对通用数据装载表中的数据和导入批次状态列表中的属性信息进行校验;步骤309,数据导入单元64读取通用数据装载表中的数据,以及字段对应关系表设置的字段名、格式、主键等信息,若该任务供数方式是全量,则删除目标表数据后进行Insert操作,若是增量,则根据主键信息,对新旧数据进行Merge操作;步骤310,数据处理装置6将导入批次状态列表中的任务状态设为“已完成”,将通用数据装载表中的数据标记为“已处理”。完成后转到步骤301,循环执行上述步骤。以上步骤若出现异常,若是原因在于来源应用或文件传输服务,则数据处理装置6根据具体的异常情况生成异常代码,向来源应用发起重发请求。本发明的基于数据库服务间的通用数据同步方法及其系统具有以下效果有效地解决了新增接口的重复编制问题,减少了各类资源成本。通过本发明提供的方法,如果需要新增一项数据传输,只需要对数据同步任务及数据结构属性信息进行配置,即可实现上下游数据的自动同步,无需重新定制联机接口或文件生成、装载、导入等功能模块,极大地减少了工作量,并显著缩短了项目周期。满足了应用与应用之间准实时数据同步的需求,保证了数据准确性。本发明以多线程轮询的形式进行定频、定时供数任务执行,实现了数据的准实时传输。对数据生成和还原流程进行不同程度的优化,能够稳定、高效地完成大数据量的同步工作。同时通过一定规则的校验,并配合数据异常重发请求机制,能够对数据还原的准确性有较强的保证。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是, 以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于数据库服务间的通用数据同步方法,该方法包括 步骤1,发送端供数控制装置取得并执行供数任务,将查询结果集按照设定模板的格式,生成数据文件; 步骤2 :文件检测装置按照一定的文件名规则检测文件,若文件到则进行属性解析和登记,生成导入任务; 步骤3 :数据处理装置获取待处理导入任务,将数据文件进行装载,按一定的规则校验通过后,向目标表进行导入。
2.如权利要求I所述的方法,其特征在于,步骤I进一步包括 步骤101 :供数控制装置的时间频率检测单元判断是否有任务的上次供数时间+供数间隔时间小于等于系统当前时间,若有,按上次执行时间从小到大排序,取得第一条任务,转到步骤102,否则,重复步骤101 ; 步骤102 :供数控制装置将取得的任务的状态设为“正在处理”,避免该装置另外的线程取到该条任务。
3.如权利要求2所述的方法,其特征在于,在步骤102之后,进一步包括 步骤103 :供数控制装置判断所取任务的供数方式为增量还是全量,若是全量,则转到步骤104,若是增量,则转到步骤105 ; 步骤104 :查询执行单元取得导出配置中的查询语句,验证语句的合法性,解析查询结果列的属性信息,而后执行查询语句,转到步骤108 ; 步骤105 :供数控制装置获取增量任务的上次供数时间和当前系统时间,将这两个时间变量绑定到动态查询语句中,将查询结果限定在这两个时间点之间修改或新增的记录; 步骤106 :查询执行单元验证查询语句的合法性,解析查询结果列的属性信息,而后执行查询语句; 步骤107 :查询执行单元检查执行后的查询结果,判断是否存在结果集,若存在,则转到步骤108,若不存在,则转到步骤111 ; 步骤108 :根据步骤104或106中获得的查询结果列属性信息,以一定的转换规则,对查询到的非字符串类型的列进行格式转换。
4.如权利要求3所述的方法,其特征在于, 步骤107进一步包括若判断不存在结果集,则转到步骤111,并且在步骤108之后进一步包括 步骤109 :模板转化单元查询导出任务对应的模板号,若为标准模板,则将属性信息和查询结果数据套用于固定的模板规范,若不为标准模板,则取得该模板号对应的文件名、扩展名、文件头信息格式、文件记录格式、文件尾信息格式,将属性信息和查询结果数据套用于以上模板; 步骤110 :文件生成单元将步骤模板化后的属性信息及查询结果写入接口文件,写入完毕后根据该任务对应的各个目标应用,分别复制到不同的目标目录; 步骤111 :如上述步骤执行成功,供数控制装置将取得的任务的状态设为“空闲”,最后供数时间和上次执行时间设为步骤104或106中执行查询语句的系统时间,当前批次号设为原批次号+1,若供数任务执行过程中有异常发生,则不更新最后供数时间和批次号,只更新任务状态和上次执行时间,使该任务落到队列的尾部,先保证其余任务的执行,避免一直异常,占用导出线程; 步骤112,转到步骤101,循环执行上述步骤。
5.如权利要求4所述的方法,其特征在于,步骤2进一步包括 步骤201,接收端文件检测装置检查文件传输接收目录,若存在符合一定规则文件名的数据文件,则转到步骤202,若不存在,则重复执行步骤201 ; 步骤202,对于步骤201中检测到的每一个文件,文件检测装置4读取文件中的属性信息,然后将所述属性信息作为一条导入任务,登记到导入批次状态列表中,任务状态为“待处理”; 步骤203,文件检测装置将步骤202中登记成功的文件,移动到文件系统中的待装载目录;完成后转到步骤201,循环执行上述步骤。
6.如权利要求5所述的方法,其特征在于,步骤3进一步包括 步骤301,接收端任务获取单元查询导入批次状态列表,检查是否有任务状态为“待处理”的任务,若有,则转到步骤302,否则,重复步骤301 ; 步骤302,任务获取单元选择导入批次状态列表中待处理的一个任务号,若该任务号有多条待处理任务,则选择批次号最小的任务。
7.如权利要求6所述的方法,其特征在于,步骤302后进一步包括 步骤303,任务获取单元查询导入批次状态列表中批次号为上一批次的同号任务,检查其状态是否为“已完成”,若是,则转到步骤305,否则,转到步骤304 ; 步骤304,任务获取单元读取系统中设置的超时时间以及重发时间阈值,检查当前系统时间减去任务登记时间是否大于超时时间,若是,则转到步骤305,否则,转到步骤301,在转到步骤301之前,如果该任务没有发送过重发请求且超过了重发时间阈值,则根据该异常情况生成异常代码,向来源应用发起一个重发请求; 步骤305,任务获取单元查询导入任务定义中与该任务有依赖或冲突的任务号,检查导入批次状态列表中是否存在导出时间早于该任务、且导入未完成的冲突任务,若不存在,则转到步骤307,否则,转到步骤306 ; 步骤306,任务获取单元读取系统中设置的超时时间,检查当前系统时间减去任务登记时间是否大于超时时间,若是,则转到步骤307,否则转到步骤301 ; 步骤307,数据装载单元根据任务获取单元得到的任务,读取该任务在待装载目录中的对应文件,利用数据加载工具,将文件数据装载进通用数据装载表中,并将文件转移到归档目录,以备后续追踪和关联分析; 步骤308,数据校验单元对通用数据装载表中的数据和导入批次状态列表中的属性信息进行校验; 步骤309,数据导入单元读取通用数据装载表中的数据,以及字段对应关系表设置的字段名、格式、主键等信息,若该任务供数方式是全量,则删除目标表数据后进行Insert操作,若是增量,则根据主键信息,对新旧数据进行Merge操作; 步骤310,数据处理装置将导入批次状态列表中的任务状态设为“已完成”,将通用数据装载表中的数据标记为“已处理”; 完成后转到步骤301,循环执行上述步骤。
8.一种基于数据库服务间的通用数据同步系统,该系统包括发送端供数控制装置,用于检测各个导出任务是否满足可供导出的条件,并执行满足条件的导出任务; 发送端数据存储装置,用于存储发送端应用的系统数据、数据库程序及存放待发送的供数文件; 文件传输装置,用于将发送端应用节点下,指定发送目录中的文件传送到接收端应用节点的指定接收目录; 接收端文件检测装置,用于检测接收端数据存储装置的接收目录中是否有供数文件到达,若存在,则向待处理任务批次列表中登记各个文件的属性信息; 接收端数据存储装置,用于存储接收端应用的系统数据及存放供数文件; 接收端数据处理装置,用于提取接收端文件检测装置登记的待处理任务,执行装载导入。
9.如权利要求8所述的系统,其特征在于,所述发送端供数控制装置进一步包括 时间频率检测单元,用于读取各个导出任务的参数以及任务状态,并根据当前时间点和任务的上次供数时间,筛选出需要执行导出的任务; 查询执行单元,用于取得经过时间频率检测单元筛选后的任务的SQL语句,对SQL语句中的变量进行绑定后执行动态查询; 模板转化单元,用于读取导出任务对应的模板格式,将查询执行单元所得的记录以该格式进行套用; 文件生成单元,用于将模板化后的属性信息及查询结果写入接口文件,写入完毕后根据该任务对应的各个目标应用,分别复制到各自的发送目录以及备份目录; 重发请求处理单元,用于接收并处理下游应用因各种异常而反馈给该单元的重发请求,根据请求中的异常代码,决定处理流程,重发数据文件。
10.如权利要求9所述的系统,其特征在于,接收端数据处理装置进一步包括 任务获取单元,用于取得待处理、且前置依赖都已完成的导入任务; 数据装载单元,用于将供数文件数据写入到通用数据装载表中; 数据校验单元,用于检验文件的属性信息是否正确; 数据导入单元,用于将通用数据装载表中的未处理数据取出,按照事先配置的信息动态地导入到目标表中。
全文摘要
本发明公开了一种基于数据库服务间的通用数据同步系统,包括发送端供数控制装置,用于检测各个导出任务是否满足可供导出的条件,并执行满足条件的导出任务;文件传输装置,用于将发送端应用节点下,指定发送目录中的文件传送到接收端应用节点的指定接收目录;接收端文件检测装置,用于检测接收端数据存储装置的接收目录中是否有供数文件到达;接收端数据处理装置,用于提取接收端文件检测装置登记的待处理任务,执行装载导入。应用本发明能够有效地解决了新增接口的重复编制问题,减少了各类资源成本。
文档编号G06F17/30GK102637214SQ20121013491
公开日2012年8月15日 申请日期2012年4月28日 优先权日2012年4月28日
发明者李宁, 杨煜杰, 潘玉峰, 王雍, 许宜, 邹沙豪 申请人:中国工商银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1