三、数据技术篇—— 数据同步

  • 3.1 数据同步基础 @
    • 3.1.1 直连同步
    • 3.1.2 数据文件同步
    • 3.1.3 数据库日志解析同步
  • 3.2 数据仓库同步方式
    • 3.2.1 批量数据同步
    • 3.2.2 实时数据同步
  • 3.3 同步遇到的问题
    • 3.3.1 分库分表
    • 3.3.2 增量全量同步的合并@
    • 3.3.3 数据漂移的处理 @

有多种不同应用场景:主数据库和备份数据库之间的数据备份,主系统和子系统的数据更新,不用地域、数据库类型的数据传输交换

3.1 数据同步基础 @

关系型数据库,结构化数据:MySQL、Oracle、DB2

非关系型数据库,非结构化:OceanBase、HBase、MongoDB

对象存储:OSS

文件存储:NAS

名称 实现方式
直连同步 - 通过定义好的规范接口API基于动态链接库的方式直接连接业务库。
- 配置简单,容易实现,但是对性能影响较大,不太适合。
数据文件同步 - 通过约定好的文件编码等,直接从源系统(包含多个异构的数据库系统)生成数据的文本文件,由专门的文件服务器传输到目标系统。
- 由于通过文件上传、下载会造成丢包,且需要上传校验文件(数据量及文件大小)
- 可以增加压缩和加密功能
数据库日志解析同步 - 日志文件信息丰富,数据格式稳定,通过解析日志文件获取变化的数据,满足增量数据同步需求
- 通过源系统的进程(操作系统层面,不过数据库),读取日志文档中变化并解析道目标数据文件中。
- 网络协议,保障数据文件正确接收、正确数据、网络传输冗余、文件完整性
- 实时和准实时的能力,毫秒级别延迟
- 缺点:数据延迟(补录数据超出峰值)、投入大、数据漂移

3.1.1 直连同步

  1. 通过定义好的规范接口API基于动态链接库的方式直接连接业务库。
  2. 配置简单,容易实现,但是对性能影响较大,不太适合。

3.1.2 数据文件同步

  1. 通过约定好的文件编码等,直接从源系统(包含多个异构的数据库系统)生成数据的文本文件,由专门的文件服务器传输到目标系统。
  2. 由于通过文件上传、下载会造成丢包,且需要上传校验文件(数据量及文件大小)
  3. 可以增加压缩和加密功能

3.1.3 数据库日志解析同步

  1. 日志文件信息丰富,数据格式稳定,通过解析日志文件获取变化的数据,满足增量数据同步需求
  2. 通过源系统的进程(操作系统层面,不过数据库),读取日志文档中变化并解析道目标数据文件中。
  3. 网络协议,保障数据文件正确接收、正确数据、网络传输冗余、文件完整性
  4. 实时和准实时的能力,毫秒级别延迟
  5. 缺点:数据延迟(补录数据超出峰值)、投入大、数据漂移

3.2 数据仓库同步方式

数据来源的多样性、数据量大

3.2.1 批量数据同步

主要针对于离线类型的数据仓库,定期批量同步。数据仓库系统是集成各类数据源的地方,数据类型是统一的。需要将数据转换为中间状态,统一数据格式,由于是结构化的,支持标准的SQL查询,所以所有的数据类型都可以转换成字符串类型。数据传输全内存操作,不读写磁盘。

3.2.2 实时数据同步


所产生的日志尽快以数据流的方式不断同步到数据仓库,实现秒级别的刷新。(可以通过解析Mysql的binlog日志来实时获取增量的数据更新,通过消息订阅模式来实现数据的实时同步)

3.3 同步遇到的问题

3.3.1 分库分表

为了使系统有灵活的扩展能力高并发大数据量的处理能力,数据库系统提供分库分表方案。

我们需要一个分布式数据库的访问引擎,通过建立中间状态的逻辑表来整合统一的分库分表的访问

  • 在持久层框架之下,JDBC驱动之上的中间件
  • 与JDBC规范保持一致,解决规则引擎问题
  • 实现了SQL解析、规则计算、表名替换、选择执行单元并合并结果集的功能
  • 解决读写分离和高性能主备切换的问题

3.3.2 增量全量同步的合并@

