- SuperSync产品原理
目前此类软件没有相应的技术标准,因此特将SuperSync软件的原理展示给大家,作为评判的标准。
示意图:
如上图所示,SuperSync在Data Source端和Data Target端分别安装Agent进程,Source端的Agent进程对ORACLE日志进行监控,发现改变及时对目标数据库进行更新。
当应用系统在Data Source端向数据库进行任何操作时时,这些信息都将在Redo Log中保存,SuperSync Agent通过对实时获取的Log日志进行分析,获得本次操作的交易指令和交易数据,然后将这些交易指令和交易数据经过格式转化生成DXF数据格式,并实时通过网络传送到Data Target系统。
Data Target系统的SuperSync Agent接收数据库包,经过校验码检查,确认正确的数据库包后,调用Oracle函数按照交易的先后顺序在Data Target系统中执行该交易。
-
- 日志抓取(Data Capture)
SuperSync对数据的抓取是通过安装在Data Source端的Agent模块定时分析Oracle Redo Log来获取Data Source端的交易类型及数据的。
SuperSync Agent在判断Data Source端的Oracle系统是否有新的交易产生时是通过定期检查Oracle Controle file中记录的当前SCN号来判断的,这样避免每次检都通过读取log文件来判断否有新的交易产生时造成的系统影响。
在Controle file中确认有新的交易产生时,可以同时获得当前的Redo Log 组,以及最新日志在日志文件的最新位置。
SuperSync Agent模块根据这些信息将上次抓取时记录的日志位置与本次读取的最新位置之间的Log读取并加以分析。然后将这些数据保存在Online Log Cache文件中,等待下一步作交易合成处理。
- 的优势:
与其他类似日志复制产品相比,SuperSync对日志进行分析,得到交易信息再进行传送;而其他类似产品不对日志作分析,传送全部日志,然后在目标端通过日志作Recover, 这样一来,不仅传送数据量大,而且目标端数据库不能打开。
-
- 日志分析(Analyze)
Oracle数据库的所有更改都记录在日志中,其中记录了对数据库中的每一个变化。
当我们候需要需要了解数据库中所作的交易时,一个最有效实用而又低成本的方法就是分析Oracle数据库的日志文件。
SuperSync Agent中集成了DSG的优秀日志分析功能,该功能完全不同于oracle提供的Logminer日志分析工具,在性能和功能上都大大提高,主要体现在系统性能的优化上,大幅度提高日志分析的速度,使得对于高并发业务系统的复制成为可能。按照SuperSync的日志分析设计目标,每秒能够分析的日志量达到10M/s。
SuperSync通过对日志的分析,得到该数据库中的每个SQL指令,并将这些SQL指令生成DXF(DSG Extend Format)格式的表达方式。
DXF格式是DSG公司的专有技术,该技术是DSG公司用来表达SQL指令的方式,该数据格式能够通过DSG的专有转换算法能够直接转换为ORACL的内部数据表达格式,从而在分析和转载时需要最小的转化,提高分析和装载速度,减少资源占用、丰富能够表达的各种数据类型。
-
- 交易合成(Synthesize)
通过ORACLE REDO LOG分析的交易指令存在如下的几个特点:
(1)这些指令是交叉出现的,属于一个交易(Transaction)的多条SQL指令是非连续存储的,多个交易的SQL之间是相互穿插的;
(2)Redo log中记录了所有的commit的交易以及没有commit的交易;
所以,为了提高系统的可控制性、保证逻辑完整性、避免数据丢失,最好将复制的最小单位为一个交易(Transaction),而不是以单个SQL指令为复制单位,这样在Data Target端的交易装载更加容易控制。
同时,对于复制的数据而言,只有那些Commit的数据对于Data Target端系统是有意义的,而对于那些Rollback的数据无需复制到Data target系统上。
所以SuperSync在复制过程中不是复制每个SQL语句,而是对抓取的数据进行交易整合后以交易(Transaction)为单位进行复制,同时只复制COMMIT的交易。
如上图所示,在Online Log Cache文件中,包括Commit的交易,没有Commit的交易和Rollback的交易。交易合成模块首先按照交易序号对SOL语句进行划分,每个交易包含多条SOL语句。然后,以交易为单位进行处理,将已经Commit的交易,传至传输处理模块;将未提交的交易保存在本地,一旦通过日志得知保存的未提交交易已提交,立即将该交易发送到传输处理模块;对Rollback的交易作丢弃处理。
- 的优势:
SuperSync是以交易为单位进行传输的,而不是以SOL语句为单位进行传输的,更容易保证数据的一致性和完整性。
-
- 交易传输
SuperSync技术为了保证数据传输的安全、可靠,在传输处理上作了特殊的处理与支持:
- 数据在传输之前首先存入Data Source端的Cache,传输进程(Export Process)从Cache中读取交易数据封装为TCP/IP数据包传送给Data target端的Import进程。
(2)在data target端,Import进程在收到传输的交易数据包后,首先存入Queue,然后由Load进程从Queue中严格按照交易的顺序装载交易信息。
如上图所示,负责传输的进程(Export Process)从本地队列中按照先进先出的原则抓取需要传输的交易,将交易数据封装成一个数据包后通过TCP/IP协议传递给对端系统。在封装的数据包的包头部分描述了包的大小。
对端系统在接受到传来的数据包后,首先根据包头描述的包大小进行传输的合法性检查,判断是否传输完整。
-
- 数据装载
在传统的复制技术中,常用的数据装载方式是采用Oracle 的SQL接口,通过Insert、Update、Delete等SQL语句实现数据的装载。这种方式在通用性上很好,但关键在于性能问题非常突出。
SQL语句的执行需要经过parse、plan、格式转换等过程,造成大量的系统开销。尤其是update和Delte操作的大量Where子句操作需要进行复杂的查询定位任务,从而导致装载性能低下,对处理能力的要求比生产系统的还高。
DSG SuperSync在设计之初就定位于电信级大数据量系统的应用,因此在装载性能上进行了大幅度的改善,使得装载端的性能和处理能力需求降至最低。
在其中DSG SuperSync采用了两个关键的技术提高了装载速度:
(1)采用DXF数据格式的装载;
(2)采用Rowid mapping的方式实现快速定位;
DXF(DSG Extend Format)格式是DSG公司的专有技术,该技术是DSG公司用来表达SQL指令的方式,该数据格式能够通过DSG的专有转换算法能够直接转换为ORACL的内部数据表达格式,从而在分析和转载时需要最小的转化,提高分析和装载速度,减少资源占用、丰富sql语句的表达方式。
Oracle数据库系统在设计上提供了4个层次的接口,其中包括User层,SQL层,Transformation层和I/O层。其结构为:
在这四层当中,当采用SQL接口进行数据装载时,调用的是User层,
而DSG SuperSync通过DXF数据格式装载时,调用I/O层直接将数据通过Oracle的最底层函数写入系统中,所以DSG SuperSync在装载层上有一定优势;
对于交易中的操作,存在着大量的Where子句操作,在采用标准SQL语句执行这些操作时,系统需要首先定位目标记录所在的数据文件的位置信息,这将带来大量的索引查询开销,当并发执行数千条指令时,系统的开销将变得非常庞大。
DSG SuperSync工具不采用该方式实现装载数据的定位,而是通过ROW Mapping的方式实现记录的快速定位:
当SuperSync从源端Log文件中读取交易数据时,将获得该交易对应记录的所在位置,用rowid表示为rowid_ds;
当该交易在目标端装载时,系统不翻译为Where子句,而是去通过保存在目标端的row mapping表获得对应目标端该记录的所在位置rowid,记录为rowid_dt。
从而在目标端装载时通过rowid能够直接定位于该数据需要写入的位置。避免了大量的索引查找时间。
每条记录的row mapping信息是在该记录执行insert操作、sql loader或首次批量同步时建立起来的。
用户评论
暂无评价