Tapdata 数据库实时同步的技术要点

2021-06-18 10:00

Tapdata 专注于实时数据的处理技术,在数据库迁移和同步方面,Tapdata 的表现非常优秀,实时、多元、异构,尤其在关系数据库到非关系数据库之间的双向同步方面,无论是从操作上,还是效率上,都体现了业界领先的水平。

本文重点阐述 Tapdata 在数据库实时同步方面的技术要点。

基于数据库日志的实时迁移或同步

在数据库同步场景下,Tapdata 支持批量及增量的数据迁移及同步。Tapdata 主打的是实时场景,所以在数据库增量同步上是一个关键能力。目前 Tapdata 支持的数据源,基本上都支持增量同步。大部分场景下 Tapdata 通过解析数据库日志的方式来获得源端数据库的增删改操作,然后将这些操作转化为标准的数据库事件,推送到内部处理队列。

数据同步流程

那么,Tapdata 是怎么样来做数据同步的呢?

第一层的数据同步是基于CDC机制,也就是说它并不是用一个 Select 语句去定期的去扫最近有什么样的数据,或者是全量把它拿过来,而是基于数据库的事务日志,比如说 Oracle 的话就是 Redo log,SQL Server 的话就是它的 CDC 机制,MongoDB 有它的那个 Oplog,然后MySQL 的话就用它的 Binlog。为了监听这些 log 日志,Tapdata 每一个数据都有一个 log parser,把它拿出来以后,当监听到变化,就会把它转化成一个 update 语句或者 insret 的语句或者 delete 语句。在目标库里面,Tapdata 还创建了 FDM ,即基础层和主数据层。把它写到目标库里面,然后通过这种方式,等于是在目标平台里面建了一个逻辑的镜像,跟源库是是能保持高度的同步的那这种方式,这种 CDC 事件的延迟一般是在几百毫秒,往往在1~2秒之内,我们就可以把数据同步到这个目标的平台,所以同步的时延是非常短的,大概率是亚秒级别。

以下是各个数据库的采集增量数据的方式

  • Oracle: 通过LogMiner 对redo log/archive log解析数据库日志

  • SQLServer: 通过SQLServer自带的触发器方式获取数据库事件

  • MySQL: 通过解析binlog方式来获取数据库事件

  • MongoDB: 通过解析Oplog方式来获取数据库事件

  • DB2: 通过解析DB2日志来获取数据库事件

  • PostgreSQL: 通过解析日志方式来获取数据库事件

用户在开始同步任务的时候可以使用以下模式之一:

  • 全量迁移,然后紧接着增量迁移

  • 仅增量同步,从指定时间点开始

  • 仅增量同步,从当前时间开始

基于 Pipeline 的流数据处理模式

Tapdata 底层使用基于Hazelcast Jet 的 DAG 流处理引擎。该引擎支持基于 DAG(有向无环图)的任务链流计算能力。用户可以通过 Pipeline API 构建一个任务链的处理流程,包括数据源读取,数据处理,过滤,聚合,最后输出到目标 sink。该 Pipeline 会被系统转化为 Core DAG 在流数据处理引擎中执行。如下图所示:

这些 DAG 里面的计算节点都是一个基于记录(原生流),而非基于批的处理。源端每产生一条新的记录(R1),会由数据库采集节点开始得到马上的处理,并随之交到 DAG 的下一个节点。通过结合 JSDK,用户可以按照 DAG 的规则,构建出非常复杂的数据库处理链路,并交给系统的流数据引擎来完成数据的处理。

流处理引擎的计算框架采用协程机制。与传统线程不同,DFS 并不会为每一个数据处理任务起一个单独的线程(线程资源是有限的),而是用一种类似于 Coroutines 的方式,处理任务的执行启停都是由Java端来完成。底层的线程会持续执行, 并不断地将控制交给框架管理程序来协调不同任务之间的计算工作。由于避免了昂贵的线程上下文切换,协程在很多时候可以显著提高处理速度。

Tapdata 流数据处理引擎支持以下Transformation能力(operator):

  • map(fn)

  • filter(fn)

  • mapWithService( serviceFn)

  • mapWithCache

  • mapWithReplicatedCache

  • hashJoin()

  • merge()