数据量比较大时,按周期全量同步的方式会影响处理效率。可以每次只同步新变更的增量数据,然后与上一个同步周期获得的全量数据合并,从而获得最新版本的全量数据。

传统的数据整合方案,合并技术以merge方法为主(update+insert),现在大数据平台基本不支持update,比较推荐全外连接(full outer join)+ 数据全量覆盖重新加载(insert overwrite),如日调度。当天的增量数据和前一天的全量数据做全外连接,重新加载最新全量数据。可以采用分区方式,每天保存一个最新的全量版本。

提出了基于负载均衡思想的数据同步方案:

  • 通过目标数据库的元数据 估算 同步任务的总线程数
  • 系统预先定义的期望同步速度 估算 首轮同步的线程数
  • 业务优先级决定同步线程的优先级。

3.3.3 数据漂移的处理 @

数据漂移时ODS数据的一个顽疾,指ODS表中的同一个业务日期数据中包含前一天或者后一天凌晨附近的数据或者丢失当天的变更数据。

为什么会出现呢?ODS需要承接面向历史的细节数据查询需求,需要物理落地到数据仓库的表按时间段来切分进行分区存储,通常按照某些时间戳字段来切分,实际上由于时间戳字段的准确性问题导致数据漂移

时间戳字段分为四类:

  1. 数据库中用来标识数据记录更新时间的时间戳字段 ,modified_time
  2. 数据库日志中用来标识数据记录更新时间的时间戳字段 ,log_time
  3. 数据库表中用来记录具体业务过程发生时间的时间戳字段 ,proc_time
  4. 标识数据记录被抽取到的时间戳字段 ,extract_time

理论上这几个时间应该一致,但是实际上会有差异

  • 数据抽取需要时间,extract_time晚于前三个
  • 前台业务系统手工修正数据时未更新 modified_time
  • 网络、系统压力等问题,log_time或modified_time晚于proc_time

根据一个字段来切分的问题

  • extract_time限制,来获取数据,漂移的问题最明显
  • modified_time限制,会出现不更新时间而导致的数据遗漏,数据记录漂移到后一天
  • log_time限制,网络、系统压力等问题,晚于proc_time,数据记录漂移到后一天
  • proc_time限制,获取到包含一个业务过程所产生的记录,遗漏很多过程变化记录,违背ODS和业务系统保持一致的设计原则

处理方法

  1. 多获取后一天的数据,向后多冗余一些数据,具体时间按照不同业务场景用业务时间proc_time来限制。但是如果在第二天凌晨修改,这条订单的状态就会更新(可能多次更新),变得不准。
  2. 多个时间戳字段来限制时间获取相对准确。

举例

双11时,交易订单漂移到12日。因为下单付钱的时候用支付宝的接口有延迟,导致订单最终生产时间跨天了。log_time和modified_time晚于proc_time。

难点:如果订单只有一个支付业务过程,可以用支付时间来限制就能获取正确数据,但是订单有多个业务过程“下单、支付、成功。每个过程都有相应的时间戳字段,并不只有支付才会漂移

解决方案

  1. 根据实际情况获取后一天15分钟的数据,限制多个业务过程的时间戳字段都是双11当天的,按照主键根据log_time做升序排列去重,获取每个订单首次数据变更的那条记录。
  2. 根据log_time冗余前一天最后15分钟和后一天凌晨15分钟的数据,用modified_time过滤非当天的数据,每个订单按照log_time做降序排列,获取每个订单当天最后一次数据变更的那条记录。
  3. 两份数据按照订单做全连接,把漂移数据补回当天数据中

