阿里大数据之路总结

一、数据采集

二、数据同步

2.1、数据同步方式:

数据同步的三种方式:直连方式、数据文件同步、数据库日志解析方式

关系型数据库的结构化数据:MYSQL、Oracle、DB2、SQL Server
非关系型数据库的非结构化数据(数据库表形式存储):OceanBase、HBase、MongoDB
文件系统的结构化和非结构化数据(文件形式存储):阿里云对象存储OSS、文件存储NAS

2.1.1、直连同步

通过规范接口API(ODBC/JDBC等)和基于动态链接库的方式直连业务库

适合:适合操作型业务系统数据同步

优点:配置简单、方便

缺点:对源系统性能影响 -- 可考虑主备的方式从备库抽取,但当数据量很大时,抽取性能很差,不适合从业务库到数仓的数据同步

主备抽取:

 

 2.1.2、数据文件同步

数据文件通过约定好的文件编码、格式、大小等将源库生成的数据的文本文件,通过专门的文件服务器(如FTP服务器),加载到目标数据库系统

适合:数据源有多个异构数据库系统(MYSQL、Oracle、SQL Server、DB2等),互联网的日志类数据通常是文本文件,也适合

优点:适合多个数据源

缺点:文件服务器上传下载易丢包,通常在上传时候伴随一份校验文件,记录数据文件数据量和大小。同时也可以在上传下载时候进行压缩,减少传输量

 

2.1.3、数据库日志解析(主流)

大多主流库实现了日志文件系统进行系统恢复、主从同步,所以可以通过解析日志文件进行获取数据变更,达到增量数据同步需求。

以Orcale为例,通过源系统进程,读取归档日志文件收集变化数据信息,解析到对应目标数据文件中(这种读操作在操作系统层面,不影响源系统性能---在机器层面)。然后通过网络协议,实现源系统和目标系统之间数据文件传输(相关进程保证数据文件接受和网络包的顺序,童工网络传输冗余,确保文件完整性)。数据到目标系统后可通过数据加载模块完成数据导入,完成同步。

适用:绝大部分实现了日志文件系统的主流数据库,用于绝大多数业务库到数仓增量同步

优点:效率高、性能好,达到了实时和准实时同步能力(ms级别延迟),对源库性能影响很小

缺点:数据延迟(例:业务库做补录会导致数据增量超出系统处理峰值,导致数据延迟);

          投入较大,需要部署一个实时抽取任务抽取数据同步;

          数据飘移和遗漏:“零点飘移”问题

注:日志抽取获得所有数据记录变更(增-I、删-D、改-U),所以我们需要根据主键去重按照时间倒排去获取最后状态变化情况

1、不过滤删除。不管是否是删除操作,都获取同一主键最后的变更记录

2、过滤最后一条删除记录。如果同一主键最后一跳变更记录是删除操作,就取倒数第二条变更记录

3、过滤删除和之前的操作。如果同一主键的变更记录中有删除操作,则根据操作时间将删除操作对应的记录和之前的记录都过滤掉

2.2、阿里数仓同步方式

阿⾥巴巴⼤数据之路 阿⾥巴巴⼤数据之路——数据技术篇 数据技术篇 ⼀、整体架构 ⼀、整体架构      从下⾄上依次分为数据采集层、数据计算层、数据服务层、数据应⽤层    数据采集层:以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、付费专栏及课程。

余额充值