在实时流数据统计方面,tapdata 可以支持以下时间窗相关的函数

  • aggregate

  • groupingKey

  • rollingAggregate

  • window

  • tumblingWindow

  • slidingWindow

  • sessionWindow

  • mapStateful

NoSQL 支持

常见 ETL 工具大部分为针对于关系型数据库如 Oracle、MySQL 等。tapdata 在提供对关系型数据库的支持的基础之上,更提供完善的 NoSQL 支持,如 MongoDB,Elastic Search 以及Redis 等。目前企业的数据同步需求很大一部分是从关系型数据库实时同步到分布式 NoSQL,用来解决关系数据库的查询性能瓶颈及业务创新瓶颈。

Tapdata 的研发团队在处理 NoSQL 上有天然的优势,这跟这个团队成员大部分来自于 MongoDB 原厂、社区代码贡献者有关。

NoSQL 数据库的特点就是文档结构往往基于JSON,一个文档包含了一对多和多对一关系。在同步的时候需要从多个表按照相应的关系写入到目标 JSON,并且还需要在源表子表更新时同步更新目标JSON的子文档,如下图所示。

Tapdata 支持以下高级 JSON 同步特性

  • 一对一合并同步更新

  • 多对一合并同步更新

  • 一对多合并同步更新

数据校验、增量校验

数据校验是任何涉及到数据同步或者迁移工具的必备功能。完善的校验能力可以给用户足够的信心来使用数据同步工具。

Tapdata 的校验数据类型包含以下:

  • 行数校验

  • 哈希校验

  • 高级校验(自定义)

Tapdata 校验采用 Merge Sort 方式实现,可以快速完成对大数据表的迁移同步校验工作。测试表明对一个 5000 万行的表,只需要不到 2 分钟左右就可以完成一次全量校验。校验结果分析包括一致率,错误数据比对等。

系统截图

此外,Tapdata 支持独创的增量校验功能。用户启动对指定的数据同步任务的增量校验功能以后,Tapdata 将对需要校验的表的 CDC 事件单独记录到一个缓存区,并启动一个后台线程,按照用户指定的检验策略,对缓存区的新增 CDC 事件进行解析。解析的时候会根据源表的DDL 获取主键信息,然后依次查询到目标和源表的数据进行比对。

容错机制

Tapdata 提供一下在部署上提供高可用机制以及在数据写入上提供幂等性操作来保证在错误状态下,任务可以持续运行并且数据可以获得最终一致。

每一个数据处理任务在运行的时候会频繁的向管理端汇报健康状况(每 5 秒一次)。如果管理端在一分钟之内没有收到汇报,则认为该处理节点已经离线。此时另一个存活节点会检查到这个没有心跳的任务,并将其接管过来。

每一个数据处理任务会在运行的时候频繁记录当前处理流的位置。当任务重新开启的时候,会自动从该位置从新开始。

为实现上述的容错机制,Tapdata 要求源端和目标端满足以下条件:

  • 源端保留足够长时间的操作日志(通常 1 天以上)

  • 目标端支持幂等性操作或能够参与分步式二阶段事务

附性能参数

Tapdata 是一个企业级的商业产品,数据实时同步和迁移只是其中一部分的功能,想了解产品的更多内容,可以访问官网,提交测试申请可以获得运行的demo。

官网地址: https://www.tapdata.net/

此外, Tapdata 还推出了异构数据实时同步的云服务,登录云服务平台,只需要简单三步操作,即可实现数据实时同步,更令人兴奋的是,该功能是免费使用的。

云服务平台:https://cloud.tapdata.net/


推荐阅读

Tapdata 推出“钛计划”公益项目,着力打通数据孤岛助推社会数字化升级

为响应数据要素市场化配置改革政策方向的指引,Tapdata 推出“钛计划”打通数据孤岛公益行动,面向非盈利机构(如各城市政务服务数据管理局、社会公益组织/项目等)以及为社会培养数据技术人才的相关培训机构,提供 Tapdata 实时数据服务平台的特殊免费授权,助推公共领域数据互通、共享与实时应用......

Tapdata 钛铂数据的产品理念

Tapdata 是全球首个基于数据即服务架构理念、面向 TP 场景的企业实时主数据服务平台,可以帮助企业快速实现主数据的统一管理和发布,并为所有数据库、数仓、大数据平台提供最实时的源数据,让数据随时可用。

