几种常见的数据同步方式

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

那么,该如何将业务DB数据高效准确地同步到数仓中呢?

一般企业会使用两种方案:

直连同步

实时增量同步(数据库日志解析)

其中直连同步的基本思路是直连数据库进行SELECT,然后将查询的数据存储到本地文件作为中间存储,最后把文件Load到数仓中。这种方式非常的简单方便,但是随着业务的发展,会遇到一些瓶颈,具体见下文分析。

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

(1)常见数据同步方式


(1.1)直连同步

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

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

数据同步时间:随着业务规模的增长,数据同步花费的时间会越来越长,无法满足下游数仓生产的时间要求。

性能瓶颈(关键):直连数据库查询数据,对数据库影响非常大,容易造成慢查询,如果业务库没有采取主备策略,则会影响业务线上的正常服务,如果采取了主备策略,虽然可以避免对业务系统的性能影响,但当数据量较大时,性能依然会很差。

(1.2)实时增量同步(日志解析)

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

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

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

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

两种数据同步方式比较:

(2)流式数据集成实现


实现思路

首先,采用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_timeELSE 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_feeELSE n.pay_fee END
FROM    (SELECT  *FROM    user_order_deltaWHERE   ds = '20211012'AND     id IS NOT NULLAND     user_id IS NOT NULL) n
FULL OUTER JOIN (-- 全外连接进行数据mergeSELECT  *FROM    user_orderWHERE   ds = '20211011'AND     id IS NOT NULLAND     user_id IS NOT NULL) o
ON      o.id = n.id
AND     o.user_id = n.user_id
;

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382752.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

DP1.4接口的PCB布局布线要求

DP接口即为DisplayPort接口,是由视频电子标准协会发布的显示接口。DP接口将在传输视频信号的同时加入对高清音频信号传输的支持,并且同时支持更高的分辨率以及刷新率。DP1.4通信端口规范新标准基于DP1.3规范,宽度不变但加入了显示压缩流技术&…

LoadRunner(2)

一、Controller 1.1场景设计 1.通过VUG打开 施压机器:发起请求的角色(用户本地电脑) 被压机器:处理请求的角色(服务器) 2.直接双击Controller 场景设计:需要关注三个部分 第一部分: 第二部分: 2.1运行场景…

[每周一更]-(第58期):选购佳能变焦镜头 EF-S 18-200mm F/3.5-5.6 IS的心得

参考地址: https://www.canon.com.cn/purchase/onlinesale/index3.html?typejdhttps://www.canon.com.cn/overview/efwidezoom.html 讲在买之前 由于没有买全画幅,买了残幅,好处是能选的镜头有限,不用太费钱了,需要…

教程 | 10分钟掌握手帐入门技能

亲,今天你画简笔画了吗? 如果没有在画纸上画,那就一起在手帐本上一展身手吧。 我先提供一点简笔素材: 1 2 3 手帐 有人说一入手帐深似海,从此笔纸要随行。 在日本,很多人都会随身带着一个被称为“手帐”的笔…

医院如何选择HIS及电子病历系统

近来有朋友来信问我:如何选择HIS及电子病历系统?我就从我个人的经历来浅谈这个问题,我是一名医护工作者,仅供参考。 如果是新建的医院首先对自身有一个清晰的定位,包括:品牌,价值,文化,理念。我们做成为一家什么样的医院?我们的品牌路线是什么线的?我们的核心价值观是什么?…

医院信息管理云平台源码 云HIS系统源码 4级电子病历系统

基层医院云HIS系统源码 高端商业his源码 有演示,可直接项目运营。 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规…

大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版

详情请点击查看 开发环境 :VS2010 C# ORACLE系统简介:1各种记录的书写,并可保留修改痕迹 在各种记录的书写过程中,根据系统提供的首次护理记录、一般护理记录、术前术后护理记录等模板,可方便、轻松地完成书写。上级…

