您的位置:IT爆料网 > 互联网

数仓 | 几种常见的数据同步方式

发布时间:2022-11-04 13:34:25  来源:互联网     背景:

写在前面

数据仓库的特性之一是集成,即首先把未经过加工处理的、不同来源的、不同形式的数据同步到ODS层,一般情况下,这些ODS层数据包括日志数据和业务DB数据。对于业务DB数据而言(比如存储在MySQL中),将数据采集并导入到数仓中(通常是Hive或者MaxCompute)是非常重要的一个环节。

那么,该如何将业务DB数据高效准确地同步到数仓中呢?一般企业会使用两种方案:直连同步与实时增量同步(数据库日志解析)。其中直连同步的基本思路是直连数据库进行SELECT,然后将查询的数据存储到本地文件作为中间存储,最后把文件Load到数仓中。这种方式非常的简单方便,但是随着业务的发展,会遇到一些瓶颈,具体见下文分析。

为了解决这些问题,一般会使用实时增量的方式进行数据同步,其基本原理是CDC (Change Data Capture) + Merge,即实时Binlog采集 + 离线处理Binlog还原业务数据这样一套解决方案。

本文主要包括以下内容,希望对你有所帮助

常见数据同步方式 流式数据集成 数据同步的方式 直连同步

直连同步是指通过定义好的规范接口API和基于动态链接库的方式直接连接业务库,比如ODBC/JDBC等规定了统一的标准接口,不同的数据库基于这套标准提供规范的驱动,从而支持完全相同的函数调用和SQL实现。比如经常使用的Sqoop就是采取这种方式进行批量数据同步的。

直连同步的方式配置十分简单,很容易上手操作,比较适合操作型业务系统的数据同步,但是会存在以下问题:

数据同步时间:随着业务规模的增长,数据同步花费的时间会越来越长,无法满足下游数仓生产的时间要求。 性能瓶颈:直连数据库查询数据,对数据库影响非常大,容易造成慢查询,如果业务库没有采取主备策略,则会影响业务线上的正常服务,如果采取了主备策略,虽然可以避免对业务系统的性能影响,但当数据量较大时,性能依然会很差。

日志解析

所谓日志解析,即解析数据库的变更日志,比如MySQL的Binlog日志,Oracle的归档日志文件。通过读取这些日志信息,收集变化的数据并将其解析到目标存储中即可完成数据的实时同步。这种读操作是在操作系统层面完成的,不需要通过数据库,因此不会给源数据库带来性能上的瓶颈。

数据库日志解析的同步方式可以实现实时与准实时的同步,延迟可以控制在毫秒级别的,其最大的优势就是性能好、效率高,不会对源数据库造成影响,目前,从业务系统到数据仓库中的实时增量同步,广泛采取这种方式。当然,这种方式也会存在一些问题,比如批量补数时造成大量数据更新,日志解析会处理较慢,造成数据延迟。除此之外,这种方式比较复杂,投入也较大,因为需要一个实时的抽取系统去抽取并解析日志,下文会对此进行详细解释。

如上图所示架构,在直连同步基础之上增加了流式同步的链路,经过流式计算引擎把相应的 Binlog 采集到 Kafka,同时会经过一个 Kafka 2Hive 的程序把它导入到原始数据,再经过一层 Merge,产出下游需要的 ODS 数据。

上述的数据集成方式优势是非常明显的,把数据传输的时间放到了 T+0 这一天去做,在第二天的时候只需要去做一次 merge 就可以了。非常节省时间和计算资源。

流式数据集成实现 实现思路

首先,采用Flink负责把Kafka上的Binlog数据拉取到HDFS上,生成增量表。

然后,对每张ODS表,首先需要一次性制作快照(Snapshot),把MySQL里的存量数据读取到Hive上,这一过程底层采用直连MySQL去Select数据的方式,可以使用Sqoop进行一次性全量导入,生成一张全量表。

最后,对每张ODS表,每天基于存量数据和当天增量产生的Binlog做Merge,从而还原出业务数据。

Binlog是流式产生的,通过对Binlog的实时采集,把部分数据处理需求由每天一次的批处理分摊到实时流上。无论从性能上还是对MySQL的访问压力上,都会有明显地改善。Binlog本身记录了数据变更的类型(Insert/Update/Delete),通过一些语义方面的处理,完全能够做到精准的数据还原。

关于Binlog解析部分,可以使用canal工具,采集到Kafka之后,可以使用Flink解析kafka数据并写入到HDFS上,解析kafka的数据可以使用Flink的DataStreamAPI,也可以使用FlinkSQL的canal-json数据源格式进行解析,使用FlinkSQL相对来说是比较简单的。下面是canal-json格式的kafka数据源。

