数据加载策略

Data Loading Strategy

数据加载策略是将数据写入目的地时,系统执行的写入方式与冲突解决方法的策略配置。

关于此功能

◎ 增量处理模式

在DataPipeline系统中,为了提升写入效率,我们将数据写入分成小的批次少量多次执行写入,为了提升写入效率,我们提供两种增量处理模式可供选择。

  • 全增量模式

    • 即将数据源的全部增量数据依次写入数据目的地,可以保证数据全局一致性。

  • 精简增量模式

    • 即在一个写入批次内,将同一主键的增量数据的最后一次变化同步至目的地,可以保证数据最终一致性。该模式需要数据源增量数据获取开启日志补全。

◎ 数据加载方式

在将数据写入数据目的地的过程中,可以通过配置数据加载方式来变更数据目的地写入时提交的SQL语句类型,以变更数据加载方式。

当前版本支持的数据加载方式有:Insert、Update、Delete、Ignore(忽略)、Merge(Upsert)。

对于不同数据源的数据获取方式,DML获取存在限制:

数据源类型

数据获取方式

是否能获取DML

备注

MySQL

Binlog

Oracle

DataPipeline采集代理程序

Oracle

LogMiner

Db2

InfoSphere Data Replication

PostgreSQL

Wal2json

MS SQL Server

Change Tracking

关系型数据库

JDBC

文件系统

文件系统客户端

-

不存在DML概念

消息队列

消息队列客户端

-

不存在DML概念

对于不同数据目的地类型,数据加载方式的处理会有不同

数据目的地类型

数据源DML类型

数据加载方式-映射DML

数据处理过程

适用场景

关系型数据库

Insert

Insert

数据目的地插入数据

保证数据DML操作一致性

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤插入DML操作

Merge(Upsert)

在数据目的地进行merge写入

当数据目的地存在需要被插入的数据,使用upsert/merge语句写入,可以保证写入成功,避免主键冲突

Update

Insert

数据目的地插入数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

通常用于在数据目的地创建拉链表,分析数据变化过程

Update

数据目的地插入数据

保证数据DML操作一致性

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤更新DML操作

Merge(Upsert)

在数据目的地进行merge写入

当数据目的地不存在需要被更新的数据,使用upsert/merge语句写入,可以将update转换为insert执行,提示写入效率

Delete

Insert

数据目的地插入数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

通常用于在数据目的地创建拉链表,分析数据变化过程;或在目的地同步删除标识,源端删除数据,目的地端标记删除

Update

数据目的地更新数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

在目的地同步删除标识,源端删除数据,目的地端标记删除

Delete

数据目的地删除数据

保证数据DML操作一致性

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤删除DML操作

Merge(Upsert)

数据目的地更新数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

在目的地同步删除标识,源端删除数据,目的地端标记删除

消息队列

Insert

Insert

数据目的地插入数据

常用写入方式

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤删除DML操作

Merge(Upsert)

-

-

Update

Insert

数据目的地插入数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

常用写入方式,在消息队列记录数据变化过程

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤更新DML操作

Merge(Upsert)

-

-

Delete

Insert

数据目的地插入数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

常用写入方式,在消息队列记录数据变化过程

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤删除DML操作

Merge(Upsert)

-

-

文件系统

Insert

Insert

数据目的地插入数据

常用写入方式

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤删除DML操作

Merge(Upsert)

-

-

Update

Insert

数据目的地插入数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

常用写入方式,在文件系统记录数据变化过程

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤删除DML操作

Merge(Upsert)

-

-

Delete

Insert

数据目的地插入数据,需在数据目的地表添加DML标识列,并通过清洗脚本将数据源DML内容写入至数据目的地该列

常用写入方式,在文件系统记录数据变化过程

Update

-

-

Delete

-

-

Ignore

忽略数据源DML变化,数据目的地不做任何写入

过滤删除DML操作

Merge(Upsert)

-

-

circle-info

注:“-”代表对于该数据目的地类型的DML操作转换不支持或无适用场景。

◎ 主键冲突策略

当数据加载方式选择了insert,在向目的地数据写入过程中,可能会出现待写入数据主键与目的地已有数据主键相同的情况,insert语句将执行失败。遇到上述情况时,通过配置主键冲突策略,可以暂停数据任务或将数据写入错误队列后续处理来应对。

操作步骤

  1. 在数据链路详情页-策略配置tab中找到数据加载策略。

  2. 选择增量处理模式。

  3. 为数据源的每种数据操作标识选择数据加载方式。

  4. 选择主键冲突策略

  5. 保存配置

◎ 场景说明:数据目的地拉链表配置

在配置数据目的地过程中,可以在数据目的地添加一列,将该列标识为联合主键,通过清洗脚本赋值,其中可以存储数据源DML标识数据。

在数据加载方式中配置中,选择insert,即可实现目的地拉链表数据写入。

circle-exclamation

最后更新于

这有帮助吗?