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

常见的数据抽取方法

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

1.3 时间戳方式

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

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

1.4 全表删除插入方式

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

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

2.基于日志的数据抽取

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

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

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

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


相关推荐
success_a24 分钟前
大故障:阿里云核心域名爆炸了
数据库·阿里云·云计算
@小红花3 小时前
MySQL数据库从0到1
数据库·mysql·oracle
[听得时光枕水眠]3 小时前
MySQL基础(三)DQL(Data Query Language,数据查询语言)
数据库·mysql·oracle
我科绝伦(Huanhuan Zhou)3 小时前
深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化
数据库·sql·oracle
咸鱼求放生5 小时前
es在Linux安装
大数据·elasticsearch·搜索引擎
人大博士的交易之路6 小时前
今日行情明日机会——20250606
大数据·数学建模·数据挖掘·数据分析·涨停回马枪
寒山李白7 小时前
MySQL安装与配置详细讲解
数据库·mysql·配置安装
文牧之8 小时前
PostgreSQL 的扩展pg_freespacemap
运维·数据库·postgresql
deriva8 小时前
某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量
数据库·sql
Leo.yuan9 小时前
数据库同步是什么意思?数据库架构有哪些?
大数据·数据库·oracle·数据分析·数据库架构