| ETL厂商 | Reiking | IBM information server(datastage) | informatic | OnceDI | beeload | ODI(oracle data integrate |
基本架构 | 支持运行平台 | windows/unix/linux | windows/unix/linux | windows/unix/linux | windows | windows/linux | windows/linux |
数据访问模式支持 | 绝大部分支持 | 绝大部分支持 | 绝大部分支持 | 绝大部分支持 | 绝大部分支持 | 绝大部分支持 |
数据抽取方式 | 支持生成文件(落地)再导入;直接导入;消息协议 | 直接导入;导入方式,数据导入支持批量加载(sql loader方式)、insert模式、行删除模式
其中insert模式是插入到临时表,然后更新,需要手工写update语句,配置比较复杂,
行删除模式这种方式不考虑,性能肯定会非常差。
批量加载模式,是对方工程师推荐的测试方案,其性能应该是最快的.以下测试是基于批量加载模式 | 直接导入;数据导入目的库有两种加载方式
normal和bulk,即普通插入和批量加载。
批量加载需要先将索引drop掉,在加载完成后重新创建,但是这种方式在对付
大数据量时很慢,例如下文测试hisdeliver 1个月的数据抽取,286万记录,需要4分47秒,比普通插入
要慢很多。下面的测试结果由informatic的工程师,其基于normal模式 | 只支持落地方式 | 直接导入 | 直接导入也可以使用dblink(oracle->oracle),透明网关(sql->oracle)) |
实时增量ETL支持 | 递增字段实现,触发器模式,支持Oracle CDC | CDC,实现秒级别的增量 | CDC,实现秒级别的增量,另外付费购买 | 触发器模式/递增字段实现 | 触发器模式/递增字段实现 | 触发器模式/递增字段实现/stream(cdc) |
性能 | 单表hisdeliver抽取,记录数124810,耗时比较 | 1分16秒 | 17秒 | 15秒 | 3分42秒 | 2分7秒 | 19S |
单表hisdeliver抽取,记录数2859999,耗时比较 | 22分12秒 | 6分12秒 | 2分58秒 | 30分钟以上 | 未测试 | 3分49S |
采集sqlserver数据;采集表zygd(记录数:597872) | 测试报错 | 41秒 | 16秒 | 未测试 | 3分17秒 | 19S |
流程中是否支持并行加载 | 支持 | 支持 | 支持 | 不支持,只能手工同时发起多个流程来实现并行加载 | 支持 | 支持(流程中串行异步模式) |
并行加载性能 | client
730279行 | 5分钟 | 1分14秒 | 2分02秒 | 14分33秒 | 无法对并行流程进行更新的监控,只有整体运行完成时间,7分12秒 | 2分13秒 |
clientinfo 739278行 | 7分钟 | 2分18秒 | 1分50秒 | 14分07秒 | 1分29秒 |
stockholder 1083789 | 11分钟 | 2分59秒 | 3分01秒 | 14分50秒 | 3分23秒 |
hisdeliver 124810行 | 未加载 | 48秒 | 20秒 | 4分31秒 | 2分44秒 |
异常处理 | | 支持邮件通知 | 支持邮件通知 | 支持邮件通知 | 不支持 | 支持邮件通知 | 支持邮件通知 |
ETL管理 | 权限管理 | 支持 | 支持 | 支持 | 支持 | | 支持 |
ETL工作流 | 支持顺序、并行工作流、支持时间、事件触发 | 支持顺序、并行工作流、支持时间、文件到达触发 | 支持顺序、并行工作流、支持时间、事件、文件到达触发 | 支持顺序工作流、支持时间触发 | 支持顺序、并行工作流、支持时间。在工作流支持循环 | 支持顺序、并行工作流、支持时间 |
流程触发 | 定时、事件 | 只能定时(支持到天级别),比较弱 | 定时(支持到分钟级别)、事件触发 | | 定时、事件触发 | 定时、事件触发 |
运行监控 | 较弱 | 较强 | 较强 | 较弱 | 较弱 | 有专门的WEB工具来展示 |
ETL日志与报告 | 详细,但是出错信息需要查bad数据文件 | 很详细,能够看到所有的操作 | 很详细,能够看到所有的操作 | 不是很详细 | 比较详细 | 比较详细 |
部署 | 强,采用SOA架构,可以任意发布服务 | 较强 | 较强 | 可以任意发布 | 可以任意发布,按机器进行收费 | 可以任意发布,按CPU进行收费 |
流程调度 | 可以按日定时调度;可以支持到秒级别的轮询调度(实现实时采集);无法支持事件触发(例如清算完成)调度,必须编写调度程序,通过API调用流程;支持变量模式,支持变量从某个表读取然后替换相应的变量,必须通过外部shell调用替换 | 可以按日定时调度;无法支持到秒级别的轮询调度(实现实时采集);无法支持事件触发(例如清算完成)调度,必须编写调度程序,通过API调用流程;支持变量模式,无法支持变量从某个表读取然后替换相应的变量,必须通过外部shell调用替换 | 可以按日定时调度;可以支持到秒级别的轮询调度(实现实时采集);无法支持事件触发(例如清算完成)调度,必须编写调度程序,通过API调用流程;支持变量模式,支持变量从某个表读取然后替换相应的变量,必须通过外部shell调用替换 | 可以按日定时调度;可以支持到秒级别的轮询调度(实现实时采集);无法支持事件触发(例如清算完成)调度,必须编写调度程序,通过API调用流程 | 可以按日定时调度;可以支持到秒级别的轮询调度(实现实时采集);支持事件触发(例如清算完成)调度,必须编写调度程序,通过API调用流程 | 可以按日定时调度;可以支持到秒级别的轮询调度(实现实时采集);支持事件触发(例如清算完成)调度,必须编写调度程序,通过API调用流程;支持变量模式,支持变量从某个表读取然后替换相应的变量,必须通过外部shell调用替换 |
| 其他印象(可操作性,易用性,界面友好性) | | | | | | |
在都采用批量加载时,大量数据时的性能 | hisdeliver 2859999行 | | 6分12秒 | 5分27秒 | | | |
hisdeliver 4350338行 | | 10分53秒 | 6分51秒(5分钟导数据,1分51秒建索引 | | | |
hisdeliver 12222466行 | | 29分56秒(25分钟导数据,4分56秒) | 18分4秒(13分24秒导数据,4分40秒建索引) | | | |
hisoperationtotal 57747239行 | | 27分21秒(20分2秒导数据;7分19秒建索引) | 26分56秒(17分10秒导数据,9分46秒导数据) | | | |
在都采用批量加载时,大量数据时的性能(不带索引) | hisdeliver 8276997行 | | 19分40秒 | bulk:10分23秒
normal:10分31秒 | | | |
hisoperationtotal 17896802行 | | 5分24秒 | 4分18秒 | | | |
在都采用批量加载时,大量数据时的性能(不带索引) | hisdeliver 在上述里已有8276997行数据后,再次追加3945469行 | | 8分47秒 | 6分钟 | | | |
在都采用批量加载时,大量数据时的性能(不带索引) | hisdeliver 加载3945469行 | | 7分52秒 | 6分10秒 | | | |