ETL数据抽取方案简介1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
优点:同触发器方式一样,时间戳方式的性能也比较好,ETL 系统设计清晰,源数据抽取相对清楚简单,可以实现数据的递增 加载。
缺点:时间戳维护需要由业务系统完成,对业务系统也有很 大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳 的自动更新的数据库,还要求业务系统进行额外的更新时间戳操 作;另外,无法捕获对时间戳以前数据的delete和update 操作, 在数据准确性上受到了一定的限制。
并存储到变化表中,发布者与订阅都位于同一数据库中;异步模 式则是基于Oracle 的流复制技术。
优点:提供了易于使用的API 来设置CDC 环境,缩短ETL 的 时间。不需要修改业务系统表结构,可以实现数据的递增加载。
缺点:业务系统数据库版本与产品不统一,难以统一实现, 实现过程相对复杂,并且需深入研究方能实现。或者通过第三方 工具实现,价格昂贵。
f) Oracle 变化数据捕捉(CDC 方式)
通过分析数据库自身的日志来判断变化的数据。Oracle 的改 变数据捕获(CDC,Changed Data Capture)技术是这方面的 代表。CDC 特性是在Oracle9i 数据库中引入的。CDC 能够帮助 你识别从上次抽取之后发生变化的数据。利用CDC,在对源表进 行insert、update 或 delete 等操作的同时就可以提取数据,并且 变化的数据被保存在数据库的变化表中。这样就可以捕获发生变 化的数据,然后利用数据库视图以一种可控的方式提供给目标系 统。CDC 体系结构基于发布/订阅模型。发布者捕捉变化数据并 提供给订阅者。订阅者使用从发布者那里获得的变化数据。通 常,CDC 系统拥有一个发布者和多个订阅者。发布者首先需要 识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其 保存在特别创建的变化表中。它还使订阅者能够控制对变化数据 的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订 阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创 建一个订阅者视图来访问经发布者授权可以访问的变化数据。 CDC 分为同步模式和异步模式,同步模式实时的捕获变化数据
程序,所有抽取规则由ETL完成,管理维护统一,可以实现数据 的递增加载,没有风险。。
缺点:ETL 比对较复杂,设计较为复杂,速度较慢。与触发 器和时间戳方式中的主动通知不同,全表比对方式是被动的进行 全表数据的比对,性能较差。当表中没有主键或唯一列且含有重 复记录时,全表比对方式的准确性较差。
e) 日志表方式
(2)数据转换:将从源数据源获取的数据按照业务需求,转 换成目的数据源要求的形式,并对错误、不一致的数据进行清洗 和加工;
(3)数据加载:将转换后的数据装载到目的数据源。 ETL 作为构建数据仓库的一个环节,负责将分布的、异构数 据源中的数据如关系数据、平面数据文件等抽取到临时中间层后 进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成 为联机分析处理、数据挖掘的基础。现在越来越多地将ETL 应用 于一般信息系统数据的迁移、交换和同步。一个简单ETL流程如 图1所示。
a) 触发器方式(又称快照式)
在要抽取的表上建立需要的触发器,一般要建立插入、修改、 删除三个触发器,每当源表中的数据发生变化,就被相应的触发 器将变化的数据写入一个临时表,抽取线程从临时表中抽取数 据,临时表中抽取过的数据被标记或删除。
优点:数据抽取的性能高,ETL 加载规则简单,速度快,不 需要修Baidu Nhomakorabea业务系统表结构,可以实现数据的递增加载。
数据源 文件 其他
抽取 临时数据
转换 加载
目标 数据库
图1
ETL抽取方案
ETL 过程中的主要环节就是数据抽取、数据转换和加工、数 据装载。为了实现这些功能,ETL 工具会进行一些功能上的扩 充,例如工作流、调度引擎、规则引擎、脚本支持、统计信息 等。
数据抽取
数据抽取是从数据源中抽取数据的过程。实际应用中,数据源 较多采用的是关系数据库。
相比在数据库中加工,性能较高,但不容易进行修改和清晰辨 认。
b) 在数据库中进行数据加工
关系数据库本身已经提供了强大的SQL、函数来支持数据的加 工,如在SQL 查询语句中添加where 条件进行过滤,查询中重命 名字段名与目的表进行映射,substr 函数,case条件判断等等。
相比在 ETL 引擎中进行数据转换和加工,直接在SQL 语句中 进行转换和加工更加简单清晰;但依赖SQL语句,有些数据加工 通过SQL语句可能无法实现,对于SQL 语句无法处理的可以交由
从数据库中抽取数据一般有以下几种方式:
1) 全量抽取
全量抽取类似于数据迁移或数据复制,它将数据源中的表或视 图的数据原封不动的从数
据库中抽取出来,并转换成自己的ETL 工具可以识别的格 式。全量抽取比较简单。
2) 增量抽取
增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或 修改的数据。在ETL 使用过程中,增量抽取较全量抽取应用更 广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有 两点要求:准确性,能够将业务系统中的变化数据按一定的频率 准确地捕获到;性能,不能对业务系统造成太大的压力,影响现 有业务。目前增量数据抽取中常用的捕获变化数据的方法有:
数据转换和加工
从数据源中抽取的数据不一定完全满足目的库的要求,例如数 据格式的不一致、数据输入错误、数据不完整等等,因此有必要 对抽取出的数据进行数据转换和加工。
数据的转换和加工可以在 ETL 引擎中进行,也可以在数据抽 取过程中利用关系数据库的特性同时进行。
a) ETL引擎中的数据转换和加工
ETL 引擎中一般以组件化的方式实现数据转换。常用的数据 转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计 算、数据验证、数据加解密、数据合并、数据拆分等。这些组件 如同一条流水线上的一道道工序,它们是可插拔的,且可以任意 组装,各组件之间通过数据总线共享数据。同时ETL 工具还提供 了脚本支持,使得用户可以以一种编程的方式定制数据的转换和 加工行为。
d) 全表比对方式
全表比对的方式是ETL 工具事先为要抽取的表建立一个结构 类似的临时表,该临时表记录源表主键以及根据所有字段的数据 计算出来,每次进行数据抽取时,对源表和临时表进行的比对, 如有不同,进行Update 操作,如目标表没有存在该主键值,表 示该记录还没有,即进行Insert 操作。
优点:对已有系统表结构不产生影响,不需要修改业务操作
ETL 引擎处理。
数据装载
将转换和加工后的数据装载到目的库中通常是ETL 过程的最 后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要 装入多少数据。当目的库是关系数据库时,一般来说有两种装载 方式:
(1) 直接 SQL 语句进行insert、update、delete 操作。 (2) 采用批量装载方法,sqlldr等。 大多数情况下使用第一种方法,因为它们进行了日志记录并且 是可恢复的。但是,批量装载操作易于使用,并且在装入大量数 据时效率较高。使用哪种数据装载方法取决于业务系统的需要。
缺点:要求业务表建立触发器,对业务系统有一定的影响, 容易对源数据库构成威胁。
b) 时间戳方式
它是一种基于快照比较的变化数据捕获方式,在源表上增加一 个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳 字段的值。当进行数据抽取时,通过比较上次抽取时间与时间戳 字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更 新,即表的其它字段的数据发生改变时,自动更新时间戳字段的 值。有的数据库不支持时间戳的自动更新,这就要求业务系统在 更新业务数据时,手工更新时间戳字段。
c) 全表删除插入方式
每次ETL 操作均删除目标表数据,由ETL 全新加载数据。 优点:ETL 加载规则简单,速度快。 缺点:对于维表加外键不适应,当业务系统产生删除数据操 作时,综合数据库将不会记录到所删除的历史数据,不可以实现 数据的递增加载;同时对于目标表所建立的关联关系,需要重新 进行创建。
ETL简介
数据集成是把不同来源、格式和特点的数据在逻辑上或物理上 有机地集中,从而提供全面的数据共享,是企业商务智能、数据 仓库系统的重要组成部分。ETL 是企业数据集成的主要解决方 案。
ETL 中三个字母分别代表的是Extract、Transform、Load,即 抽取、转换、加载。
(1)数据抽取:从源数据源系统抽取目的数据源系统需要的 数据;
在业务系统中添加系统日志表,当业务数据发生变化时,更新 维护日志表内容,当作ETL 加载时,通过读日志表数据决定加载 那些数据及如何加载。
优点:不需要修改业务系统表结构,源数据抽取清楚,速度 较快。可以实现数据的递增加载。
缺点:日志表维护需要由业务系统完成,需要对业务系统业 务操作程序作修改,记录日志信息。日志表维护较为麻烦,对原 有系统有较大影响。工作量较大,改动较大,有一定风险。
缺点:时间戳维护需要由业务系统完成,对业务系统也有很 大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳 的自动更新的数据库,还要求业务系统进行额外的更新时间戳操 作;另外,无法捕获对时间戳以前数据的delete和update 操作, 在数据准确性上受到了一定的限制。
并存储到变化表中,发布者与订阅都位于同一数据库中;异步模 式则是基于Oracle 的流复制技术。
优点:提供了易于使用的API 来设置CDC 环境,缩短ETL 的 时间。不需要修改业务系统表结构,可以实现数据的递增加载。
缺点:业务系统数据库版本与产品不统一,难以统一实现, 实现过程相对复杂,并且需深入研究方能实现。或者通过第三方 工具实现,价格昂贵。
f) Oracle 变化数据捕捉(CDC 方式)
通过分析数据库自身的日志来判断变化的数据。Oracle 的改 变数据捕获(CDC,Changed Data Capture)技术是这方面的 代表。CDC 特性是在Oracle9i 数据库中引入的。CDC 能够帮助 你识别从上次抽取之后发生变化的数据。利用CDC,在对源表进 行insert、update 或 delete 等操作的同时就可以提取数据,并且 变化的数据被保存在数据库的变化表中。这样就可以捕获发生变 化的数据,然后利用数据库视图以一种可控的方式提供给目标系 统。CDC 体系结构基于发布/订阅模型。发布者捕捉变化数据并 提供给订阅者。订阅者使用从发布者那里获得的变化数据。通 常,CDC 系统拥有一个发布者和多个订阅者。发布者首先需要 识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其 保存在特别创建的变化表中。它还使订阅者能够控制对变化数据 的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订 阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创 建一个订阅者视图来访问经发布者授权可以访问的变化数据。 CDC 分为同步模式和异步模式,同步模式实时的捕获变化数据
程序,所有抽取规则由ETL完成,管理维护统一,可以实现数据 的递增加载,没有风险。。
缺点:ETL 比对较复杂,设计较为复杂,速度较慢。与触发 器和时间戳方式中的主动通知不同,全表比对方式是被动的进行 全表数据的比对,性能较差。当表中没有主键或唯一列且含有重 复记录时,全表比对方式的准确性较差。
e) 日志表方式
(2)数据转换:将从源数据源获取的数据按照业务需求,转 换成目的数据源要求的形式,并对错误、不一致的数据进行清洗 和加工;
(3)数据加载:将转换后的数据装载到目的数据源。 ETL 作为构建数据仓库的一个环节,负责将分布的、异构数 据源中的数据如关系数据、平面数据文件等抽取到临时中间层后 进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成 为联机分析处理、数据挖掘的基础。现在越来越多地将ETL 应用 于一般信息系统数据的迁移、交换和同步。一个简单ETL流程如 图1所示。
a) 触发器方式(又称快照式)
在要抽取的表上建立需要的触发器,一般要建立插入、修改、 删除三个触发器,每当源表中的数据发生变化,就被相应的触发 器将变化的数据写入一个临时表,抽取线程从临时表中抽取数 据,临时表中抽取过的数据被标记或删除。
优点:数据抽取的性能高,ETL 加载规则简单,速度快,不 需要修Baidu Nhomakorabea业务系统表结构,可以实现数据的递增加载。
数据源 文件 其他
抽取 临时数据
转换 加载
目标 数据库
图1
ETL抽取方案
ETL 过程中的主要环节就是数据抽取、数据转换和加工、数 据装载。为了实现这些功能,ETL 工具会进行一些功能上的扩 充,例如工作流、调度引擎、规则引擎、脚本支持、统计信息 等。
数据抽取
数据抽取是从数据源中抽取数据的过程。实际应用中,数据源 较多采用的是关系数据库。
相比在数据库中加工,性能较高,但不容易进行修改和清晰辨 认。
b) 在数据库中进行数据加工
关系数据库本身已经提供了强大的SQL、函数来支持数据的加 工,如在SQL 查询语句中添加where 条件进行过滤,查询中重命 名字段名与目的表进行映射,substr 函数,case条件判断等等。
相比在 ETL 引擎中进行数据转换和加工,直接在SQL 语句中 进行转换和加工更加简单清晰;但依赖SQL语句,有些数据加工 通过SQL语句可能无法实现,对于SQL 语句无法处理的可以交由
从数据库中抽取数据一般有以下几种方式:
1) 全量抽取
全量抽取类似于数据迁移或数据复制,它将数据源中的表或视 图的数据原封不动的从数
据库中抽取出来,并转换成自己的ETL 工具可以识别的格 式。全量抽取比较简单。
2) 增量抽取
增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或 修改的数据。在ETL 使用过程中,增量抽取较全量抽取应用更 广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有 两点要求:准确性,能够将业务系统中的变化数据按一定的频率 准确地捕获到;性能,不能对业务系统造成太大的压力,影响现 有业务。目前增量数据抽取中常用的捕获变化数据的方法有:
数据转换和加工
从数据源中抽取的数据不一定完全满足目的库的要求,例如数 据格式的不一致、数据输入错误、数据不完整等等,因此有必要 对抽取出的数据进行数据转换和加工。
数据的转换和加工可以在 ETL 引擎中进行,也可以在数据抽 取过程中利用关系数据库的特性同时进行。
a) ETL引擎中的数据转换和加工
ETL 引擎中一般以组件化的方式实现数据转换。常用的数据 转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计 算、数据验证、数据加解密、数据合并、数据拆分等。这些组件 如同一条流水线上的一道道工序,它们是可插拔的,且可以任意 组装,各组件之间通过数据总线共享数据。同时ETL 工具还提供 了脚本支持,使得用户可以以一种编程的方式定制数据的转换和 加工行为。
d) 全表比对方式
全表比对的方式是ETL 工具事先为要抽取的表建立一个结构 类似的临时表,该临时表记录源表主键以及根据所有字段的数据 计算出来,每次进行数据抽取时,对源表和临时表进行的比对, 如有不同,进行Update 操作,如目标表没有存在该主键值,表 示该记录还没有,即进行Insert 操作。
优点:对已有系统表结构不产生影响,不需要修改业务操作
ETL 引擎处理。
数据装载
将转换和加工后的数据装载到目的库中通常是ETL 过程的最 后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要 装入多少数据。当目的库是关系数据库时,一般来说有两种装载 方式:
(1) 直接 SQL 语句进行insert、update、delete 操作。 (2) 采用批量装载方法,sqlldr等。 大多数情况下使用第一种方法,因为它们进行了日志记录并且 是可恢复的。但是,批量装载操作易于使用,并且在装入大量数 据时效率较高。使用哪种数据装载方法取决于业务系统的需要。
缺点:要求业务表建立触发器,对业务系统有一定的影响, 容易对源数据库构成威胁。
b) 时间戳方式
它是一种基于快照比较的变化数据捕获方式,在源表上增加一 个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳 字段的值。当进行数据抽取时,通过比较上次抽取时间与时间戳 字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更 新,即表的其它字段的数据发生改变时,自动更新时间戳字段的 值。有的数据库不支持时间戳的自动更新,这就要求业务系统在 更新业务数据时,手工更新时间戳字段。
c) 全表删除插入方式
每次ETL 操作均删除目标表数据,由ETL 全新加载数据。 优点:ETL 加载规则简单,速度快。 缺点:对于维表加外键不适应,当业务系统产生删除数据操 作时,综合数据库将不会记录到所删除的历史数据,不可以实现 数据的递增加载;同时对于目标表所建立的关联关系,需要重新 进行创建。
ETL简介
数据集成是把不同来源、格式和特点的数据在逻辑上或物理上 有机地集中,从而提供全面的数据共享,是企业商务智能、数据 仓库系统的重要组成部分。ETL 是企业数据集成的主要解决方 案。
ETL 中三个字母分别代表的是Extract、Transform、Load,即 抽取、转换、加载。
(1)数据抽取:从源数据源系统抽取目的数据源系统需要的 数据;
在业务系统中添加系统日志表,当业务数据发生变化时,更新 维护日志表内容,当作ETL 加载时,通过读日志表数据决定加载 那些数据及如何加载。
优点:不需要修改业务系统表结构,源数据抽取清楚,速度 较快。可以实现数据的递增加载。
缺点:日志表维护需要由业务系统完成,需要对业务系统业 务操作程序作修改,记录日志信息。日志表维护较为麻烦,对原 有系统有较大影响。工作量较大,改动较大,有一定风险。