大数据之路——数据同步相关推荐

  1. 大数据之路—— 数据整合和管理体系

    九.数据模型篇-- 数据整合和管理体系 9.1 体系架构图 9.2 名词术语 9.3 指标体系 9.4 模型设计 9.4.1 基本原则 9.5 模型实施 大数据建设方法论的核心:从业务架构设计到模型设 ...

  2. 万字总结阿里大数据之路-数据技术篇(建议收藏)

    目录 一.日志采集 1.1 浏览器的页面日志采集 1.2 无线客户端的日志采集 1.3 日志采集的挑战案例 二.数据同步 2.1 数据同步基础 2.2 数据同步策略 2.2.1 批量数据同步 2.2. ...

  3. 大数据之路读书笔记-03数据同步

    大数据之路读书笔记-03数据同步 如第一章所述,我们将数据采集分为日志采集和数据库数据同步两部分.数据同步技术更通用的含义是不同系统间的数据流转,有多种不同的应用场景.主数据库与备份数据库之间的数据备 ...

  4. 大数据之路:数据同步

    目录 1.数据同步基础 2.阿里数据仓库的同步方式 3.数据同步遇到的问题和解决方案 1.数据同步基础 大数据的数据同步主要包括从分布式业务系统同步进入数据仓库和数据从数据仓库同步进入数据应用和数据服 ...

  5. 阿里巴巴大数据之路——数据模型篇

    阿里巴巴大数据之路--数据模型篇 一.概述 1.什么是数据模型? 数据模型就是数据的组织和存储方法.主要关注的是从业务.数据存取和使用角度合理存储数据. 2.典型数据仓库建模方法论 ER模型 纬度模型 ...

  6. 品《阿里巴巴大数据实践-大数据之路》一书(上)

    7月有人推荐阿里巴巴刚出的这本书<阿里巴巴大数据实践-大数据之路>,到亚马逊一看才是预售状态,拍下直到8月才拿到. 翻看目录一看,欢喜的很,正好出差两天就带在身边,由于在机场滞留超过12个 ...

  7. 阿里大数据之路 总述

    大数据之路 一.总述 1. 数据采集 2. 数据计算 3. 数据服务 4. 数据应用 一.总述 数据有序.有结构地分类和存储,从而产生价值. ​ 实时:数据量大,要实时.准确 ​ 离线:采集.存储.计 ...

  8. 《大数据之路:阿里巴巴大数据实践》-第3篇 数据管理篇 -第15章 数据质量

    <大数据之路:阿里巴巴大数据实践>系列丛书  第1章 总述 第1篇 数据技术篇  第2章 日志釆集  第3章 数据同步  第4章 离线数据开发  第5章 实时技术  第6章 数据服务  第 ...

  9. 淘宝走过的大数据之路

    回顾丨13年来,淘宝走过的大数据之路 来源:CSDN大数据 时间:2016-11-07 10:19:15 作者: - 淘宝大数据之路 - 2003年至今淘宝网从零开始飞速发展,走过了13个年头,支撑淘 ...

最新文章

  1. if some one want to buy it
  2. mysql数据库生成json_Python3实现 将MySQL数据库中的记录生成JSON数据
  3. ArcGIS API for Javascript之专题图的制作(四)热力图渲染(上)
  4. Mac下升级python2.7到python3.6,删除2.7,或者不删除2.7都行
  5. SuperMap IS.NET保存地图之Ajax篇(转)
  6. scratch数学编程100例_《scratch编程+数学》课程:编程实现数字黑洞冰雹猜想
  7. matlab 集合操作
  8. 分布式存储系统学习笔记(二)—分布式文件系统(1)—Google文件系统GFS
  9. Python调shell
  10. 【Python】利用MD5文件去重
  11. 098-rsshub-radar-2021-03-02
  12. innography专利搜索与分析数据库
  13. 稳压二极管及特性介绍
  14. 常用 XML 解析技术
  15. 小故事大道理——生存方略
  16. wifi ip地址租约处理
  17. 微信‘小程序’: web前端的春天 or 噩梦?
  18. 冒志鸿:没有对比就没有伤害,原来中国的区块链这么……
  19. 做人必须留的几张底牌
  20. matlab之矩阵输入(一)

热门文章

  1. MATLAB如何画数据分布曲线,Matlab绘制累积分布函数(CDF)
  2. JStorm与Storm源码分析(四)--均衡调度器,EvenScheduler
  3. Android 之模拟器没有键盘或键盘不可用或没有数字键如何解决
  4. 紫光同创 FPGA 开发跳坑指南(二)—— golden 位流
  5. 《自然语言处理实战入门》第二章: NLP前置技术----网络爬虫简介
  6. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Training a GPT-2 language model Steps 10
  7. WWDC20 发布会你看了吗?看完 WWDC20 后的感受
  8. mac下如何查看真机上应用的沙盒文件
  9. Linux系统连接华为oceanstor数据存储
  10. 从0到10000小时,从外包到字节跳动