CREATE TABLE region (   id BIGINT,   region_name STRING ) WITH (  'connector' = 'kafka',  'topic' = 'mydw.base_region',  'properties.bootstrap.servers' = 'kms-3:9092',  'properties.group.id' = 'testGroup',  'format' = 'canal-json' ,  'scan.startup.mode' = 'earliest-offset'  ); 

数据解析完成之后,下面的就是合并还原完整数据的过程,关于合并还原数据,一种比较常见的方式就是全外连接(FULL OUTER JOIN)。具体如下:

生成增量表与全量表的Merge任务,当天的增量数据与昨天的全量数据进行全外连接,该Merge任务的基本逻辑是:

INSERT OVERWRITE TABLE user_order PARTITION(ds='20211012') SELECT  CASE    WHEN n.id IS NULL THEN o.id                  ELSE n.id          END         ,CASE    WHEN n.id IS NULL THEN o.create_time                   ELSE n.create_time           END         ,CASE    WHEN n.id IS NULL THEN o.modified_time                  ELSE n.modified_time           END         ,CASE    WHEN n.id IS NULL THEN o.user_id                   ELSE n.user_id           END                  ,CASE    WHEN n.id IS NULL THEN o.sku_code                   ELSE n.sku_code           END         ,CASE    WHEN n.id IS NULL THEN o.pay_fee                  ELSE n.pay_fee           END FROM    (             SELECT  *             FROM    user_order_delta             WHERE   ds = '20211012'             AND     id IS NOT NULL             AND     user_id IS NOT NULL         ) n FULL OUTER JOIN (-- 全外连接进行数据merge                     SELECT  *                     FROM    user_order                     WHERE   ds = '20211011'                     AND     id IS NOT NULL                     AND     user_id IS NOT NULL                                  ) o ON      o.id = n.id AND     o.user_id = n.user_id ; 

经过上述步骤,即可将数据还原完整。

总结

本文首先介绍了数据仓库构建ODS层常见的数据同步方式,并对每种方式进行了解释,给出了相对应的示意图。接着给出了CDC+Merge的数据同步方案。值得注意的是,Flink1.11引入了CDC的connector,比如MySQL CDC和Postgres CDC,同时对Kafka的Connector支持canal-json和debezium-json以及changelog-json的format,通过这种方式可以很方便地捕获变化的数据,大大简化了数据处理的流程和数据同步的复杂度。

 


本文标题:数仓 | 几种常见的数据同步方式 - 互联网
本文地址:www.itbaoliao.com/hlw/4769.html

返回网站首页

