转自:http://news.newhua.com/news1/program_database/2009/1223/091223153410872F8K68804G0274C9EG7HF0FB5F4F256897GG1F6B060_2.html?lt=common
在数据集成方面,Oracle主要有三大产品:(1)Oracle新收购的Golden Gate,主要强调数据的实时性,号称数据提取最快,对源端开销影响最小;(2)Oracle原有的产品ODI(Oracle Data Integrator),用于数据集成的绝大多数场景;(3)Data Quality/Profiling,主要在ETL时保证数据质量和分类的辅助工具。和IBM的相应产品家族相比,几乎一一对应。对于(2)和(3),IBM有收购的DataStage相应产品对应,对于(1)的实时性,IBM有MQ家族中的一个real-time版本对应。微软Microsoft有相应(2)(3)的产品,(1)还没有。
Golden Gate工作原理:在源数据库端(支持各种数据库)提取日志文件以获得变化的发生,如Oralce数据库就是监控Redo Log或Archieve Log,将变化的数据写入一个本地的跟踪文件Trail File(可以想象成一个TXT文件),然后将记录加密、压缩后路由到目的端的跟踪文件Trail File,最后在目标端用SQL写入目标数据库。在目标和源端的跟踪文件都有一个检查点记录最后一个成功的记录位置。说实话,Golden Gate的工作原理很简单,在国内ISV开发的应用中也有用完全类似的方法来实现功能,如银行业的前置机项目和电信的BOSS项目中导程控交换机的话单。
Golden Gate的适用面还是相对窄的,主要是强调实时性的地方,说白了就是ODI不能满足要求的地方,否则客户为什么不使用数据库内置的ODI工具,还非要额外花钱购买Golden Gate呢?Oracle提供的适用场景例子有银行信用卡欺诈检测、网上促销优化、基于位置的服务、SCM的改善等。
Oracle用了很多市场化的溢美之词来给Golden Gate贴金,搞清楚上面的工作原理后也就无需大惊小怪了。事务的可靠性是通过基于日志来提取变化实现的;最快的数据提取是通过近似记录的传递,大大加快了传递的频率来实现的;网络带宽占用小是通过由日志到记录再到压缩的记录来实现的。
Oracle研讨会上不能完全同意的观点:E-LT比ETL好,因为省掉了中间服务器。这完全是偷换概念。Oralce只不过将LT的功能放在目标数据库端的机器上而已。IBM的DataStage或Microsoft的Integration Service都可以,TL还是LT,反正工作量都少不了。
Oracle在会上举了3个例子,分别是BlackBerry的制造者RIM,全球很大的旅游分销者Sabre,以及据说排名美国第二位的网上零售商OverStock。可惜演讲者对于这三家的业务都不熟,不清楚这三家到底将Golden Gate用于什么业务的什么地方,为什么一定要用Golden Gate,所以给人的感觉是说服力不强。后面有一个女的演讲者倒是相对详细地介绍了RIM如何用Golden Gate,不过给我的感觉更像是一个反面案例。
RIM在全球有5个Supply Center,未来还会增加,比如由于和中国电信合作,将会在中国增加一个Supply Center。每个Supply Center要根据全球的需求和其他点的产量来决定自己的生产量,即每个Supply Center的决策者要同时看到其他center的最新数据,所以RIM采用了Golden Gate来将其他点的数据同步到本地,双向需要总共20个同步操作。这种分布式的模式显然和目前数据大集中的主流方向背道而驰,复杂性随Supply Center的增加而大大增加,所以除了RIM是Golden Gate的铁杆Fans外,实在找不出其他理由。为什么不在某个中心点建一个DW数据库,将5个Supply Center的数据都同步到中心点就可以了,这样只需要5个单向的同步操作。
Oracle将Golden Gate定位于两种应用,一是DW中的ETL,另外一种是DR中的数据高可靠性。严格来说,Oracle都有将Golden Gate的应用面扩大之嫌,更多的站在产品已有的功能上来想可以用于哪些方面,并希望说服客户按照Oracle的思路走。Golden Gate作为一家单独的公司时,上述的两个定位是没错,但被Oracle收购后,在Oracle的大家族中,再如此定位,Oracle显然打着多收三五斗的主意。
从ETL来说,任何数据库都带自己的ETL工具,Oracle自己的是ODI。Golden Gate相比ODI的优势是更新频率快,实时性好,但真正要用到该特性的机会很少。DW的应用通常以天的频率更新就足够了,如果实在需要加快,2小时做一次ETL增量操作即可。而且即使Golden Gate将数据ETL到了目标端DW数据库,如果采用MOLAP的方式做BI,为了要得到实时性,还必须以非常高的频率来执行刷新MOLAP Cube的操作,这时BI应用是不可用的。因此要得到Golden Gate实时性的好处,DW应用必须采用ROLAP的方式,该方式速度比MOLAP低,通常用于数据量非常大的高端场合(同样情况下采用MOLAP,将占用非常大的磁盘空间),所以真要将Golden Gate用于ETL,只有实时性要求高,数据量非常大的极端场合。
从DR来说,Golden Gate的优势是支持异构数据库,网络带宽占用小。但前一个优势没有人会真正使用,由于应用的限制,不会有人在DR Site采用异构数据库如DB2、SQL Server来容灾Oracle数据库。失去了这个优势,相信绝大多数的人会采用Oracle的Date Guard来实现DR,一免费(包含在数据库中),二支持同步模式(Golden Gate其实是异步模式),三Golden Gate要经过两次Trail File再写入SQL的过程也相对复杂。所以采用Golden Gate来做DR的机会也是很小的。
总结来说,Golden Gate能发挥用武之地,必须具备数据实时性要求高,远端Site点距离很远(广域网时延很大,带宽占用小的优势发挥),远端需要的数据必须经过复杂处理等要求的场合,否则值不回Golden Gate的购买成本,或有更经济的替代方案。