基于OracleStreams技术的准实时数据增量分发中间件及方法

文档序号:7822561阅读:987来源:国知局
基于Oracle Streams技术的准实时数据增量分发中间件及方法
【专利摘要】本发明公开了基于Oracle Streams技术的准实时数据增量分发中间件及方法,数据源模块,用于捕获操作信息生成捕获消息队列,并传递至应用消息队列,对应用消息队列中的消息进行解析,然后传输至TCP服务器上的消息接收与处理模块;消息接收与处理模块,用于接收TCP消息,将消息解析成服务器可识别的异步处理消息,根据设定转换清洗规则,对数据进一步进行处理后传送至数据潭模块;数据潭模块,用于接收处理后的数据更新,并将数据同步至多个异构的目标数据库。基于Oracle Streams技术的数据增量分发中间件,确保分布式环境下数据更新的实效性,同时有效地降低了数据同步对生产库造成的额外负载,保证了生产库性能。
【专利说明】基于Oracle Streams技术的准实时数据増量分发中间件及方法

【技术领域】
[0001]本发明涉及一种准实时数据增量分发中间件,特别涉及一种基于Oracle Streams数据复制技术的数据增量分发中间件及方法。

【背景技术】
[0002]随着多种信息系统在各行业内的广泛应用,企业中的业务信息急速增长,数据量规模巨大到无法通过目前主流软件工具,在合理时间内达到擷取、管理、处理、整理成为帮助企业经营决策的资讯。为了实现商业智能,大量企业选择构建企业级的大数据分析平台,大数据分析平台往往会涉及到许多不同的业务系统,涵盖多种结构数据源。为保障大数据分析平台顺利构建,需配套建设大数据抽取项目,以保证系统数据可以实现安全、快速抽取,满足大数据分析业务需求。目前针对大数据分析平台的数据增量抽取需求,相继产生了大量的数据增量抽取解决方案。
[0003]在专利【CN 102129478A】中,数据库同步方法和系统通过实时捕捉系统数据的变化信息及对应的事物信息,将其保存到中间数据库中,根据中间数据库变化的信息确定需要同步的数据,最终实现数据的同步处理。虽然该数据库同步方法和系统可以实现数据同步,但是数据库同步方法和系统不能够在同步过程中介入数据的清洗与转换,因此无法实现在同步时进行“脏数据”的清理。
[0004]在专利【CN 103220328A】中,异构实时历史数据库同步方法和系统通过客户端与服务端建立实时数据通道和批量数据通道的方式,最终实现在分布式系统中的数据同步分发。此方法和系统仅涉及通信领域的数据同步功能,并不能完全满足多数分析平台的数据增量抽取需求。
[0005]在专利【CN 102355389A】中,一种应用于物联网系统的硬件中间件为物联网系统提供了一种更加灵活的组网方式,实现一种无处不在的连接。采用中间件解决方案为构建大数据分析平台的数据增量抽取需求提供了一种解决问题的思路。
[0006]在专利【CN 102609463B】中,一种基于准实时平台的数据集群管理系统实现了准实时平台海量数据的集中存储与共享。准实时系统是采用网络传输的方式进行数据采集与传递,把数据集中存储的解决方案,并未实现数据的增量分发与同步。


【发明内容】

