【大数据】常见的数据抽取方法

常见的数据抽取方法

  • 1.基于查询式的数据抽取
    • [1.1 触发器方式(又称快照式)](#1.1 触发器方式(又称快照式))
    • [1.2 增量字段方式](#1.2 增量字段方式)
    • [1.3 时间戳方式](#1.3 时间戳方式)
    • [1.4 全表删除插入方式](#1.4 全表删除插入方式)
  • 2.基于日志的数据抽取

数据抽取 是指从源数据源系统抽取需要的数据。实际应用中,数据源较多采用的是关系数据库。总体而言,数据抽取的常见方法有两大类,一是基于查询式的,一是基于日志的。

1.基于查询式的数据抽取

基于查询式的数据抽取,顾名思义,以从来源库来源表查询数据为主。总体又有几种:触发器方式,增量字段方式,时间戳方式等等。

1.1 触发器方式(又称快照式)

在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据 被标记或删除。

  • 优点:数据抽取的性能高,ETL 加载规则简单,速度快,不需要修改业务系统表结构,可以实现数据的递增加载。
  • 缺点:要求业务表建立触发器,对业务系统有一定的影响,容易对源数据库构成威胁。

1.2 增量字段方式

它是一种基于快照比较的变化数据捕获方式,在源表上含有一个增量字段,系统中更新修改表数据的时候,同时修改增量字段的值。当进行数据抽取时,通过比较上次抽取时记录的增量字段值来决定抽取哪些数据。严格意义上讲,增量字段要求必须递增且唯一。

  • 优点:数据抽取的性能高,ETL 加载规则简单,速度快,不需要修改业务系统表结构,可以实现数据的递增加载。
  • 缺点:增量字段必须递增且唯一。对不支持增量字段的自动更新的数据库,需要业务系统来维护。另外,无法捕获对增量字段以前数据的 delete 和 update 操作,在数据准确性上受到了一定的限制。无法获取 delete 及分别出 insert 和 update。

1.3 时间戳方式

放宽松条件的增量字段方式,不要求字段唯一,满足递增即可。在源表上含有一个 时间戳字段,系统中更新修改表数据的时候,同时修改增量字段的值。当进行数据抽取时,通过比较上次抽取时间与时间戳字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的值。有的数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时,手工更新时间戳字段。

  • 优点:数据抽取的性能高,ETL 加载规则简单,速度快,不需要修改业务系统表结构,可以实现数据的递增加载。
  • 缺点:对不支持时间戳字段的自动更新的数据库,需要业务系统来维护,业务系统复杂的情况下有可能无法保证时间戳的递增性。另外,无法捕获对增量字段以前数据的 delete 和 update 操作,在数据准确性上受到了一定的限制。在一次抽取过程中如果数据量大,时间戳字段相同值较多,分页查询抽取时可能会丢失数据(order by 顺序不定导致)。

1.4 全表删除插入方式

每次 ETL 操作均删除目标表数据,由 ETL 全新加载数据。

  • 优点:ETL 加载规则简单。
  • 缺点:不适合大表,不可以实现数据的递增加载,如果有关联关系,需要重新进行创建。

2.基于日志的数据抽取

数据库通常借助日志来实现事务,常见的有 undo log、redo log。undo log / redo log 都能保证事务特性,这里主要是原子性和持久性,即事务相关的操作,要么全做,要么不做,并且修改的数据能得到持久化。

我们通过采集日志把已经 commit 的事务数据抽取出来,对于没有 commit 的事务不做操作,进而达到数据抽取的目的。

  • 优点:不需要修改业务系统表结构,数据完整准确(insert / update / delete),支持事务。
  • 缺点:环境配置复杂,需要占用数据库系统的一定资源,ETL 规则复杂(采集、解析)。

比如说常见的 MySQL 的 binlog 日志同步,Oracle 使用自带的 LogMiner 工具解析归档日志等等。


相关推荐
吃一碗粉只付一碗钱3 小时前
10-令牌里的用户主键不要明文
服务器·数据库·sql·sqlserver·c#
蹄蹄3 小时前
从“一次性检测“到“年度服务“:检测机构收入结构变了,合同和应收账款也要跟着变
大数据·数据库·人工智能
福大大架构师每日一题3 小时前
redis 8.10.3正式发布:聚焦集群总线超大消息传播场景的安全修复,8.10.3 Latest更新解读
数据库·redis·安全
YIN_尹3 小时前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
TDengine (老段)3 小时前
TDengine IDMP 十大实用功能(3)
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
sun03223 小时前
【JDK 动态代理】 和 【CGLIB 代理】对比
java·数据库·sql
实验室管理云平台4 小时前
面向高职院校实训场景:实训实验室管理平台整体方案分享
大数据·科技·物联网·自动化
YH_Analytics4 小时前
2026 高压 E-House 市场深度分析报告市场格局
网络·数据库
试剂界的爱马仕4 小时前
α-Cyano-4-hydroxycinnamic acid(CHCA)用作 MALDI-TOF 基质的配制与使用
大数据·人工智能·深度学习·学习