数据抽取技术:
1 静态数据捕获
用于一、数据仓库初时化时,二、需要完全修改的数据
2 增量数据捕获
(1) 通过交易日志,或数据库日志,包括诸如Oracle的Flashback query等日志捕获。可以使用 diff 工具帮助分析差异。(很少使用)
(2) 从数据库触发器中捕获:触发器将信息写在一张增量数据变化表内(包括删除的信息)。其它集成组件定期读取该表。
(3) 基于日期和时间标记的捕获 / 类似的包括基于绝对自增id的捕获:无法解决删除问题
Oracle 10g以上版本和MS-SQLServer类似,有一个rowVersion,也可做类似的时间标记
如果某些源数据没有这些字段,那可以考虑再不破坏原有表的基础上增加一些上述的标记字段。可以先咨询源系统开发商。
(4) 对于拥有集合运算函数数据库例如oracle拥有minus,可以根据一些主键做集合运算,将差异结果存到单独的表中供其它程序读取。
(5) 通过全表扫描比较来捕获:比较源数据的两个快照。当数据特别大时,性能成为问题。
这是对于没有(3)中字段,且其它方法都不可用时候的最差选择。可以充分利用各种分段扫描算法。(很少使用)
(6) 从源应用程序中捕获:修改源应用代码(很少使用)
(7) 定制自己的jdbc驱动程序:法一,直接修改或重写驱动程序。法二,使用AOP技术对现有的驱动程序的接口进行weaver,对捕获的SQL进行分析处理。