ETL 基本概念
ETL 是将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。
ETL 过程是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。ETL 规则的设计和实施约占整个数据仓库搭建工作量的 60%~80%。
数据抽取(Extraction)
对不同数据源的抽取
抽取的数据,根据类型的不同,可以分为结构化数据、非结构化数据、半结构化数据。
结构化数据的抽取可以采用 JDBC 连接到数据库直接进行抽取,这也是最常用的一种方法,但这种方式因为是对数据库进行直连,所以会消耗数据库的 IO,影响正常的业务进行,所以抽取时间会选择在凌晨业务量较少的时间;而且有一些企业不允许对数据库进行直接抽取,首先是出于安全的考虑,防止数据库异常、影响业务运行;其次对数据库进行直抽会因为 IO 的问题,导致抽取速度非常慢,无法在规定时间内完成数据导出。
除了使用 JDBC 进行数据抽取外,还可以抽取数据库日志的方式进行抽取,这种方式不会直连数据库,而是直接采集数据库的 WAL(预写日志文件)。数据库为了保证数据的安全性,所有对数据库的操作,都会顺序追加到 WAL 日志文件中,然后再对数据库执行操作。所以对 WAL 日志的采集对数据库的影响是极小的,