本文主要介绍 DMDRS 关于数据迁移、数据同步、数据分发和数据转换的主要功能特性以及其他功能特性。
一、数据迁移
1.1 迁移对象
支持表、索引、序列、主键、外键、约束、注释、视图、触发器、函数、存储过程、包、类、同义词和自定义类型数据库对象的迁移。
1.2 数据装载
- 分组装载
装载表数据时,可以使用分组装载功能对表数据进行快速装载。支持将基表切分成多个部分以便多任务并行装载,并在目标数据库上利用表分组 LSN 过滤已装载数据日志,以实现表的并发快速装载。
- 交换分区装载
装载分区表数据时,可以使用交换分区功能对分区表数据进行快速装载。根据被装载表的分区分别装载多个基表,并在目标数据库上利用交换分区功能将这些基表合并为同一张表。每个分区都启用一个独立的线程来装载该分区的数据,从而实现多线程并行地装载分区表。
- 断点续传
装载表数据时,根据表数据量的大小采用不同的装载方式,数据量小的表会整表装载,数据量大的表会将数据分割为多个小数据集后再装载。在装载过程中,DMDRS 会记录每个数据集的装载状态。根据装载状态进行不同处理,对未开始装载的数据集继续装载,对装载错误的数据集进行重装,对已成功装载的数据集则不处理,从而实现表数据的装载断点续传功能。
- 快速装载
如果目标数据库支持快速装载接口(如 Oracle 、DM),装载表数据时,可以使用快速装载功能,目标 DMDRS 接收到装载数据后,会使用数据库提供的快速装载接口进行数据入库,加快装载效率。
二、数据同步
2.1 数据装载
- 分组装载
装载表数据时,可以使用分组装载功能对表数据进行快速装载。支持将基表切分成多个部分以便多任务并行装载,并在目标数据库上利用表分组 LSN 过滤已装载数据日志,以实现表的并发快速装载。
- 交换分区装载
装载分区表数据时,可以使用交换分区功能对分区表数据进行快速装载。根据被装载表的分区分别装载多个基表,并在目标数据库上利用交换分区功能将这些基表合并为同一张表。每个分区都启用一个独立的线程来装载该分区的数据,从而实现多线程并行地装载分区表。
- 断点续传
装载表数据时,根据表数据量的大小采用不同的装载方式,数据量小的表会整表装载,数据量大的表会将数据分割为多个小数据集后再装载。在装载过程中,DMDRS 会记录每个数据集的装载状态。根据装载状态进行不同处理,对未开始装载的数据集继续装载,对装载错误的数据集进行重装,对已成功装载的数据集则不处理,从而实现表数据的装载断点续传功能。
- 快速装载
如果目标数据库支持快速装载接口(如 Oracle 、DM),装载表数据时,可以使用快速装载功能,目标 DMDRS 接收到装载数据后,会使用数据库提供的快速装载接口进行数据入库,加快装载效率。
2.2 添加增量同步表
支持动态添加或删除增量同步表,在已有同步链路中,添加增量同步表后,源 DMDRS 会自动进行表的增量数据的同步。
2.3 添加同步表
支持动态添加或删除同步表,在已有同步链路中,添加同步表后,源 DMDRS 会自动进行表的全量数据装载,装载完成后自动进行增量数据的同步。
2.4 离线日志解析
当只有数据库归档文件和离线字典文件时,DMDRS 支持在不连接数据库的情况下,通过指定过滤条件以及 LSN 范围将数据库归档文件解析成 SQL 语句存放在文件中。
2.5 远程日志读
适用于源数据库为 DSC、Oracle RAC 和 MySQL 数据库,源 DMDRS 无需部署在源数据库服务器本地,可以部署在其他服务器通过远程日志读功能,实现远程归档日志实时读取捕获解析,完成数据实时同步。当源数据库为 DSC 时,DSC 必须处于 ASM 模式。
2.6 数据库归档删除
支持将源 DMDRS 已经同步的归档文件删除或者备份到指定目录,防止归档文件对数据库服务器空间的过度占用。
2.7 DMDRS 主备
支持 DMDRS 主备功能,支持一主一备。DMDRS 主备节点分别部署在数据库集群节点或主备集群节点上,当 DMDRS 主节点所在的数据库节点故障后,能自动切换到 DMDRS 备节点所在的数据库上继续同步,避免同步中断。
2.8 对象映射
支持对象名的映射,包括数据库名/容器名、表空间名、模式名和表名。
2.9 数据类型映射
支持数据类型映射以及映射类型的自定义修改。
2.10 分组执行
支持在数据执行时,将同步表进行分组,不同分组的事务执行策略、事务合并策略和执行优先级等不相同,用于满足不同场景需求。若一个事务涉及多个表,并且这些表归属不同的分组,会将事务按照表拆分为多个子事务,子事务将作为独立的事务去执行。
三、数据分发
3.1 高性能、高吞吐量持久化存储
DMDRS 与 DMDSS 服务共同构建高性能的同步分发服务,将源 DMDRS 的数据进行持久化存储,实现大规模数据量分发,适用于一对多的同步场景。
3.2 基于映射规则的数据分发
目标 DMDRS 获取分发数据时,支持配置数据映射规则,只获取需要的数据。
3.3 基于 DMDSS 主备的数据分发
数据分发支持部署配置为 DMDSS 主备分发,避免 DMDSS 单点故障问题。
四、数据转换
4.1 实时转换
CVT 模块与 CPT 模块或者 EXEC 模块共同使用,以数据库日志中单个操作作为最小单元进行数据清洗转换,将 CPT 模块或 EXEC 模块获取的数据进行实时转换。
4.2 可编程
提供表名定义、变量定义和转换定义等流程定义语句,支持循环语句、条件语句和返回语句等语法,支持 +,-,*,/,not,and,or,like 等运算符,支持丰富的转换函数,可实现自定义编程式的转换逻辑编写。
4.3 支持转换函数
支持自定义系统函数包、支持数据函数、字符串函数、日期时间函数和类型转换函数等。
4.4 支持键值对存储
提供容器类型的结构支持,容器是指能够存储 key-value 等键值对,可以保存流程转换过程中的一些信息。例如需要关联查询过滤的情况,可以将关联表的同步操作捕获并存储在容器中,需要时直接在容器中查找,减少与数据库的交互。
4.5 支持联机查询
提供对数据库的联机查询功能,DMDRS 在数据实时转换时,可以联机查询数据库中与转换数据相关的结果集并保存,便于数据转换时关联。