医疗记录系统

医疗管理系统 | Dorian 项目介绍 📖 👉基于Springbootvueuni-app的医疗管理系统. 含平台主体微信小程序和web后台数据管理平台. 项目技术栈 ⭐️ 微信小程序(MedicalSystem_uniapp):uni-app Vue.js 后台管理系统(MedicalSystem_Web)&…

HIS医院EMR电子病历系统源码

1.新制作的电子病历添加到相应机构的病历模板列表中,默认是启用的,即该机构对应的一体化电子病历系统可以直接调用该模板运行相关业务。运营和管理用户可对已有的病历模板进行管理,对已有的病历模板进行查询、重新编辑、停用/启用、删除操作 …

住院管理系统

开发工具(eclipse/idea/vscode等):vs2017 数据库(sqlite/mysql/sqlserver等):sqlserver 功能模块(请用文字描述,至少200字):基于ASP.net的住院管理系统 (1)用户注册:用户首次登录该系统时需要提交用户注册。(2)用户登录:用户可以登…

医院病例管理系统

技术:Java、JSP等摘要:随着计算机技术、网络技术和通信技术的不断发展和普及,医院很多领域都运用这些先进的技术实现了数字化、信息化和网络化[1]。通过这些技术可以很大程度的提高工作效率,节省人力、物力资源,减少错…

asp医院病历管理系统

病历管理系统主要完成患者的信息输入和病历的查看等相关操作,并实现医生对患者信息的快速查看。本设计主要完成了四个方面的内容,其作用如下: 1)系统管理。在本部分,根据管理员的权限的不同,不同的管理员可…

SaaS电子病历系统源码

SaaS电子病历系统:现代医疗的新趋势 SaaS电子病历系统是一种基于云计算技术的电子病历服务平台,它将传统的病历记录存储在云端,使用者可以通过互联网随时随地访问和查询病历信息。 相比于传统的医疗信息系统,SaaS电子病历系统具…

大型三甲医院云HIS系统源码 强大的电子病历+完整文档

医院HIS系统源码云HIS系统:SaaS运维平台多医院入驻强大的电子病历完整文档 有源码,有演示 一、系统概述 采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同&am…

智能病案管理系统

摘要 计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的智能病案管理系统能够更有效管理病案业务规范,帮助管理者更加有效管理病案,可以帮助提高克服人工管理带来的错误等不利因素。所以一个优…

医院电子病历系统

一、什么是电子病历? 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息&…

医院电子病历系统信息安全解决方案

引自 http://mp.weixin.qq.com/s?__bizMjM5NTYxNDUzMA&mid2650800877&idx1&sn21f1139bbc50487b7d38780c6ab4c5cf&scene23&srcid0616vhwOwxkLA0i1oLZ3u0hz#rd 一、需求分析 随着电子病历系统在医院的普遍使用,病历无纸化存储再也不是空谈概念&…

华为年终奖,小员工分百万!任正非:钱给多了,不是人才也变成了人才!

华为今年又提前发了巨额年终奖,并公布了新的奖金方案,23级奖金额有近百万,并且宣称“上不封顶、绝不拖欠”,一时间引起热议。 任正非签发的内部文件: 华为不搞按资排辈,只要做出突出贡献,在新方…

再见了,华为!

今天分享一份从华为转正到离职的经历,一起看看,也便于让大家对华为有比较真实的了解。 链接:https://zhuanlan.zhihu.com/p/485029198 试用期与加班工资 我转正后看到了大家的能力和努力,也意识到在预期的时间内难以达到我想要的…

华为任正非,道歉了。。。

点击下方“民工哥技术之路”,选择“设为星标” 回复“1024”获取独家整理的学习资料! 不久前,任正非女儿姚安娜(本名姚思为)在23岁生日当天宣布出道,加盟天浩盛世,专题片、单曲、代言也接踵而至。 1月25日,…