《大数据之路:阿里巴巴大数据实践》笔记——数据同步篇

数据同步方式

方式定义优点缺点
直连同步通过定义好的规范接口 API 和基于动态链接库的方式直接连接业务库配置简单,实现容易,比较适合操作型业务系统的数据同步对源系统的性能影响较大
数据文件同步通过约定好的文件编码、大小、格式等,直接从源系统生成数据的文本文件,由专门的文件服务器,如 FTP 服务器传输到目标系统后,加载到目标数据库系统中。当数据源包含多个异构的数据库系统(如 MyS QL Oracle QL Server DB2 等)时,用这种方式比较简单、实用;互联网的日志类数据,通常是以文本文件形式存在的,也适合使用数据文件同步方式文件传输需校验,有时也需增加压缩加密等功能
数据库日志解析同步使用日志文件进行系统恢复实现了实时与准实时同步的能力,延迟以控制在毫秒级别,并且对业务系统的性能影响也比较小数据延迟,投人较大,数据漂移和遗漏

阿里数仓同步方式

批量数据同步

DataX 采用 Framework+Plugin 的开放式框架实现, Framework 处理缓冲、流程控制、并发、上下文加载等高速数据交换的大部分技术问题,并提供简单的接口与插件接入。

• Job :数据同步作业
• Splitter :作业切分模块,将 个大任务分解成多个可以并发行的小任务
• Sub-Job :数据同步作业切分后的小任务,或称之为 Task
• Read er :数据读人模块,负 运行切分后的小任务,将数据从源系统 载到 DataX
• Channel: eader Writer 通过 hannel 交换数据。
• Writer :数据 出模块,负责将数据从 DataX 导人目标数据系统。

实时数据同步

TimeTunnel (TT )系统就是这样的实时数据传输平台,具有高性能、实时性、顺序性、高可靠性、高可用性、可扩展性等特点。

数据同步中的问题和解决

分库分表

TDDL ( Taobao Distributed Data ayer )就是这样一个分布式数据库的访问引擎,通过建立中间状态的逻辑表来整合统一分库分表的访问

高效同步和批量同步

通过 OneClick 产品,真正实现了数据的一键化和批量化同步,一键完成 DDL DML 生成、数据的冒烟测试以及在生产环境中测试等。

增量与全量同步的合并

全外连接( full outer join) +数据全量覆盖重新加载( insert overwrite ),即如日调度,则将当天的增量数据和前一天的全量数据做全外连接,重新加载最新的全量数据。在大数据量规模下,全量更新的性能比 update 要高得多。此外,如果担心数据更新错误问题,可以采用分区方式,每天保持 个最新的全量版本,保留较短的时间周期(如3~7天)

同步性能的处理

,阿里巴巴数据团队实践出了一套基于负载均衡思想的新型数据同步方案。该方案的核心思想是通过目标数据库的元数据估算同步任务的总线程数,以及通过系统预先定义的期望同步速度估算首轮同步的线程数,同时通过数据同步任务的业务优先级决定同步线程的优先级,最终提升同步任务的执行效率和稳定性。

数据漂移的处理

【时间类型】
数据库表中用来标识数据记录更新时间 modified_time
数据库日志中用来标识数据记录更新时间 log_time
数据库表中用来记录具体业务过程发生时间 proc_time
标识数据记录被抽取到时间 extract_time
【漂移的原因】
(1)根据 extract_ti me 来获取数据。这种情况数据漂移的问题最明显。
(2)根据 modified_time 限制。在实际生产中这种情况最常见,但是
往往会发生不更新 modified time 而导致的数据遗漏,或者凌晨时间产生的数据记录漂移到后一天。
(3)根据 log_time 限制。由于网络或者系统压力问题, log time 会晚于proc_time。
(4)根据 proc_time 限制。仅仅根据 proc_time 限制,我们所获取ODS 表只是包含一个业务过程所产生的记 ,会遗漏很多其他过程的变化记录,这违背了 ODS 和业务系统保持 致的设计原则
【漂移的处理】
方法1:多获取后一天的数据,保障数据只会多不会少。这样会有误差,比如凌晨支付并退款,统计状态时出错。
方法2:通过多个时间戳字段限制时间来获取相对准确的数据。
(1)首先根据 log_time 分别冗余前一天最后 15 分钟的数据和后一天凌晨开始 15 分钟的数据,并用 modified_time 过滤非当天数据。
(2)然后根据 log_time 获取后一天 15 分钟的数据 针对此数据,按照主键根据 log_time 做升序排列去重。
(3)前两步的结果数据做全外连接,通过限制业务时间proc_time 来获取我们所需要的数据。