Tapdata Cloud 是什么?

Tapdata Cloud 是钛铂数据自研的异构数据库实时同步工具 Tapdata Replicator 的云服务版本,现在免费提供所有开发者和企业使用Tapdata Cloud 目前支持 Oracle、MySQL、PostgreSQL、SQL Server、MongoDB、Elasticsearch 之间的数据迁移和同步,未来将陆续上线 DB2、Sybase ASE、Redis、Kafka 等。

什么是数据即服务(Data as a Service)?

数据即服务(DaaS)是一种数据管理策略,旨在利用数据作为业务资产来提高业务创新的敏捷性。它是自 1990 年代互联网高速发展以来越来越受欢迎的“一切皆服务”(XaaS)趋势下关于数据服务化的那一部分,介于 PaaS 和 SaaS 之间。与 SaaS 类似,DaaS 提供了一种方式来管理企业每天生成的大量数据,并在整个业务范围内提供这些有价值的信息,以便于进行数据驱动的商业决策。同时,我们也...

什么是数据虚拟化(Data Virtualization)?

本文将简单易懂地介绍数据虚拟化技术及数据虚拟化软件架构的实现方法,尽量避免教条主义。如需要了解虚拟化定义,可通过wiki 百科了解。先引用一段百度百科的文字来说明数据虚拟化的定义:数据虚拟化(data virtualization)是用来描述所有数据管理方法的涵盖性术语,这些方法允许应用程序检索并管理数据,且不需要数据相关的技术细节,例如它格式化的方式或物理位置所在。正如百科的定义,采用数据...

Tapdata 数据库实时同步的技术要点

Tapdata 专注于实时数据的处理技术,在数据库迁移和同步方面,Tapdata 的表现非常优秀,实时、多元、异构,尤其在关系数据库到非关系数据库之间的双向同步方面,无论是从操作上,还是效率上,都体现了业界领先的水平。本文重点阐述 Tapdata 在数据库实时同步方面的技术要点。

教育中台与第三方系统对接整合数据案例

最近, 南京秦淮区教育中台系统,成功地和市系统进行了一次圆满对接。通过教育中台提供的统一数据能力和低代码API对接能力,实现了对市系统数据的实时推送和拉取,以及各类业务逻辑上的处理。这次对接为南京市中小学生创客大赛的成功举办提供了及时可靠的数据支撑, 体现了中台系统在快速响应业务方面的优越性。

周生生 | 全渠道商品中心建设

通过Tapdata 构建全渠道商品中心,实现: - 支持中国大陆港澳台的上千家门店的生产环境; - 使用JS脚本来进行流处理计算,业务需求从开发到上线过程快至 1 天以内; - 任务配置与执行监测全程可视化操作,不懂技术也能完成操作,极大降低维护成本; - 一套产品可满足不同需求,根据业务需求产出不同类型的业务模型节省大量人力物力。

关系型数据库到MongoDB实时数据同步解决方案

使用MongoDB作为主机下行或新一代数据库的选择,将业务数据从已有主机或Oracle等关系型数据库复制到MongoDB; 使用Tapdata Replicator的CDC技术,实时监听现有业务库的数据变动并同步至MongoDB; 使用Tapdata 的RDM技术将关系型表合并转型到MongoDB JSON数据结构,并保持和源库的高度数据一致; 在MongoDB上进行新业务的开发。

Tapdata肖贝贝:实时数据引擎系列(一)-新鲜的数据流

前言2006 年诞生的 hadoop 和 她周边的生态, 在过去的这些年里为大数据的火热提供了足够的能量, 十几年过去了, 场景在变化, 技术在演变, 大家对数据的认知已经不再局限于 T+1 与 高吞吐高延迟 为主要特征的上一代框架理念, 在真实的场景里, 实时, 准确, 多变 的数据也发挥着越来越重要的作用为满足这些新的需求, 各种框架和中间件如雨后春笋般不断涌出hive 的出现让这头大象...
联络我们:
Email:team@tapdata.io    电话:0755-26656080
深圳市南山区临海大道香江金融中心 2410-13
官方服务号
Tapdata 微信公众号
扫码关注