博客
关于我
数据仓库系列之ETL中常见的增量抽取方式
阅读量:431 次
发布时间:2019-03-06

本文共 1410 字,大约阅读时间需要 4 分钟。

ETL增量抽取机制的实现与对比分析

在数据仓库ETL(Extract, Transform, Load)实施过程中,增量抽取是实现高效数据处理的关键环节。与全量抽取相比,增量抽取要求更高,不仅需要准确捕获数据变化,还需确保对源系统的影响最小化。本文将详细分析ETL中的四种增量抽取机制,并探讨其适用条件和优劣性。


一、增量抽取的机制

1. 基于触发器的增量抽取

触发器机制是一种常见的增量抽取方式。通过在源表上创建插入、修改和删除触发器,每当源表数据发生变化时,触发器会将变化数据写入增量日志表。ETL抽取过程则从增量日志表中读取数据,而非直接从源表中抽取。此外,增量日志表通常只存储源表名称、更新关键字值和操作类型,避免存储大量冗余数据。

优点:

  • 依赖数据库自身机制,保证可靠性和无数据丢失。
  • 触发器机制对业务系统影响较小。

缺点:

  • 对源系统的数据库产生较大影响,需建立触发器机制。
  • 增量日志表增加了存储和运维成本。

2. 基于时间戳的增量抽取

时间戳机制通过比较系统时间戳与源表记录的时间戳值,确定增量数据。源表需增加时间戳字段,数据库支持自动更新时间戳值时,仅需在源表添加该字段即可。

优点:

  • 逻辑清晰,处理速度快,实施成本低。
  • 适用于支持自动时间戳更新的数据库。

缺点:

  • 无法捕获删除操作,需结合其他机制。
  • 对于不支持自动时间戳更新的数据库,需手动更新时间戳字段。

3. 基于全表比对的增量抽取

全表比对机制通过逐条比对源表和目标表的记录,识别新增和修改数据。优化后通常采用MD5校验码,通过临时表对比记录主键值和数据MD5值来确定增量数据。

优点:

  • 对源系统无影响,适合数据量较小或主键约束严格的表。

缺点:

  • 对海量数据的逐列比对会导致性能瓶颈。
  • 需要足够的硬件支持。

4. 基于日志表的增量抽取

日志表机制由业务系统程序维护,动态更新日志表内容。ETL抽取时,通过读取日志表数据确定增量操作类型和范围。

优点:

  • 保障数据无误差传输,支持回滚和容灾备份。

缺点:

  • 数据库日志表通常不对外开放,需特定权限访问。
  • 对源系统数据库磁盘造成压力,增加存储成本。

二、比较与分析

从兼容性、完备性、性能和侵入性四个方面对增量抽取机制进行对比分析:

  • 兼容性

    • 触发器机制兼容性高,适用于多种数据库。
    • 时间戳机制依赖数据库支持,兼容性较低。
    • 全表比对机制兼容性较差,适合特定场景。
    • 日志表机制兼容性较低,需特定系统支持。
  • 完备性

    • 触发器机制支持增量、修改和删除操作。
    • 时间戳机制无法捕获删除操作。
    • 全表比对机制具备较高的数据完整性。
    • 日志表机制数据无误差,但难以扩展。
  • 性能

    • 触发器机制性能稳定,但对源系统影响大。
    • 时间戳机制处理速度快,适合大数据量。
    • 全表比对机制性能差,适合小数据量。
    • 日志表机制性能受限于数据库日志读取。
  • 侵入性

    • 触发器机制侵入性高,需额外运维。
    • 时间戳机制侵入性低,适合无需频繁维护的场景。
    • 全表比对机制侵入性低,但对数据量敏感。
    • 日志表机制侵入性高,需业务系统配合。

  • 三、总结

    通过对比分析可见,ETL增量抽取机制没有绝对的优劣之分,需根据项目实际需求选择最优方案。触发器、时间戳、全表比对和日志表机制各有优劣,建议在实施前综合评估源系统环境、数据量规模和技术资源,甚至结合多种机制以适应复杂场景。ETL项目的成功离不开合理的增量抽取策略,只有基于详实分析的方案才能实现高效、可靠的数据处理。

    转载地址:http://whnuz.baihongyu.com/

    你可能感兴趣的文章
    OpenPPL PPQ量化(4):计算图的切分和调度 源码剖析
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    Openresty框架入门详解
    查看>>
    OpenResty(2):OpenResty开发环境搭建
    查看>>
    openshift搭建Istio企业级实战
    查看>>
    Openstack 之 网络设置静态IP地址
    查看>>
    OpenStack 网络服务Neutron详解
    查看>>
    Openstack(两控制节点+四计算节点)-1
    查看>>
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    OpenStack安装部署实战
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    Openstack的视频学习
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    ORACLE Bug 4431215 引发的血案—原因分析篇
    查看>>
    oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
    查看>>
    Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
    查看>>
    oracle dg switchover,DG Switchover fails
    查看>>
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle script
    查看>>