数据仓库学习笔记(一)

3,430 阅读3分钟

美团OneData数仓

source: tech.meituan.com/2019/10/17/…

Terms

OneData: 阿里巴巴提出的数仓建设标准

摘要

美团基于OneData思想和现有业务架构情况,提出了新的标准和目标:

实现方法:统一归口和出口 统一归口:业务归口统一、设计归口统一和应用归口统一,从底层保证了数仓建设的三特性和三效果
统一出口:

  1. 交付标准化
  2. 数据资产管理:统一维度,指标元数据出口等

基于此,实现了分层模型:

正常开发应遵循ODS-DWD—DWT-DWA-APP的流程,同时根据架构做出 开发规范:

  1. 正常流向:ODS>DWD->DWT->DWA->APP,当出现ODS >DWD->DWA->APP这种关系时,说明主题域未覆盖全。应将DWD数据落到DWT中,对于使用频度非常低的表允许DWD->DWA。 尽量避免出现DWA宽表中使用DWD又使用(该DWD所归属主题域)DWT的表。
  2. 同一主题域内对于DWT生成DWT的表,原则上要尽量避免,否则会影响ETL的效率。
  3. DWT、DWA和APP中禁止直接使用ODS的表,
  4. ODS的表只能被DWD引用。
  5. 禁止出现反向依赖,例如DWT的表依赖DWA的表。

美团数据治理平台

source: tech.meituan.com/2018/12/27/…

建设目的

统一指标的定义、计算方法、数据来源
同时抽象出单一的功能 利于在管理层面对于数据/指标一致性的管理和介入

摘要

整体架构图:

数据治理平台架构:

数据平台的管理流程

美团DB数据同步到数仓的架构与实践

source: tech.meituan.com/2018/12/06/…

Terms

Binlog:Binlog是MySQL的二进制日志,记录了MySQL中发生的所有数据变更,MySQL集群自身的主从同步就是基于Binlog做的。

问题背景

业务数据从DB到数仓的方法,最直接的是批量取数并load,但随着业务扩展,会遇到以下问题:

  • 性能瓶颈:随着业务规模的增长,Select From MySQL -> Save to Localfile -> Load to Hive这种数据流花费的时间越来越长,无法满足下游数仓生产的时间要求。
  • 直接从MySQL中Select大量数据,对MySQL的影响非常大,容易造成慢查询,影响业务线上的正常服务。
  • 由于Hive本身的语法不支持更新、删除等SQL原语,对于MySQL中发生Update/Delete的数据无法很好地进行支持。

解决方案

改为CDC+Merge的方案,即实时Binlog采集 + 离线处理Binlog还原业务数据。 原因是:

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

Binlog离线采集架构图

Merge 流程图

涉及开源项目

阿里巴巴 Canal
LinkdeIn Camus