[0007]为解决现有技术存在的不足,本发明公开了一种基于Oracle Streams (OracleStreams是Oracle提供的一种受管理的信息流)技术的数据增量分发中间件及方法,基于Oracle Streams的重做日志,为源数据更新生成捕获消息队列和应用消息队列;数据增量分发中间件通过捕获LCR(Logical Change Record)消息、解析消息,并通过TCP协议转发到TCP服务器;TCP服务器用于接收并重新解析消息,对解析出的数据进行增量分发操作,以形成备份数据库,解决容灾问题,也可以进行数据的ETL (抽取,清洗,转换,加载)等操作,以构建数据仓库为企业提供BI服务。
[0008]为实现上述目的,本发明的具体方案如下:
[0009]基于Oracle Streams技术的准实时数据增量分发中间件,包括数据源模块、消息接收与处理模块及数据潭模块;
[0010]所述数据源模块,用于捕获操作信息生成捕获消息队列,经过消息传递为应用消息队列,对应用消息队列中的消息进行处理后再对消息进行解析,封装及分发,然后传输至消息接收与处理模块;
[0011 ] 所述消息接收与处理模块,用于接收TCP消息,将消息解析成服务器可识别的异步处理消息,根据设定转换清洗规则,对数据进一步进行处理后传送至数据潭模块;
[0012]所述数据潭模块,用于接收处理后的数据更新的多个异构的目标数据库。
[0013]所述数据源模块,包括捕获进程模块、应用进程模块及DML处理函数模块;
[0014]所述捕获进程模块,通过捕获重做日志的方式实时捕获数据的更新,捕获任何插入、删除、更新操作,生成捕获消息队列,捕获消息队列经过消息传递至应用消息队列;
[0015]所述应用进程模块,用于对应用消息队列中的消息进行提取并传送至DML处理函数模块;
[0016]所述DML处理函数模块,用于对应用进程模块处理后的消息进行解析、封装及分发。
[0017]所述消息接收与处理模块,包括TCP消息接收解析模块及异步消息处理模块;
[0018]所述TCP消息接收解析模块,用于接收DML处理函数模块输出的TCP消息,将消息解析成服务器可识别的异步处理消息传输至异步消息处理模块;
[0019]所述异步消息处理模块根据其设定转换清洗规则对数据进行处理过滤掉错误的或者不一致的“脏数据”;
[0020]所述异步消息处理模块包括空值处理模块、规范数据格式模块、拆分数据模块、数据正确验证模块及数据清洗模块;
[0021]所述空值处理模块,用于捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库;
[0022]所述数据规范格式模块,对于数据源中时间、数值、字符等数据,进行字段格式约束定义,可自定义加载格式;
[0023]所述拆分数据模块,用于依据业务需求对字段进行分解;
[0024]所述数据验证模块,用于数据正确性验证;
[0025]所述数据清洗模块,用于针对“脏数据”进行清洗,获得干净数据。
[0026]一种基于Oracle Streams技术的准实时数据增量分发方法,包括以下步骤:
[0027]I)步骤201,用户在数据源模块配置Oracle Streams (—种受管理的信息流),捕获进程模块挖掘重做日志,捕获用户的所有插入,删除,更新的DML操作,产生捕获消息队列;
[0028]2)步骤202,消息从捕获消息队列传播至应用消息队列,应用进程模块从应用消息队列中提取消息,并将消息交由DML处理函数模块处理,DML处理函数模块是由Java程序生成的存储过程实现,用来解析LCR消息并将其封装成TCP消息发送至TCP服务器;
[0029]3)步骤203,消息接收与处理模块,通过TCP消息接收解析模块接收来自DML处理函数模块发送的TCP消息,将消息解析成服务器可以识别的异步消息,并将消息交由异步消息处理模块处理;
[0030]4)步骤204,异步消息处理模块,创建大量处理线程,然后将数据的处理交由多个线程并发处理,有效地提高了数据处理效率;异步消息处理模块通过空值处理模块,规范数据格式模块,拆分数据模块,数据正确验证模块,数据清洗模块,共同完成数据的转换清洗规则,在所有的处理线程中这些模块都将会串行方式执行,保证最终得到“干净”的数据;数据处理完成后,异步消息处理模块将数据发送至数据潭模块;
[0031]5)步骤205,通过数据潭模块,将处理后的“干净”数据同步至多个异构目标数据库中,方便企业数据分析。
[0032]所述步骤201中,Oracle Streams的配置可以在同一数据库服务器上进行,也可以在不同的数据库服务器之间进行。
[0033]所述步骤201和202中,数据源模块可以分布到不同地点,不同的服务器上,通过发送TCP消息的方式,将数据传送至服务器进行处理,因此不会对生产库产生压力。
[0034]所述步骤203中,基于Oracle Streams技术的准实时数据增量分发中间件,利用TCP建立从数据源到TCP服务器的网络连接传输数据,采用可靠的网络连接方式,保证了数据更新的准实时性,并且避免了数据更新消息的丢失。
[0035]所述步骤203中,基于Oracle Streams技术的准实时数据增量分发中间件不仅可以进行本地数据同步,而且可以实现异地数据同步。
[0036]所述步骤204中,数据处理是通过多线程方式批量处理,提高了数据的处理的速度,同时保证数据正确合理,极大地方便了企业进行数据分析。
[0037]所述步骤205中,数据增量分发中间件支持将数据同步至各种异构的数据库中。
[0038]本发明的有益效果:
[0039]本发明提供了异构数据库之间的数据冗灾和数据仓库解决方案,具体为分布式环境下多个数据库数据共享的解决方案。基于Oracle Streams技术,通过捕获重做日志的方式实时捕获数据的更新,并增量分发到各目标数据库,实现了数据共享。
[0040]实现了数据清洗、转换等功能,保证数据的正确性和一致性。针对异构数据源,可以按照预定的转换清洗规则进行转换、清洗等操作,从而保证数据的正确性和一致性。
[0041]确保分布式环境下数据更新的实效性。TCP服务器采用异步多线程的方式批量处理数据,有效地提高了数据处理的效率,实现了准实时的数据共享。
[0042]缓解了生产库的工作负载。基于Oracle Streams技术的数据增量分发中间件,只需对日志进行处理,无需直接对数据库进行扫描,有效地降低了数据同步对生产库造成的额外负载,保证了生产库性能。

