数据集成是一个稳定高效、弹性伸缩的数据同步平台,致力于提供在复杂网络环境下、丰富的异构数据源之间高速稳定的数据移动及同步能力。
使用限制
数据同步:
支持且仅支持结构化(例如RDS、DRDS等)、半结构化、无结构化(OSS、TXT等,要求具体同步数据必须抽象为结构化数据)的数据的同步。即数据集成仅支持传输能够抽象为逻辑二维表的数据同步,不支持同步OSS中存放完全非结构化的数据(例如一段MP3)至MaxCompute。
网络连通:
支持单地域内及部分跨地域的数据存储相互同步、交换的数据同步需求。 部分地域之间可以通过经典网络传输,但不能保证其连通性。如果测试经典网络不通,建议您使用公网方式进行连接。
数据传输:
数据集成仅完成数据同步(传输),本身不提供数据流的消费方式。
数据一致性:
数据集成同步仅支持at least once,不支持exact once,即不能保证数据不重复,只能依赖主键+目的端能力来保证。
同步任务源端和目标端字段类型需要注意精度,如果目标端字段类型最大值小于源端最大值(或最小值大于源端最小值,或精度低于源端精度),可能会导致写入失败或精度被截断的风险。(不区分源端和目标端类型,也不区分离线还是实时同步)
离线(批量)同步简介
DataWorks的离线同步暂不支持跨时区同步数据。如果同步任务中同步的数据源与使用的DataWorks资源组不在同一个时区,则会导致同步的数据有误。
数据集成主要用于离线(批量)数据同步。离线(批量)的数据通道通过定义数据来源和去向的数据源和数据集,提供一套抽象化的数据抽取插件(Reader)、数据写入插件(Writer),并基于此框架设计一套简化版的中间数据传输格式,从而实现任意结构化、半结构化数据源之间数据传输。
实时同步简介
DataWorks的实时同步暂不支持跨时区同步数据。如果同步任务中同步的数据源与使用的DataWorks资源组不在同一个时区,则会导致同步的数据有误。
数据集成的实时同步包括实时读取、转换和写入三种基础插件,各插件之间通过内部定义的中间数据格式进行交互。
一个实时同步任务支持多个转换插件进行数据清洗,并支持写入插件实现输出功能。同时针对某些场景,支持整库实时同步全增量同步任务,您可以一次性实时同步多个表。详情请参见实时数据同步。
全增量同步任务简介
实际业务场景下,数据同步通常不能通过一个或多个简单离线同步或者实时同步任务完成,而是由多个离线同步、实时同步和数据处理等任务组合完成,这就会导致数据同步场景下的配置复杂度非常高。
为了解决上述问题,DataWorks提出了面向业务场景的同步任务配置化方案,支持不同数据源的一键同步功能,例如,“一键实时同步至Elasticsearch”、“一键实时同步至Hologres”和“一键实时同步至MaxCompute”等功能。通过此类功能,您只需要进行简单的配置,就可以完成一个复杂的业务场景。
以业务数据库数据同步到MaxCompute数据仓库为例,当有大量的数据存储在数据库系统里,需要将数据库中的全量及增量数据同步到MaxCompute进行数仓分析时,数据集成传统方式是通过全量同步或者依赖数据库表中的modify_time等字段进行增量同步。但实际生产场景下,数据库表中不一定存在modify_time等字段,因此不能使用传统的基于JDBC抽取的方式进行增量同步。而“一键实时同步至MaxCompute”功能实现了数据库全增量实时同步到MaxCompute以及在MaxCompute上进行自动的全增量合并,可以使整个同步场景化繁为简。
全增量同步任务具有如下优势:
全量数据初始化。
增量数据实时写入。
增量数据和全量数据定时自动合并写入新的全量表分区。
全增量同步任务产品能力,详情请参见:数据集成侧同步任务能力说明。
复杂网络环境下的数据源同步
数据集成支持在复杂网络环境下的数据源进行异构数据源间的数据同步,包括但不限于以下环境:
数据源与DataWorks工作空间在同一个阿里云主账号,并且同一个Region。
数据源与DataWorks工作空间不在同一个阿里云主账号。
数据源与DataWorks工作空间不在同一个Region。
数据源在非阿里云环境。
但在进行上述网络环境下的数据同步前,您需要确保数据集成用于执行数据同步的资源组与您将同步的数据来源端与目标端网络环境的连通,数据集成支持您根据数据源所在网络环境,选择对应的网络同步任务,关于网络连通方案选择与配置资源组与数据源的网络连通,详情请参见:配置资源组与网络连通。
基本概念
并发数
并发数是数据同步任务中,可以从源并行读取或并行写入数据存储端的最大线程数。
限速
限速是数据集成同步任务可以达到的传输速度限制。
脏数据
脏数据是对于业务没有意义,格式非法或者同步过程中出现异常的数据。单条数据写入目标数据源过程中发生了异常,则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。例如,源端是VARCHAR类型的数据写到INT类型的目标列中,导致因为转换不合理而无法写入的数据。您可以在同步任务配置时,控制同步过程中是否允许脏数据产生,并且支持控制脏数据条数,即当脏数据超过指定条数时,任务失败退出。
由于脏数据原因导致离线/实时任务失败,同步任务之前已经成功写入的数据并不会回滚或撤销。
数据集成为了提升性能采用批量写入目的端方式,当写入异常时,该批次数据是否能回滚取决于目的端是否支持事务机制。数据集成本身不支持事务机制。
数据源
DataWorks所处理的数据的来源,可能是一个数据库或数据仓库。DataWorks支持各种类型的数据源,并且支持数据源之间的转换。
在数据集成同步任务配置前,您可以在DataWorks数据源管理页面,配置好您需要同步的源端和目标端数据库或数据仓库的相关信息,并在同步过程中,通过选择数据源名称来控制同步读取和写入的数据库或数据仓库。