阿⾥巴巴⼤数据之路 阿⾥巴巴⼤数据之路——数据技术 数据技术 ⼀、整体架构 ⼀、整体架构      从下⾄上依次分为数据采集层、数据计算层、数据服务层、数据应⽤层    数据采集层:以DataX为代表的数据同步⼯具和同步中⼼    数据计算层:以MaxComputer为代表的离线数据存储和计算平台    数据服务层:以RDS为代表的数据库服务(接⼝或者视图形式的数据服务)    数据应⽤层:包含流量分析平台等数据应⽤⼯具 ⼆、数据采集(离线数据同步) ⼆、数据采集(离线数据同步)   数据采集主要分为⽇志采集和数据库采集。⽇志采集暂略(参考书籍原⽂)。我们主要运⽤的是数据库采集(数据库同步)。   通常情况下,我们需要规定原业务系统表增加两个字段:创建时间、更新时间(或者⾄少⼀个字段:更新时间)   数据同步主要可以分为三⼤类:直连同步数据⽂件同步数据库⽇志解析同步   1.直连同步     通过规范好的接⼝和动态连接库的⽅式直接连接业务库,例如通过ODBC/JDBC进⾏直连     当然直接连接业务库的话会对业务库产⽣较⼤压⼒,如果有主备策略可以从备库进⾏抽取,此⽅式不适合直接从业务库到数仓的情景   2.数据⽂件同步     从源系统⽣成数据⽂本⽂件,利⽤FTP等传输⽅式传输⾄⽬标系统,完成数据同步     为了防⽌丢包等情况,⼀般会附加⼀个校验⽂件 ,校验⽂件包含数据量、⽂件⼤⼩等信息     为了安全起见还可以加密压缩传输,到⽬标库再解压解密,提⾼安全性   3.数据库⽇志同步     主流数据库都⽀持⽇志⽂件进⾏数据恢复(⽇志信息丰富,格式稳定),例如Oracle的归档⽇志   (数据库相关⽇志介绍,参考:)    4.阿⾥数据仓库同步⽅式     1)批量数据同步     要实现各种各样数据源与数仓的数据同步,需要实现数据的统⼀,统⼀的⽅式是将所有数据类型都转化为中间状态,也就是字符串类型。以此来实现数据格式的统⼀。     产品——阿⾥DataX:多⽅向⾼⾃由度异构数据交换服务产品,产品解决的主要问题:实现跨平台的、跨数据库、不同系统之间的数据同步及交互。     产品简介:     开源地址:     更多的介绍将会通过新开随笔进⾏介绍!(当然还有其他主流的数据同步⼯具例如kettle等!)     2)实时数据同步     实时数据同步强调的是实时性,基本原理是通过数据库的⽇志(MySQL的bin-log,Oracle的归档⽇志等)实现数据的增量同步传输。     产品——阿⾥TimeTunnel(简称TT)。TT产品本质是⼀个⽣产者、消费者模型的消息中间件     3)常见问题       1.增量数据与全量数据的合并         主要的场景是数据同步中周期全量同步,对应的解决⽅案是每次只同步变更的数据,然后和上⼀周期合并,形成最新的全量数据(选择此⽅案的原因是绝⼤多 数⼤数据平台不⽀持update操作)         具体的⽅案主要有union的联合操作(可以通过⽣成增量中间表detal)与阿⾥主推的全外连接full outer join+全量覆盖insert overwrite的形式。实例参考如下: SQL的Join语法有很多, inner join(等值连接) 只返回两个表中联结字段相等的⾏, left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录, right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录, 假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所⽰: A表 id name 1 Pirate 2 Monkey 3 Ninja 4 Spaghetti B表 id name 1 Rutabaga 2 Pirate 3 Darth Vade 4 Ninja 让我们看看不同JOIN的不同。 FULL [OUTER] JOIN (1) SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name TableA.name = TableB.name 的情况,A和B的交集有两条数据,那么 FULL OUTER JOIN的结果集, 应该是2+2+2=6条,即上⾯的交集,再加剩下的四条数据,没有匹配,以null补全。 结果集 (TableA.) (TableB.) id name id name 1 Pirate 2 Pirate 2 Monkey null null 3 Ninja 4 Ninja 4 Spaghetti null null null null 1 Rutabag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值