DTS开发记录(9)-- 数据迁移任务 DataTask

简介: 在DTS开发记录(1)--系统总体结构 一文中,我们已经看到,一次数据传递任务基于一个连接对和一个数据映射进行。但是之前,我们并没有提到“数据迁移任务”这个元素。随着设计的演化,我们发现一个数据任务已经不再仅仅是一个连接对加上一个数据映射了。

    在DTS开发记录(1)--系统总体结构 一文中,我们已经看到,一次数据传递任务基于一个连接对和一个数据映射进行。但是之前,我们并没有提到“数据迁移任务”这个元素。随着设计的演化,我们发现一个数据任务已经不再仅仅是一个连接对加上一个数据映射了。现在,我们完全有必要把“数据迁移任务”这个概念抽象的表示出来,称之为DataTask。

    有了DataTask,我们的数据引擎就可以修改为基于一个指定的DataTask执行。DataTask不仅封装了在其上执行数据迁移的连接对和数据映射,还封装了数据迁移的控制/配置信息。另外,对于定时执行数据传递任务的配置也是封装在DataTask中的。当将DataTask抽象出来后,我们便可以在多处直接复用它:
(1)数据传递引擎
(2)数据检查
(3)定时设置
(4)任务详细设置

    所有的数据迁移任务都序列化后保存在DTS系统的配置文件中,当程序启动时,将自动加载已经存在的所有数据迁移任务。DataTask的类图如下:


    UseTrigger属性说明了当数据源为数据库时,是否采用触发器获取数据增量(前提是,我们必须有创建触发器和增量表的权限)。DataTransferOption记录关于本任务的所有详细设置。TimerConfiguration属性则是本任务的定时执行的时间信息。

    下面详细介绍一下DataTransferOption和TimerConfiguration,首先看DataTransferOption。
(1)DTSType属性说明了数据导出的类型:全部导出、增量导出。
(2)如果是增量导出,则IncreaseAdd、IncreaseUpdate、IncreaseDelete属性表明了要导出哪些增量。
(3)LocalFileLogEnabled属性表明是否记录本地文件日志
(4)SourceFieldInvalidHandleType属性指定了当数据源不满足转换条件时的处理方式:忽略、回滚、记录日志。
(5)DBLogType是记录数据库日志的类型:将日志记录到源数据库、还是目标数据库。
(6)SourcePageSize是分页读取数据源时页的大小。
(7)SourceWhereStr属性是筛选源数据的条件语句。
(8)WhereEnabled属性控制SourceWhereStr是否有效。

    TimerConfiguration记录了定时任务的详细设置,定时任务执行有几种方式:
(1)每小时
(2)每天
(3)每周
(4)每月
(5)每隔制定时间

     public   enum  TimerType
    {
        PerDay, PerHour, PerMonth, PerWeek ,EverySpan
    } 

    定时任务通常都是与增量导出结合在一起的。

     系统中所有的数据迁移任务都由DTConfiguration管理起来,同样的,DTConfiguration管理了系统中的所有连接对。例外的是,所有的映射文件是单独保存在特定的目录下的,而不是由DTConfiguration管理。这是因为,我们经常需要将某个映射文件拷贝到别的地方。DTConfiguration的类图如下:



转到:DTS开发记录(序)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
数据库
阿里云DTS数据迁移和数据同步的差异性分析
阿里云DTS作为一款常用的数据库表迁移工具,提供了功能非常类似的两个功能:数据迁移、数据同步。阿里云DTS产品官网对这两个功能模块进行了简单的区分: 场景1:存量数据批量迁移,建议使用数据迁移功能。 场景2:增量数据实时同步,建议使用数据同步功能。 实际上,无论是数据迁移还是数据同步,都可以做 “结构初始化”+“全量数据迁移”+“增量迁移”,因此两者功能差异并不明显。笔者在多个项目实践DTS数据迁移,在简单需求场景下,将DTS的数据迁移、数据同步进行对比和总结。
|
1月前
|
SQL 数据库
在数据传输服务(DTS)中,当SQL数据迁移报告对象名 'dbo.VQD_Rpt_Report' 无效时
【2月更文挑战第32天】在数据传输服务(DTS)中,当SQL数据迁移报告对象名 'dbo.VQD_Rpt_Report' 无效时
11 1
|
1月前
|
缓存 关系型数据库 数据库
如果数据传输服务DTS(Data Transmission Service)的数据订阅任务突然失败了
【2月更文挑战第29天】如果数据传输服务DTS(Data Transmission Service)的数据订阅任务突然失败了
15 3
|
3月前
|
SQL Java 数据库
dts在数据迁移过程中,出现“无效的表或视图名”错误
dts在数据迁移过程中,如果出现“无效的表或视图名”错误
99 6
|
3月前
|
关系型数据库 MySQL 数据库
dts在数据迁移过程中,如果出现“默认值超出目标数据库支持范围”的错误
dts在数据迁移过程中,如果出现“默认值超出目标数据库支持范围”的错误
26 1
|
3月前
|
SQL 监控 数据库
dts的数据迁移错误
dts的数据迁移错误
31 2
|
4月前
|
缓存
如果数据传输服务DTS(Data Transmission Service)的数据订阅任务突然失败
如果数据传输服务DTS(Data Transmission Service)的数据订阅任务突然失败
31 1
|
4月前
|
数据管理 数据库 数据库管理
数据传输DTS数据迁移可以迁移表当中的部分数据吗?怎么操作呢?
数据传输DTS数据迁移可以迁移表当中的部分数据吗?怎么操作呢?
38 0
|
关系型数据库 MySQL
DTS任务为什么一直处于"修改同步对象中"
DTS任务为什么一直处于"修改同步对象中"
|
机器学习/深度学习 关系型数据库 MySQL
DTS数据迁移使用体验
原来业务升级需要使用RDS数据库,原本在阿里云轻量服务器上保存的数据需要迁移到RDS,我原本估计的工作量是3天时间,没想到通过阿里云的DTS数据迁移工具只要了5个小时不到,完成了100万行数据的迁移,大大超出了我的预期。
DTS数据迁移使用体验