【专利附图】

【附图说明】
[0043]图1为本发明的基于OracleStreams技术的数据增量分发中间件技术及系统的架构图;
[0044]图2为本发明的基于OracleStreams技术的数据增量分发中间件技术及系统的

流程图。【具体实施方式】
:
[0045]下面结合附图对本发明进行详细说明:
[0046]一种基于Oracle Streams技术的准实时数据增量分发中间件,如图1所示,由数据源模块101 (包括捕获进程模块1011,应用进程模块1012,DML处理函数模块1013)、消息接收与处理模块102(包括TCP消息接收解析模块1021、异步消息处理模块1022)以及数据潭模块103三部分组成;
[0047]所述的数据源模块101,主要负责挖掘日志,捕获数据更新操作,生成消息队列,解析LCR消息,重新封装数据更新消息,转发消息;数据源模块101的功能通过1011模块(捕获进程模块)、1012模块(应用进程模块),以及1013模块(DML处理函数模块)共同完成;捕获进程模块1011主要负责挖掘日志,捕获数据更新操作(包括所有的插入,删除,更新等DML操作),生成捕获消息队列;应用进程模块1012主要负责从应用消息队列读取LCR消息,将消息交由DML处理函数模块1013处理;DML处理函数模块1013主要负责解析LCR消息,将LCR消息封装成TCP消息,转发消息。数据源模块101将TCP消息发送至TCP服务器集中处理,有效降低了生产数据库的工作负荷。
[0048]所述的消息接收与处理模块102,主要负责接收TCP,解析TCP消息,处理更新消息,针对数据更新进行数据的转换和清洗,分发处理后的消息;消息接收与处理模块102的功能通过1021模块(TCP消息接收解析模块),1022模块(异步消息处理模块)共同完成;TCP消息接收解析模块1021主要负责接收TCP消息,将TCP消息解析成服务器可识别的异步处理消息;异步消息处理模块1022主要负责根据设定的数据转换清洗规则,对数据进行转换、清洗等操作,将错误的或者不一致的“脏数据”过滤掉,并转发处理后的数据。
[0049]所述异步消息处理模块采用异步多线程的方式处理数据,有效地提高了数据处理的效率;在异步消息处理模块中,用户可以介入任何期望的数据转换与清洗规则,以便得到用户期望的数据信息。
[0050]所述的数据潭模块103,主要负责将处理后的“干净”数据同步至多个异构的数据库中,实现了数据共享,方便企业进行数据分析。
[0051]数据更新消息的格式是有捕获的LCR消息解析而来的,因此数据增量分发中间件可以完全掌控数据更新消息的格式形式,以便于将最终处理后的数据同步至多个的异构数据库中。
[0052]—种基于Oracle Streams技术的准实时数据增量分发方法,如图2所示,它包括以下步骤:
[0053]步骤201,用户在生产数据库配置并创建Oracle Streams用于实时捕获数据更新,产生消息队列,将消息从捕获消息队列传播至应用消息队列;
[0054]步骤202,消息传播至应用消息队列,应用进程将消息交由DML处理函数模块1013处理,该模块将消息解析并封装成TCP消息,并发送至TCP服务器;
[0055]步骤203,TCP服务器通过1021模块(TCP消息接收解析模块)接收TCP消息,并将其解析成服务器可以识别的异步处理消息,同时将消息发送至1022模块(异步消息处理模块)处理;
[0056]步骤204,异步消息处理模块1022,根据预先定义的数据转换和清洗规则,批量处理数据更新;
[0057]步骤205,数据潭模块103接收处理过的“干净”数据,并将数据同步至多个异构数据库中,便于企业数据分析。
[0058]上述虽然结合附图对本发明的【具体实施方式】进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
【权利要求】
1.基于OracleStreams技术的准实时数据增量分发中间件,其特征是,包括数据源模块、消息接收与处理模块及数据潭模块; 所述数据源模块,用于捕获操作信息生成捕获消息队列,经过消息传递为应用消息队列,对应用消息队列中的消息进行处理后再对消息进行解析,封装及分发,然后传输至消息接收与处理模块; 所述消息接收与处理模块,用于接收TCP消息,将消息解析成服务器可识别的异步处理消息,根据设定转换清洗规则,对数据进一步进行处理后传送至数据潭模块; 所述数据潭模块,用于接收处理后的数据更新,并将数据同步至多个异构的目标数据库。
2.如权利要求1所述的基于OracleStreams技术的准实时数据增量分发中间件,其特征是,所述数据源模块,包括捕获进程模块、应用进程模块及DML处理函数模块; 所述捕获进程模块,通过捕获重做日志的方式实时捕获数据的更新,捕获任何插入、删除、更新操作,生成捕获消息队列,捕获消息队列经过消息传递至应用消息队列; 所述应用进程模块,用于对应用消息队列中的消息进行提取并传送至DML处理函数模块; 所述DML处理函数模块,用于对应用进程模块处理后的消息进行解析、封装及分发。
3.如权利要求1所述的基于OracleStreams技术的准实时数据增量分发中间件,其特征是,所述消息接收与处理模块,包括TCP消息接收解析模块及异步消息处理模块; 所述TCP消息接收解析模块,用于接收DML处理函数模块输出的TCP消息,将消息解析成服务器可识别的异步处理消息传输至异步消息处理模块; 所述异步消息处理模块根据其设定转换清洗规则对数据进行处理过滤掉错误的或者不一致的“脏数据”。
4.如权利要求3所述的基于OracleStreams技术的准实时数据增量分发中间件,其特征是,所述异步消息处理模块包括空值处理模块、规范数据格式模块、拆分数据模块、数据正确验证模块及数据清洗模块; 所述空值处理模块,用于捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库; 所述数据规范格式模块,对于数据源中时间、数值及字符数据,进行字段格式约束定义,可自定义加载格式; 所述拆分数据模块,用于依据业务需求对字段进行分解; 所述数据验证模块,用于数据正确性验证; 所述数据清洗模块,用于针对“脏数据”进行清洗,获得干净数据。
5.应用如权利要求1至4任一所述的基于OracleStreams技术的准实时数据增量分发中间件的方法,包括以下步骤: 1)步骤201,用户在数据源模块配置OracleStreams,捕获进程模块挖掘重做日志,捕获用户的所有插入,删除,更新的DML操作,产生捕获消息队列; 2)步骤202,消息从捕获消息队列传播至应用消息队列,应用进程模块从应用消息队列中提取消息,并将消息交由DML处理函数模块处理,DML处理函数模块是由Java程序生成的存储过程实现,用来解析LCR消息并将其封装成TCP消息发送至TCP服务器; 3)步骤203,消息接收与处理模块,通过TCP消息接收解析模块接收来自DML处理函数模块发送的TCP消息,将消息解析成服务器可以识别的异步消息,并将消息交由异步消息处理模块处理; 4)步骤204,异步消息处理模块,创建大量处理线程,然后将数据的处理交由多个线程并发处理,有效地提高了数据处理效率;异步消息处理模块通过空值处理模块,规范数据格式模块,拆分数据模块,数据正确验证模块,数据清洗模块,共同完成数据的转换清洗规则,在所有的处理线程中这些模块都将会串行方式执行,保证最终得到“干净”的数据;数据处理完成后,异步消息处理模块将数据发送至数据潭模块; 5)步骤205,通过数据潭模块,将处理后的“干净”数据同步至多个异构目标数据库中,方便企业数据分析。
6.如权利要求5所述的方法,其特征是,所述步骤201中,OracleStreams的配置在同一数据库服务器上进行,或者在不同的数据库服务器之间进行。
7.如权利要求5所述的方法,其特征是,所述步骤201和202中,数据源模块分布到不同地点,不同的服务器上,通过发送TCP消息的方式,将数据传送至服务器进行处理。
8.如权利要求5所述的方法,其特征是,所述步骤203中,利用TCP建立从数据源到TCP服务器的网络连接传输数据。
【文档编号】H04L29/06GK104506496SQ201410757034
【公开日】2015年4月8日 申请日期:2014年12月10日 优先权日:2014年12月10日
【发明者】肖宗水, 孔兰菊, 王振坤, 杨东 申请人:山大地纬软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1