数据的抽取就是从异构数据源抽取数据,但是并不是所有数据源中的数据都有实际的价值。业务人员和设计人员需要分析讨论哪些数据有价值,哪些数据可以忽略,然后制定抽取策略。数据的抽取分为数据的全量抽取和数据的增量抽取。其中,全量抽取类似于数据迁移或数据复制,它将原数据表中的数据全部抽取出来;经过上次抽取后,源数据表中的数据出现变化时,会进行增量抽取。增量抽取是抽取数据源表中新增或被修改的数据。
在ETL的使用过程中,数据的增量抽取比数据的全量抽取应用更广泛。要实现增量抽取,就要准确地捕获到数据库中数据源表数据的变化,因此捕获变化的数据是增量抽取的关键。数据的增量抽取有4种方式,具体如下。
1.触发器方式
触发器方式是根据抽取要求,在要被抽取的数据源表上建立插入、修改、删除3个触发器,每当数据源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表中。ETL的增量抽取则是从增量日志中抽取,而不是直接在源表中抽取数据,同时,增量日志表中抽取过来的数据要及时被标记或者删除。
2.时间戳方式
时间戳方式是指增量抽取时,抽取进程通过比较指定抽取时间与抽取源表的时间戳字段的值决定抽取哪些数据。这种方式需要在源表中增加一个时间戳字段,系统中更新或修改源表数据的时候,也会同时修改时间戳字段的值。插入数据的时间戳有系统时间指定。
3.全表比对方式
全表比对方式是指在增量抽取时,ETL进程逐条比较源表和目标表的记录,将新增或修改等变化的记录过滤读取出来。
4.日志表方式
对于建立了业务系统的生产数据库企业来说,可以在数据库中创建业务(企业中的业务)日志表,当特定需要监控的业务数据发生变化时,由相应的业务系统程序模块更新维护日志表的内容。增量抽取时,通过读日志表数据决定加载哪些数据及如何加载。日志表的维护需要由业务系统程序编写代码完成。
以上4中常见的增量抽取方式没有一种方式具有绝对的优势,不同的方式在不同企业中的表现大体都是相对平衡的。通常根据企业中的业务需求和硬件环境选择ETL抽取机制。