本文评论
盘点QQ华夏氏族跨服战六大风云人物
《QQ华夏》的2011年注定是不平凡的一年,风起云涌群雄争霸,巅峰对决一战成名。《QQ华夏》一战再战,海量大奖给力助阵,为广大玩家们创造了一个属于勇者的舞台,造就了这么一群蜚声全服各领风骚的人物,在首届氏族跨服战的历史扉页上留下了最浓厚的第...
日期:11-03
戴尔科技集团释放边缘数据的价值
中国 北京 - 2021年5月6日 新闻摘要 ·戴尔科技集团为未来边缘数以百万计......
日期:05-06
诺西计划全球裁员17000人
新浪科技讯 北京时间11月23日晚间消息,诺西今天宣布,计划裁员17000人,将移动宽带和服务作为战略重点,并在全球范围内实施大规模重组。诺西在声明中称,裁员将涉及全球各个地区,总数约为17000人。此外,该公司将专注于移动网络基础设施...
日期:10-30
鱼头人现身央视直播 核酸排队现场上演头部“舞蹈”
好看的皮囊千篇一律,有趣的灵魂万里挑一;即便是在核酸检测现场,户外的严寒,也抵挡不住有趣的灵魂放飞自我。日前,央视新闻一段关于满洲里核酸检测现场直播的画面,引起了众多网友的热议与互动。画面中,央视新闻记者的摄像头,一开始就盯到了一位戴着...
日期:10-26
Uber司机集体诉讼资格遭法院撤销 身份归类仍是问题
北京时间9月26日早间消息,美国旧金山第九巡回上诉法院周三裁决,Uber司机需要单独就身份归类问题提......
日期:09-26
打造时尚音乐手机 leepoo E6手机评测
文/ditalee  经常关注手机的朋友们应该知道leepoo这个品牌,前段时间leepoo推出了一款以音乐为主打色特的F9,搭载特有的蓝贝蓝牙耳机让F9引起了一定的市场反响,leepoo 乘势推出了新一款音乐手机E6,采用...
日期:11-02
微软回应高管经历 称员工因违纪已被开除
9月29日,就近日媒体报道的原微软员工于伟在微软“出神入化”的就职经历,微软Bing官方在今天早上发布了一个说明进行回应,微软称报道过于夸张,内容严重失实。官方回应全文如下:上周起,我司注意到一批集中的媒体报道,...
日期:10-13
广东曝光41家非法证券网站 点金网等上榜
随着年内股市大幅反弹,网上“黑嘴”日渐猖獗。近日,广东证监局公开曝光了41家非法证券活动网站。...
日期:09-17
1111电商成人礼!天猫购物狂欢节半天破79亿
阿里数据显示,11点18分,天猫11.11购物狂欢节支付宝销售额达到79亿元。(TechWeb配图) 【TechWeb报道】11月11日零时,天猫1111购物狂欢节正式开始。据阿里巴巴集团公布的实时数...
日期:10-22
网曝淘宝权草粉被女朋友发现 与女粉丝聊天记录曝光
12月2日晚,陶宝权在微博突然发了道歉微博,对象是其女朋友,小编掐指一算,昨天刚好有爆料某位冠军打野与女粉丝约见酒店,聊天信息十分露骨。...
日期:10-04
亚马逊kindle被约谈 亚马逊kindle为什么被约谈
江苏省消费者权益保护委员会在官方微信公众号发布消息称,亚马逊公司存在严重侵权行为,亚马逊电子书阅读器Kindle质保服务标准中,使用翻新零部件、设备进行修理或更换等条款违反中国法律法规,该委将进行约谈调查。...
日期:10-14
郭可尊:让英特尔如坐针毡的强势女人
能让全球半导体巨擘英特尔(Intel)如坐针毡的女人是谁?...
日期:10-29
微信成语猜猜看题目/答案汇总 微信成语猜猜看答案一览
微信小游戏中新增了一个成语猜猜看的游戏,就是小伙伴根据题目的提示的文字内容,猜出最后正确的成语,玩家在游戏的同时也能够学习到不少的成语,增加你的知识面!...
日期:08-23
谷歌Chrome插件中心正式启动
北京时间12月9日,据国外媒体报道,本周,互联网巨头谷歌掀起了新一轮技术竞赛,继续开放翻译网站和推出实时、图片模糊搜索等功能后,再接再厉,谷歌Chrome浏览器插件中心终于上线。  插件是现代浏览器中不可或缺的功能扩展工...
日期:10-16
最便宜的仅为29元 5款热门低价鼠标搜罗
虽然目前无线鼠标十分火热,但是仍有不少的消费者在选购鼠标时会选择更为传统的有线鼠标,而在有线鼠标中绝大多数的消费者都会选择入门级鼠标和高端的游戏鼠标,接下来笔者便给大...
日期:10-22
男子初筛阳性仍返乡致200余人密接 涉嫌妨害传染病防治罪已立案
据福建省莆田市涵江区应对新型冠状病毒感染肺炎疫情工作指挥部通报,当地发现一男子在上海初筛阳性后,仍然返乡,导致200多人密接。根据通报,经查,曾某3月15日前往上海市某区,25日出现咳嗽、流涕症状,27日在上海某医院核酸检测初筛阳性。2...
日期:10-16
拉手网携手实体影院,加码电影票团购
大智慧阿思达克通讯社4月24日讯,团购网站拉手网总监、电影业务负责人沈妮宏在接受本社专访时表示,拉手网与大地院线达成独家合作协议,为探索电影票销售渠道新玩法提供了可能。去年电影票团购已占拉手网营业额的15%。2013年4月初,拉手网宣布与...
日期:10-10
《生活大爆炸》被禁播 剧迷表示不得不重新转向地下
摘要:上周六,在国内有很大观众群的《生活大爆炸》、《傲骨贤妻》等美剧突然在搜狐、优酷等各大视频网站下架。昨天,相关视频网站人士向记者证实,称上周五接到 管理部门下架通知,但具体原因并不清楚,“目前下架的作品,对题材和尺度并没有指...
日期:11-01
王者知道:新赛季赛季皮肤的品质属于?
王者荣耀2018王者知道答案由小编为大家带来,这次为大家解答的问题是“新赛季赛季皮肤的品质属于?”,快来一起看看答案吧!...
日期:10-08
lols6新天赋加点攻略 s6新版本AD上单打野天赋加点全览
lols6新天赋加点推荐 s6新版本AD打野上单天赋加点全览,新的一年新的赛季,而本次游戏的大更新也让很多玩家一时半会儿不知道该怎样去理解。 《S6季前赛旅游列车》将从天赋开始,带你一一解析每一项变动,季前赛让你不再迷茫。新赛季的天赋树开启了全新的面貌,“基石”天赋树系统又同以往有了新的变化,不同的天赋配置能在S6季前赛及以后的实际游戏中带来很明显的不同天赋配置后的痕迹效果。...
日期:11-02