数据集成产品分析(一)_数据集成工具有哪些
wptr33 2025-10-14 06:14 2 浏览
编辑导语:数据集成产品是数据中台建设的第一环节,在构建数据中台或大数据系统时,首先要将企业内部各个业务系统的数据实现互联互通,从物理上打破数据孤岛。本文作者对数据集成产品进行了分析,一起来看一下吧。
数据集成产品致力于异构数据源之间的数据交换与汇聚,该类产品是数据中台建设的第一环节,笔者将通过两篇文章对数据集成产品进行分析。
数据同步,又称为数据集成、数据迁移,主要用于实现不同系统间的数据流转。
为什么会有数据同步这类产品?
在企业中,业务的快速发展产生了大量数据,也催生出多种应用系统,各系统承载不同类型的数据,对应着不同的数据存储方式。
而对于构建数据中台或大数据系统,首先需要将企业内部各个业务系统的数据实现互联互通,从物理上打破数据孤岛,而这主要通过数据汇聚和同步的能力来实现。
数据同步方式有多种:API接口同步、数据文件同步和数据库日志解析同步,适用于不同的业务场景。
本次分享的数据同步是基于数据库日志解析的方式实现,其主要应用场景是:数据从业务系统同步到数仓,和数据从数仓同步到数据应用两个方面。
一、数据集成产品简介
1. 产品介绍
数据同步致力于保证数据在不同数据源之间被高效准确地迁移。根据数据时效性要求和应用场景,数据同步可分为离线同步和实时同步:
1)离线同步
主要用于大批量数据的周期性迁移,对时效性要求不高,一般采用分布式批量数据同步方式,通过连接读取数据,读取数据过程中可以有全量、增量方式,经过统一处理后写入目标存储。
成熟的产品有:Sqoop、DataX、kettle等。
2)实时同步
针对数据时效性要求高的场景,其将源端数据的变化实时同步到目标端数据源中,保证源端数据与目标端数据实时保持一致,就可满足业务实时查询分析使用数据或实时计算等需求。
成熟的产品有:Canal、otter等。
在实际业务场景中,离线同步和实时同步搭配使用,为保证已有的数据表在目标端数据源中可用,会使用离线同步将该表的历史数据全量迁移到目标端数据源中,对于增量数据则通过实时集成来增量迁移。
2. 核心流程
数据集成的实现有三个关键步骤:数据读取、数据转换(映射)、数据写入,核心流程如下图所示:
具体流程为:数据集成从源端数据源中读取数据,按照建好的映射关系及转换规则,将数据写入到目标数据源中。其中:
- 配置源端数据源和目标端数据源,用于连接数据源,获取数据源的读、写权限等
- 建立映射关系:源端数据源中数据表及字段对应到目标端数据源中的哪张表和字段。建立映射关系后,数据集成根据映射关系,将源端数据写入到对应的目标端数据
- 数据转换规则:数据写入时,可能有不同数据格式转换,敏感数据脱敏展示、无用字段过滤、null值处理等需求,可以制定相应的数据转换规则来实现
- 数据传输通道:可配置任务并发数、数据连接数等任务参数,达到数据集成的任务被高效稳定执行等目的
基于上述流程,数据集成产品的核心功能一般会包含以下4个:
数据集成平台在进行异构数据源之间的数据迁移时,需要保证迁移任务被高效完成,被迁入目标端数据源的数据是准确可靠的、实时的,数据传输过程是安全的等,这是用户核心关注点,也是期望平台达到的目标。
3. 其他大数据产品的联系和区别
在构建数据仓库的场景中,数据加载到数仓后,随后进行数据加工和数据应用,其中涉及的3类大数据产品如下:
1)数据集成:面向数据汇聚与交换
产品流程:配置数据源—创建同步任务—配置调度任务。
核心任务:ETL、校验、补数、合并。
2)数据加工:面向数据分析
产品流程:创建表—编写加工逻辑(insert)—配置调度任务。
数据加工方式:离线计算、实时计算、机器学习等。
3)任务调度:工作流编排
产品流程:创建任务节点—配置节点依赖关系—提交并执行。
任务调度:任务执行、任务调度与运维。
联系:
- 数据集成和数据加工都是数据生命周期中的一环
- 数据集成任务和数据加工任务其实就是任务调度中的任务节点job,任务调度保证数据被顺序采集和加工出来
以用户画像分析为例,oss_数据同步和rds_数据同步两个节点是数据集成任务节点,ods_log_info_d、dws_user_info_all_d、rpy_user_info_d三个节点是数据加工任务节点,绘制各节点间的连线即工作流编排。
提交并执行画布中的流程节点,数据就会按照箭头方向执行各节点,产出最终结果。
区别:数据集成和数据加工都基于任务执行和调度实现,两者虽然都是ETL,但是各自关注的重点并不相同。
①核心动作
数据集成核心动作是抽数(读、写、转换),也就是数据交换,转换动作也只是简单的数据清洗。
数据加工的核心动作是计算逻辑/清洗等加工规则的编写,加工规则复杂。
②核心目标
数据集成的核心目标,是保证数据被高效准确地迁移到目标端数据源。
数据加工的核心目标,是加工规则编写准确“翻译”业务需求。
二、数据集成产品流程
离线集成与实时集成在实际运行中,关注的侧重点是不同的,对于离线集成,面对的是批数据,更多考虑大规模数据量的迁移效率问题;对于实时集成,面对的是流数据,更多考虑数据准确性问题。
数据同步中一般采用先全量在增量的方式来进行数据的迁移,即先将历史数据全量迁移到目标数据源,完成初始化动作,在进行增量数据的实时同步,这样保证目标端数据的可用性。当然也有不care历史数据的场景,此时就无需进行全量迁移的动作。
1. 实时集成
我们主要采用基于日志的CDC方式来实现增量数据的实时同步,CDC即change data capture,捕获数据的变化。
实时集成通过读取源端数据库日志bin_log来捕获数据的变化情况(insert、update、delete),将其传输到kafka topic中,然后通过spark streaming对数据进行转换/清洗,写入到stg增量表中,最后将增量数据与全量数据合并到数仓ods表中。
由于数据库日志抽取一般是获取所有的数据记录的变更(增、删、改),落到目标表时,需要根据主键去重,并按照日志时间倒序排列获取最后状态的变化情况。
具体的实时集成任务执行逻辑及流程如下所示:
实时集成有以下特点:
- 源端数据库产生一条记录,数据集成实时同步一条记录
- 流数据在数据传输过程中可能会被丢失或延迟
故相较于离线集成,在数据同步链路上,实时集成会增加数据校验和数据合并两个动作。
- 数据校验主要校验源端和目标端的数据量,保证数据没有被丢失
- 数据合并则是由ods库base表和cdc目标库increment表组成,具体逻辑为:将stg数据按主键去重,取最新一条,根据主键与ods数据表中的T+1数据合并
2. 离线集成
离线集成分为全量和增量两种方式对大规模数据进行批量迁移。
- 全量迁移是将某些表的全部历史数据同步到目标数据源中
- 增量迁移,通常需要使用where子句(RDB)或者query子句(MongoDB)等增量配置参数,同时在结合调度参数(定时任务的重复周期:分钟、小时、天、周、月等)可实现增量迁移任意指定日期内的数据。
比如,想要实现每日数据的增量同步,各参数可配置为:
- Where子句:配置为DS=’${dateformat(yyyy-MM-dd,-1,DAY)}’,
- 配置定时任务:重复周期为1天,每天的凌晨0点自动执行作业
增量迁移的数据可以对目标端数据源表中数据进行追加、覆盖和更新操作。
作者:细嗅蔷薇,微信公众号:零号产品er
本文由 @细嗅蔷薇 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
相关推荐
- 深度剖析 MySQL 数据库索引失效场景与优化策略
-
在互联网软件开发领域,MySQL数据库凭借其开源、高效等特性被广泛应用。而索引,作为提升MySQL查询性能的关键利器,能大幅加速数据检索。然而,在实际开发中,即便精心创建了索引,却常常遭遇索引失...
- 15分钟,带你了解indexedDB,这个前端存储方案很重要!
-
原文来源于:程序员成长指北;作者:Django强哥如有侵权,联系删除最近在给前端班授课,在这次之前的最后一次课已经是在2年前,2年的时间,前端的变化很大,也是时候要更新课件了。整理客户端存储篇章时模糊...
- MySQL 面试总被问到的那些问题,你都懂了吗?
-
事务的四大特性是什么?首先得提一下ACID,这可是数据库事务的灵魂所在:原子性(Atomicity):要么全部成功,要么全部失败回滚。一致性(Consistency):确保数据在事务前后都处于一致状态...
- Java 字符串常见的操作_java字符串总结
-
在Java当中,为字符串类提供了丰富的操作方法,对于字符串,我们常见的操作就是:字符串的比较、查找、替换、拆分、截取以及其他的一些操作。在Java中,有String,StringBuffer和St...
- java学习分享:Java截取(提取)子字符串(substring())
-
在String中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。1.substring(intbeginIndex)形...
- 你必须知道的 7 个杀手级 JavaScript 单行代码
-
1.如果你需要一个临时的唯一ID,请生成随机字符串。这个例子将为你生成一个随机字符串:constrandomString=Math.random().toString(36).slice(2)...
- MySQL 索引失效:原因、场景与解决方案
-
在互联网软件开发领域,MySQL作为一款广泛使用的关系型数据库,其性能优化至关重要。而索引,作为提升MySQL查询性能的关键手段,一旦失效,会导致查询效率大幅下降,影响整个系统的性能。今天,就来...
- Axure9 教程:可模糊搜索的多选效果
-
一、交互效果说明1.点击话题列表中的话题选项,上方输入框内显示选择的话题标签,最多可选择5个标签,超出将有文字提示。2.点击输入框内已选择的话题标签的删除按钮,可以删除已选择的话题标签,并且该标签返回...
- JavaScript字符串操作方法大全,包含ES6方法
-
一、charAt()返回在指定位置的字符。...
- 为什么MySQL索引不生效?来看看这8个原因
-
在数据库优化中,最让人头疼的事情之一莫过于精心设计的索引没有发挥作用。为什么会出现这种情况?这篇文章带大家一起探讨一些常见原因,方便大家更好地理解MySQL查询优化器是如何选择索引的,以及在出现类...
- Kettle实现rabbitMQ的生产与消费_rabbitmq不支持顺序消费
-
文章目录一、Kettle为什么可以读取流数据?...
- MySQL高频函数Top10!数据分析效率翻倍,拒绝无效加班!
-
引言:为什么你的SQL代码又臭又长?“同事3行代码搞定的事,你写了30行?”“每次处理日期、字符串都抓狂,疯狂百度?”——不是你不努力,而是没掌握这些高频函数!本文精炼8年数据库开发经验,总结出10个...
- mysql的截取函数用法详解_mysql截取指定字符
-
substring()函数测试数据准备:用法:以下语法是mysql自动提示的1:substirng(str,pos):从指定位置开始截取一直到数据完成str:需要截取的字段的pos:开始截取的位置。从...
- MySQL函数:字符串如何截取_mysql 字符串截取函数
-
练习截取字符串函数(五个)mysql索引从1开始...
- 数据集成产品分析(一)_数据集成工具有哪些
-
编辑导语:数据集成产品是数据中台建设的第一环节,在构建数据中台或大数据系统时,首先要将企业内部各个业务系统的数据实现互联互通,从物理上打破数据孤岛。本文作者对数据集成产品进行了分析,一起来看一下吧。数...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
程序员的开源月刊《HelloGitHub》第 71 期
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
如何将AI助手接入微信(打开ai手机助手)
-
SparkSQL——DataFrame的创建与使用
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
Java面试必考问题:什么是乐观锁与悲观锁
-
redission YYDS spring boot redission 使用
-
如何利用Redis进行事务处理呢? 如何利用redis进行事务处理呢英文
-
一文带你了解Redis与Memcached? redis与memcached的区别
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)