DTS开发记录(6)-- 数据映射

简介: 在DTS开发记录(4)-- 映射列一文中,我们详细的讨论了参与映射的源列和目标列,在拥有了映射列的基本概念的基础上,我们可以讨论数据映射DataMapping了。    数据映射主要由一组映射项(MappingItem)组成,它包含了源数据大纲到目标数据大纲的详细的完整的映射关系。
    在DTS开发记录(4)-- 映射列一文中,我们详细的讨论了参与映射的源列和目标列,在拥有了映射列的基本概念的基础上,我们可以讨论数据映射DataMapping了。
    数据映射主要由一组映射项(MappingItem)组成,它包含了源数据大纲到目标数据大纲的详细的完整的映射关系。
    首先要注意一点,数据映射与数据大纲绑定,但是并不与任何特定的数据库表绑定。这样,DataMapping可以运用在不同的数据库表上,只要对应的数据库表结构兼容DataMapping要求的数据大纲即可。
   
1.MappingItem 映射项
    一个映射项与一个目标列是1:1对应的。如果一个目标列参与了映射,那么它就能并只能携带一个MappingItem。MappingItem包含了一个或多个源列如何映射到目标列。如果MappingItem中只包含一个源列,则称之为“简单映射”;如果MappingItem中包含了多个源列,则称之为“合并映射”。
    下面是MappingItem接口的类图:


    IMappingItem的Source属性是一个ISourceMappingColumn的集合,当集合中的元素个数大于1时标志为合并映射,当集合中元素个数等于1时标志为简单映射。
    IMappingItem的Source中不仅可以包含普通的源列,还可以包含源子列,这点我们在DTS开发记录(4)-- 映射列一文中已经专门强调过。
    我们注意到,IMappingItem还有一个Verify方法,该方法用于验证本映射项中的映射规则是否合法 。比如,IMappingItem的Source中包含多个源(子)列,但是对应的IDestMappingColumn所携带的合并表达式却为空,Verify将验证出该映射项不合法。不合法的映射项将无法参与数据传递任务。

2.DataMapping
    数据映射除了包含一组映射项(MappingItem)之外,还包括一些其它重要元素,如源数据大纲和目标数据大纲、主键信息等。下图是DataMapping类图:

    DataMapping携带了源数据大纲和目标数据大纲,数据引擎在启动的时候会分别使用这两个大纲来验证数据源和数据目标是否与大纲兼容,如果不兼容,则不能进行数据传递。
    我们看到DataMapping也有一个Verify方法,该方法首先会依次调用每个MappingItem的Verify方法,如果都通过,会再继续根据导出的形式(全部导出、增量导出)作一些其它方面的验证,如主键验证、主键映射验证等。
    非常重要的,DataMapping有一个SourceMappingColumnManager属性,SourceMappingColumnManager用于管理所有参与映射的源列、源子列。因为并非所有的源列都参与映射,而且参与映射的源列可能非常复杂,比如源列分裂、变形、子列参与变形映射等。这样,当我们重新加载DataMapping以进行编辑的时候,我们就可以从SourceMappingColumnManager获取每个源列的分裂、变形、映射等详细情况。
    DataMapping是可序列化的,因为我们需要将其保存成文件,以便日后可以重新编辑并使用。DataMapping既然要可序列化,毫无疑问SourceMappingColumnManager也需要可序列化。所以,序列化后的DataMapping保存了关于一个完整映射的所有细节,这样反序列化就可以将DataMapping还原为原来的状态以进行编辑或控制数据传递的数据转换过程。
    
    数据引擎基于连接对(根据连接对可以创建对应的导入数据管道和导出数据管道)和数据映射工作,到这里为止,我们已经介绍完了连接对和数据映射,接下来就可以进入数据传递系统最核心的部分--数据引擎。
    在进行数据传递工作之前,我们也许非常需要一种检查工具来检查、分析数据源中的数据,看看哪些数据不满足转换条件、不满足的原因是什么。用户也许需要根据检查工具的分析结果来做一些与数据传递相关的重要决定。
    所以,下一节的内容是“数据检查”,那将是非常“琐碎”的一节, 因为你需要考虑到任何一种细微的转换失败的可能,正所谓事无巨细!

  
转到:DTS开发记录(序)
目录
相关文章
|
7月前
|
关系型数据库 MySQL 数据挖掘
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
DTS 作为阿里云核心的数据交互引擎,以其高效的实时数据流处理能力和广泛的数据源兼容性,为用户构建了一个安全可靠、可扩展、高可用的数据架构桥梁。阿里云数据库 SelectDB 通过与 DTS 联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL / RDS MySQL / PolarDB for MySQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
|
7月前
|
SQL 分布式计算 监控
在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
【2月更文挑战第32天】在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
74 6
|
24天前
|
弹性计算 安全 容灾
阿里云DTS踩坑经验分享系列|使用VPC数据通道解决网络冲突问题
阿里云DTS作为数据世界高速传输通道的建造者,每周为您分享一个避坑技巧,助力数据之旅更加快捷、便利、安全。本文介绍如何使用VPC数据通道解决网络冲突问题。
80 0
|
4月前
|
NoSQL MongoDB 数据库
DTS 的惊天挑战:迁移海量 MongoDB 数据时,捍卫数据准确完整的生死之战!
【8月更文挑战第7天】在数字化时代,大数据量的MongoDB迁移至关重要。DTS(数据传输服务)通过全面的数据评估、可靠的传输机制(如事务保证一致性)、异常处理(如回滚或重试),以及迁移后的数据校验来确保数据准确无损。DTS还处理数据转换与映射,即使面对不同数据库结构也能保持数据完整性,为企业提供可靠的数据迁移解决方案。
71 2
|
6月前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用问题之dts是否支持传输数据到mc主键表2.0
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
存储 数据采集 NoSQL
DTS在迁移大数据量的MongoDB数据库时如何保证数据的准确性和完整性?
【6月更文挑战第4天】DTS在迁移大数据量的MongoDB数据库时如何保证数据的准确性和完整性?
150 1
|
6月前
|
NoSQL 关系型数据库 MongoDB
DTS支持哪些非关系型数据库的数据交互?
【6月更文挑战第4天】DTS支持哪些非关系型数据库的数据交互?
74 1
|
7月前
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|数据不一致修复大法
阿里云数据传输服务DTS在帮助用户迁移数据、同步数据时,在某些复杂场景下会出现源库与目标库数据不一致的问题,造成数据错误,给用户带来困扰。由于数据不一致的问题很难完全避免,为了及时修复不一致的数据,DTS产品推出数据订正功能,保障用户在同步\迁移数据时的数据一致性。本文介绍了产生数据不一致的一些典型场景,并重点阐述了如何使用DTS数据订正功能来修复不一致的数据。
605 4
|
7月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之使用DTS从RDSMySQL数据库同步数据到云Kafka,增量同步数据延迟时间超过1秒。如何诊断问题并降低延迟
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
关系型数据库 MySQL OLAP
数据传输DTS写入问题之无法获取数据如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。