基于数据包的远程数据增量同步方法和装置的制作方法

文档序号:7870080阅读:267来源:国知局

专利名称::基于数据包的远程数据增量同步方法和装置的制作方法
技术领域
:本发明涉及数据库
技术领域
,特别涉及一种基于数据包的远程数据增量同步方法和装置。
背景技术
:远程数据同步是指跨网段的两个数据库系统保持数据的一致性。源系统一般为部署在前端的业务系统数据库,而目的系统一般为用于支持决策分析的OLAP数据集市或者数据仓库系统。前端业务系统数据库与后端数据中心的连接需要穿透防火墙。现有的远程数据同步系统存在有以下问题1、远程数据传输手段固定单一,无法应对各种复杂情况。远程数据传输可以采用Web服务、JMS消息中间件以及FTP等各种方式。Web服务的方式可以实现数据的实时同步传输,但只能传输少量数据,适用于数据零星变化的场景,且无法保证数据投递的质量JMS消息中间件通用适用于传输少量数据,但可以保证数据在恶劣的网络环境下也能达到目的;FTP可以传输较大规模的数据量,并可以支持断点续传。这三种方式各有优劣,现有的远程数据传输方法只能采取其中一种方式,无法应对不同的网络环境和数据同步需求下各种复杂的情况。2、远程数据传输前端采用的增量数据采集器有一定的局限性。在数据库中,经常需要对原始数据进行插入、删除或修改等操作,这些操作的对象被称为增量数据。在某些情况下,需要将一些原始表的增量数据同步到其它一些表中,使这些表的数据保持一致;还有一些情况,需要详细了解一些原始表的变化,及时将这些变化的数据提交到数据仓库中,用于数据分析和挖掘,上述情况下,需要进行增量数据采集。现有的增量数据采集实现的方法主要有触发器、时间戳、全表抽取、全表比对、日志表、闪回查询(flashback)等。这些机制存在以下缺点和不足触发器方式需要源系统进行侵入,会严重损伤源系统的性能,而且有时这种侵入是被客户禁止的。时间戳的方式要求源系统所有的表需要具备时间戳字段,如果没有需要额外添力口,对源系统的侵入较大,甚至需要修改源系统的业务代码。此外,该方式对数据删除操作的判断与更新实现较复杂。全表抽取实际上是放弃增量抽取的思路,直接进行全表抽取,对于大表来说抽取效率很低。全表比对的方式需要逐条比较原始表和目标表的记录,将新增和修改的记录读取出来,效率最低。日志表的做法是在源数据库中创建业务日志表,当特定需要监控的业务数据发生变化时,由相应的业务系统程序模块来更新维护日志表内容。增量抽取时,通过读日志表数据决定加载哪些数据及如何加载。日志表的维护需要由业务系统程序用代码来完成。对源系统具有极大的入侵性,增量抽取效率高但实现复杂。闪回查询(flashback):0racle9i以上版本的数据库系统提供了闪回查询机制,允许用户查询过去某个时刻的数据库状态。这样,抽取进程可以将源数据库的当前状态和上次抽取时刻的状态进行对比,快速得出源表数据记录的变化情况。但这种方式需要特定DBMS(Databasemanagementsystem,数据库管理系统)的依赖,并且需要源系统支持闪回查询,应用范围较窄。
发明内容本发明的主要目的在于,针对上述现有技术中的不足,提供一种基于数据包的远程数据增量同步方法和装置,通过分析源数据库的操作日志,定时将数据库中发生增、删、改的记录提取出来形成包含增量记录的数据包,然后根据网络状况和数据同步需求,将数据包以JMS或FTP的方式,利用消息中间件或FTP客户端/服务器端产品,并在一定的配置管理支持下,将数据包传输给目标数据库系统。为实现上述发明目的,本发明采用以下技术方案。本发明提供一种基于数据包的远程数据增量同步方法,包括以下步骤获取源数据库的DML;将所述DML导出为数据包;将所述数据包远程同步到目标数据库;将所述数据包解析成SQL语句和变更数据;将所述SQL语句和变更数据更新到目标数据库。本发明还提供一种基于数据包的远程数据增量同步装置,包括获取模块,用于获取源数据库的DML;数据包生成模块,用于将所述DML导出为数据包;同步模块,用于将所述数据包远程同步到目标数据库;解析模块,用于将所述数据包解析成SQL语句和变更数据;入库模块,用于将所述SQL语句和变更数据更新到目标数据库。相比于上述现有技术,本发明具有以下有益效果。本发明前端抽取程序形成的数据包,可以选择以JMS或者FTP的方式送达目的端。JMS基于消息中间件,可以保证零星和少量数据的远程实时投递;FTP支持断点续传,适合大规模数据的远程传输,两者互为补充,保证了远程同步过程的稳定性。而且,数据包既是前段抽取程序和远程同步程序的交接点,又作为源端系统增量数据的备份,可以永久保存起来,这样即使在网络环境极其恶劣甚至网络访问受限的情况下,也能采取线下的方式将保存有数据包的物理介质送达目的端,具有传统远程数据同步或传输装置所不具备的功倉泛。图1是本发明实施例中基于数据包的远程数据增量同步方法的流程图。图2是图1所示实施例中获取源数据库的DML的流程图。图3是本发明实施例中基于数据包的远程数据增量同步装置的结构图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施例方式以下将结合附图及具体实施例详细说明本发明的技术方案,以便更清楚、直观地理解本发明的发明实质。图1是本发明实施例中基于日志捕获的增量数据采集方法的流程图;图2是图1所示实施例中获取源数据库的DML的流程图。参照图1和图2所示,本发明实施例首先提供一种基于数据包的远程数据增量同步方法,包括以下步骤51:获取源数据库的DML;52:将DML导出为数据包;53:将所述数据包远程同步到目标数据库;54:将所述数据包解析成SQL语句和变更数据;55:将所述SQL语句和变更数据更新到目标数据库。DML是指DataManipulationLanguage,即数据操纵语言,它是SQL的分类之一,用于记录数据库的状态变化。SQL语句是指数据库语句,用于记录对数据库中的数据进行增力口、删除、修改和查询等操作及操作对象。在步骤SI中,获取源数据库的DML的步骤具体包括以下几个子步骤511:获取所需监听的表,并创建变更表;512:创建日志表,用于记录DML;513:监听数据库日志,得到数据更新操作;514:将数据更新操作还原为完整的SQL语句和变更数据;515:将变更数据写入变更表,将SQL语句写入日志表。上述各步骤中,所需监听的表称为目标表。目标表可以是源数据库系统中特定的某一个数据表,也可以是所有指定类型的一批数据表。变更表与要监听的目标表一一对应,结构相同,用于临时存储目标表在本次监听过程中产生的变更数据。在步骤SI中,获取所需监听的表,并创建变更表的步骤是通过读取数据库字典以获取目标表的结构,然后创建与目标表相对应的变更表。Oracle数据库中实施这一步骤,需要执行以下语句selecttable—namefromdba—tableswhereowner=....selectname,length,type#,charsetformfromsys.col$whereobj#=(selectobj#...)orderbyintcol#若数据库为SQLserver,需执行以下语句selectnamefromsysobjectswherextype=’U’anduid=(selectuidfromsysuserswherename=...)selectname,length,xtypefromsyscolumnswhereid=(selectidfrmosysobjectswherename=tabIeNameanduid=(selectuidfromsysuserswherename=username))0实际上,在进行步骤SI之前,数据库管理员还需要进行登录操作,进行身份识别,确保数据库系统的安全性。在步骤S12中,在数据库系统中创建名为MY_CDC_LOG_TABLE或类似名称的日志表,用于临时记录增量DML。在步骤S13中,监听数据库日志具体操作为根据用户设置的监听周期,启动监听线程。对于ORACLE数据库,监听线程使用LOGMNR包相关函数,监听ORACLE的日志记录,得到数据变更操作(包括insert、update和delete语句);对于SQLSERVER,监听线程使用相关数据字典监听日志记录,得到数据变更操作。Oracle数据库中读取日志信息需要执行以下语句selectname,COMPLET10N_TIMEfromv$archived_logwhere...selectv$logfile.memberfromv$logfile,v$logwherev$logfile.group#=v$log.group#andv$logfile.status=’CURRENT’selectseg_owner,table_name,sql_redo,timestamp,row_id,operation,data_obj#fromv$logmnr_contentswhereDATA_0BJ#in(表序号..)andoperationin(’INSERT’,’DELETE’,’UPDATE’)selectseg_owner,seg_name,sql_redo,timestamp,row_id,operation,data_obj#from...。SQLServer数据库中读取日志信息需要执行以下语句selectallocunitname,operation,[RowlogContents0]asrO,[RowlogContentsI]asrl,[RowlogContents2].....[R…4]asr4,[CurrentLSN]from::fn_dblog(null,null)whereallocunitnamelikeuserName.tableNameandnotallocunitnamelikeuserName.tableName_cdcandoperationin(’Lop_Insert_Rows’,’Lop—Delete—Rows’,’Lop—Modify—Row’,’Lop—Modify—Columns’)…select[objectName],operation,[CurrentLSN]frmo::fn_dblog(null,null)where[objectName]like·…。在步骤S14中,将数据更新操作还原为完整的SQL语句和变更数据的步骤具体为,监听线程通过分析日志和相关数据字典,将数据变更操作还原为完整的SQL语句和变更数据。变更数据还原SQL语句,在Oracle中需要执行以下语句selectobj#fromsys.obj$wherename=’table—name’andowner#=(selectuser#fromsys.user$wherename=’user—name’)selectc.column_namefromdba_cons_columnsc,dba_constraintstwherec.constraint—name=t.constraint_nameandt.constraint_type=’P’andt.table_name=’table—name’andc.owner=’user—name’。SQLServer则需要执行以下语句selectcolumn_namefrominformation_schema.constraint_column_usagewhereconstraint—name=(selectconstraint—namefrominformation_schema.table_constraintswhereconstraint_type=’PRIMARYKEY’andtable—schema=userName.tableName)。在步骤S15中,将变更数据写入变更表,将SQL语句写入日志表时,监听线程按照一定周期将获取到的变更数据写入变更表,将SQL语句写入MY—CDC—LOG—TABLE日志表。在步骤S2中,导出为数据包,该数据包包括XML文件和CSV文件,其中XML文件记录所有数据更新操作的SQL语句,CSV记录所有增加和修改的变更数据。数据包可作为下游应用程序的输入以完成后续的数据传输和抽取处理。在步骤S3中,将数据包远程同步到目标数据库的步骤具体包括根据网络状况和同步紧急度需求,选择采用JMS或者FTP的方式进行远程同步。具体地,对于FTP方式,在目标数据库中建立数据包目录,部署FTP客户端程序和FTP服务器端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过FTP协议,访问远程FTP服务器端,将数据包文件上传,并等待接收端回复信息。接收端收到所述数据包文件后,将数据包文件保存并将所述文件信息记载到接收端本地配置数据库中,然后通过FTP命令的方式向接收端反馈回执,即发送确认信息。基于FTP协议数据远程同步处理流程如下UFTP客户端扫描数据;2、将待发送的数据包信息计入FTP客户端的配置库,用于纠错或重传;3、连接FTP服务器;4、上传数据包,并发送命令;5、FTP服务器接收上述命令,并下载数据包;6、断开FTP连接;7、将接收到的数据包信息计入FTP服务器的配置库,用于纠错或重传;8、保存数据包。对于JMS方式,前端采集器部署发送端程序,目的端部署接收端程序,发送端按照一定的时间周期,执行数据扫描,一旦发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过JMS协议,利用消息中间件将数据包文件作为消息附件进行投递,并等待接收端回复信息。接收端收到信息后,将文件保存并将文件信息记载到本地配置数据库中,然后向接收端反馈回执,即发送确认信息。基于JMS协议数据远程同步处理流程如下UJMS发送端扫描数据;2、将待发送的数据包信息计入JMS发送端的配置库,用于纠错或重传;3、JMS消息生产者服务;4、JMS发送端的ActiveMQ以附件形式上传数据包;5、JMS接收端的ActiveMQ下载数据包;6、JMS消息消费者服务;7、将接收到的数据包信息计入JMS接收端的配置库,用于纠错或重传;8、保存数据包。在上述步骤S4和S5中,将数据包解析成SQL语句和变更数据和将SQL语句和变更数据入库到目标数据库的步骤具体为目标数据库接收到数据包后,对于XML格式,解析SQL语句,并按照预定规则转化为自身的数据库格式后入库;对于CSV格式,则按照目标数据库相应的数据字典信息构造入库操作语句执行入库操作。通过以上所述,本实施例的远程数据增量同步方法通过分析源数据库的操作日志,不仅可以定时将数据库中发生增、删、改的记录提取出来形成包含增量记录的数据包,而且可以根据网络状况和数据同步需求,将数据包以JMS或FTP的方式,利用消息中间件或FTP客户端/服务器端产品,并在一定的配置管理支持下,将数据包传输给目标数据库系统。图3是本发明实施例中基于数据包的远程数据增量同步装置的结构图。参照图3所示,本实施例提供一种基于数据包的远程数据增量同步装置,其主要包括获取模块I,用于获取源数据库的DML;数据包生成模块2,用于将DML导出为数据包;同步模块3,用于将数据包远程同步到目标数据库;解析模块4,用于将数据包解析成SQL语句和变更数据;入库模块5,用于将SQL语句和变更数据入库到目标数据库。具体地,上述数据包生成模块具体用于导出数据包文件,包括XML文件和CSV文件,其中XML文件记录所有DML中的SQL语句,CSV记录所有增加和修改的变更数据。同步模块具体用于根据网络状况和同步紧急度需求,选择采用JMS或者FTP的方式进行远程同步。对于FTP方式,建立数据包目录,前端采集器部署发送端程序,目的端部署接收端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过FTP协议,访问远程FTP服务器端,将数据包文件上传,并等待接收端回复信息。接收端收到所述数据包文件后,将数据包文件保存并将所述文件信息记载到接收端本地配置数据库中,然后通过FTP命令的方式向接收端反馈回执。对于JMS方式,建立数据包目录,部署发送端程序和接收端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过JMS协议,利用消息中间件将数据包文件作为消息附件进行投递,并等待接收端回复信息。接收端收到信息后,将文件保存并将文件信息记载到本地配置数据库中,然后向接收端反馈回执,即发送确认信息。本实施例的入库模块具体用于目标数据库接收到数据包后,对于XML格式,解析SQL语句,并按照预定规则转化为自身的数据库格式后入库;对于CSV格式,则按照目标数据库相应的数据字典信息构造入库操作语句执行入库操作。综上所述,本发明前端抽取程序形成的数据包,可以选择以JMS或者FTP的方式送达目的端。JMS基于消息中间件,可以保证零星和少量数据的远程实时投递;FTP支持断点续传,适合大规模数据的远程传输,两者互为补充,保证了远程同步过程的稳定性。而且,数据包既是前段抽取程序和远程同步程序的交接点,又作为源端系统增量数据的备份,可以永久保存起来,这样即使在网络环境极其恶劣甚至网络访问受限的情况下,也能采取线下的方式将保存有数据包的物理介质送达目的端,具有传统远程数据同步或传输装置所不具备的功能。以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的
技术领域
,均同理包括在本发明的专利保护范围内。权利要求1.一种基于数据包的远程数据增量同步方法,其特征在于,包括以下步骤获取源数据库的DML;将所述DML导出为数据包;将所述数据包远程同步到目标数据库;将所述数据包解析成SQL语句和变更数据;将所述SQL语句和变更数据更新到目标数据库。2.如权利要求1所述的远程数据增量同步方法,其特征在于,所述将DML导出为数据包的步骤具体包括导出数据包文件,包括XML文件和CSV文件,其中XML文件记录所有DML中的SQL语句,CSV记录所有增加和修改的变更数据。3.如权利要求1所述的远程数据增量同步方法,其特征在于,所述将数据包远程同步到目标数据库的步骤包括根据网络状况和同步紧急度需求,选择采用JMS或者FTP的方式进行远程同步。4.如权利要求3所述的远程数据增量同步方法,其特征在于,所述将数据包远程同步到目标数据库的步骤具体包括对于FTP方式,建立数据包目录,部署FTP客户端程序和FTP服务器端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过FTP协议,访问远程FTP服务器端,将数据包文件上传,并等待接收端回复信息,接收端收到所述数据包文件后,将数据包文件保存并将所述文件信息记载到接收端本地配置数据库中,然后通过FTP命令的方式向接收端反馈回执;对于JMS方式,建立数据包目录,部署发送端程序和接收端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过JMS协议,利用消息中间件将数据包文件作为消息附件进行投递,并等待接收端回复信息,接收端收到信息后,将文件保存并将文件信息记载到本地配置数据库中,然后向接收端反馈回执。5.如权利要求1所述的远程数据增量同步方法,其特征在于,所述将SQL语句和变更数据入库到目标数据库的步骤包括目标数据库接收到数据包后,对于XML格式,解析SQL语句,并按照预定规则转化为自身的数据库格式后入库;对于CSV格式,则按照目标数据库相应的数据字典信息构造入库操作语句执行入库操作。6.一种基于数据包的远程数据增量同步装置,其特征在于,包括获取模块,用于获取源数据库的DML;数据包生成模块,用于将所述DML导出为数据包;同步模块,用于将所述数据包远程同步到目标数据库;解析模块,用于将所述数据包解析成SQL语句和变更数据;入库模块,用于将所述SQL语句和变更数据更新到目标数据库。7.如权利要求6所述的远程数据增量同步装置,其特征在于,所述数据包生成模块具体用于导出数据包文件,包括XML文件和CSV文件,其中XML文件记录所有DML中的SQL语句,CSV记录所有增加和修改的变更数据。8.如权利要求6所述的远程数据增量同步装置,其特征在于,所述同步模块具体用于根据网络状况和同步紧急度需求,选择采用JMS或者FTP的方式进行远程同步。9.如权利要求8所述的远程数据增量同步装置,其特征在于,所述同步模块还用于对于FTP方式,建立数据包目录,部署FTP客户端程序和FTP服务器端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过FTP协议,访问远程FTP服务器端,将数据包文件上传,并等待接收端回复信息,接收端收到所述数据包文件后,将数据包文件保存并将所述文件信息记载到接收端本地配置数据库中,然后通过FTP命令的方式向接收端反馈回执;对于JMS方式,建立数据包目录,部署发送端程序和接收端程序,发送端按照一定的时间周期,执行数据扫描,若发现数据包目录中存在新的数据包文件,先将文件信息记载到发送端本地配置数据库中,然后通过JMS协议,利用消息中间件将数据包文件作为消息附件进行投递,并等待接收端回复信息,接收端收到信息后,将文件保存并将文件信息记载到本地配置数据库中,然后向接收端反馈回执。10.如权利要求6所述的远程数据增量同步装置,其特征在于,所述入库模块具体用于目标数据库接收到数据包后,对于XML格式,解析SQL语句,并按照预定规则转化为自身的数据库格式后入库;对于CSV格式,则按照目标数据库相应的数据字典信息构造入库操作语句执行入库操作。全文摘要本发明涉及基于数据包的远程数据增量同步方法,包括步骤获取源数据库的DML;将DML导出为数据包;将数据包远程同步到目标数据库;将数据包解析成SQL语句和变更数据;将SQL语句和变更数据更新到目标数据库。本发明可以定时将数据库中发生增、删、改的记录提取出来形成包含增量记录的数据包,然后根据网络状况和数据同步需求,将数据包以JMS或FTP的方式,利用消息中间件或FTP客户端/服务器端产品,并在一定的配置管理支持下,将数据包传输给目标数据库系统,从而保持远、近端数据库数据的一致性。文档编号H04L29/08GK103067483SQ20121056886公开日2013年4月24日申请日期2012年12月25日优先权日2012年12月25日发明者戴浩申请人:广东邮电职业技术学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1