Tapdata 技术博客
Tapdata 技术博客

Tapdata 数据实时同步功能介绍 | Tapdata

2021-11-08 20:09 Tapdata

数据传输功能是数据中台管理的入口,同时也是 Tapdata 的核心优势,具体包括:数据迁移、数据同步、数据推送、数据订阅等功能,零代码、全程可视化图形配置的方式帮助用户快速的实现数据的传输与发布。


Tapdata DaaS 任务编排.png

数据同步类型

初始化+增量同步:初始化+增量同步是指把目标数据库原有数据全部同步到目标库,同时当目标库的数据发生变化时,也会实时同步到目标库。


初始化:只一次性将源表数据同步到目标表。

增量同步:当源表数据发生变更时会同步到目标表中。

设置方法:进入任务编排界面,设置好要同步的源和目标表。点击上方的设置按钮设置数据同步类型

数据写入模式

数据从源端流向目标端时,表中的每一条记录,或者是数据集中的每一条文档,是任务编排处理的一个个基本单元。

当数据一条条在节点之间流动时,数据写入模式决定了每一条记录或者文档,在存储到目标端时,是如何变化的。

数据写入模式,包括有:

  • 追加写入,Append into Target

  • 更新已存在或插入新数据,Match and Merge or Insert New

  • 更新写入,Match and Merge

  • 更新内嵌数组,Match then Embed as Array in target


目标端如果是MongoDB这类非关系型数据库,不要求数据结构与源端一致。


否则,源端与目标端的数据结构和字段类型都要一致。

1. 追加写入

源端通过这种模式,向目标端添加一条条新的记录或文档。


在此模式下,不需要设置【关联条件】和【关联后写入路径】属性。

2. 更新已存在或插入新数据

  • 【关联后写入路径】属性为空的情况

在此模式下,当设置好源端和目标端的【关联条件】后,运行时,会自动比对【关联条件】中设置的源端和目标端的字段值。

当源端中传过来的一条记录,与目标端中所有的记录都不匹配时,会作为新记录插入到目标端。

当源端中传过来的一条记录,与目标端中的一条或多条记录匹配时,目标端匹配的记录会被全部更新(或者合并)。


  • 目标端如果是MongoDB非关系型数据库时,目标端的被匹配的记录,不仅仅是被更新,在某些场景下会被合并。

  • 例如:源端的客户表有客户ID,姓名,手机,邮箱四个字段,目标端的客户数据集有客户ID,姓名,手机三个字段。

  • 当源端与目标端的字段客户ID匹配时,目标端的客户数据集中的姓名,手机字段的值会被更新,并且会增加源端客户表中的邮箱字段和值。


需要注意的是,当源端和目标端都是MongoDB数据库时,并且源端和目标端数据集的匹配,不是MongoDB的默认主键_id,而是其它的field,这时需要把源端的_id先做一次改名(用【处理节点】-【字段】进行更名处理),然后再向目标端写入。


  • 【关联后写入路径】属性不为空的情况

在此属性中的字符串,是源端传来的记录,在目标端的存储路径。即在目标端的一条文档中新增对象类型field的名称。


此处属性中的字符串不能与目标端的一条文档中已有的field同名。


当源端中传过来的一条记录,与目标端中的一条或多条文档匹配时,会作为对象嵌入到新增的对象类型field中。


如果源端持续有与【关联条件】匹配的多条记录传过来,会作为对象更新嵌入到这个对象field中。


当源端中传过来的一条记录,与目标端记录都不匹配时,会作为新记录插入到目标端。

3. 更新写入

  • 【关联后写入路径】属性为空的情况


在此模式下,当设置好源端和目标端的【关联条件】后,运行时会自动比对【关联条件】中设置的源端和目标端的字段值。


当源端中传过来的一条记录,与目标端中所有的记录都不匹配时,会被忽略。


当源端中传过来的一条记录,与目标端中的一条或多条记录匹配时,目标端匹配的记录会被全部更新(或者合并)。


需要注意的是,当源端和目标端都是MongoDB数据库时,并且源端和目标端数据集的匹配,不是MongoDB的默认主键_id,而是其它的field,这时需要把源端的_id先做一次改名(用【处理节点】-【字段】进行更名处理),然后再向目标端写入。


  • 【关联后写入路径】属性不为空的情况

在此属性中的字符串,是源端传来的记录在目标端的存储路径。即在目标端的一条文档中新增对象类型field的名称。


此处属性中的字符串不能与目标端数据集中已有的field同名。


当源端中传过来的一条记录,与目标端中的一条或多条记录匹配时,会作为对象嵌入到新增的对象类型field中。


如果源端持续有与【关联条件】匹配的多条记录传过来,会作为对象更新嵌入到这个对象field中。


当源端中传过来的一条记录,与目标端记录都不匹配时,会被忽略。

4. 更新内嵌数组

  • 【关联后写入路径】属性此时不能为空


在此属性中的字符串,是源端传来的记录在目标端的存储路径。即在目标端的一条文档中新增对象类型field的名称。


此处属性中的字符串不能与目标端数据集中已有的field同名。


当源端中传过来的一条记录,与目标端中的一条或多条记录匹配时,会作为对象嵌入到新增的数组类型field中。


如果源端持续有与【关联条件】匹配的多条记录传过来,会作为对象追加嵌入到这个数组field中。


当源端中传过来的一条记录,与目标端记录都不匹配时,会作为新记录插入到目标端中。

最后

如果你在运行上述任务编排后,发现在数据库中多了一些,后缀名为_TPORIG的表。这些是由任务编排产生的中间表。


Tapdata Real Time DaaS 是集数据实时同步,可视化 ETL 及数据开发、数据治理及低代码 API 发布为一体的实时数据服务平台,支持私有化部署。免费试用tapdata.net‍  

查看完整产品文档:https://tapdata.net/docs-tapdata-enterprise.html


推荐阅读