写点什么

数据仓库设计

作者:Jackchang234987
  • 2024-07-03
    北京
  • 本文字数:1123 字

    阅读完需:约 4 分钟

1、目标

1)清晰数据结构:每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解;

2)统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径;

3)减少重复开发、助力业务提效:规范数据分层,开发通用的中间层,避免各业务层直接使用原始数据,减少重复计算工作,dws 层解决算法、数分、运营、产品等业务人员绝大多数用数场景;


2、数据仓库架构

1)ODS 层

operation data store,数据仓库准备层,也称为原始数据层。源头数据源中的数据经过 ETL 之后进入本层。结合公司实际情况,考虑后续可能需要追溯原始数据,因此对于这一层不做过多的数据清洗工作,保留原始数据即可。因此,这一层数据一般与源头数据保持一致,或是清微的加工。

源头数据同步方式:

  • 业务库 RDB(Relation Database):sqoop 定时抽取,实时方面考虑使用 canel 监听 MySQL(或其他 RDB)的 binlog 日志,实时接入即可;

  • 埋点日志:日志一般是以文件的形式保存,可以选择使用 flume 等工具来定时同步;实时同步则使用 spark streaming 或 flink、kafka 来实时接入;

  • 消息队列:来自 MQ、Kafka 的数据等;

  • 第三方系统:主要指投放平台、CRM、ERP、AppsFlyer 等第三方系统数据,通过第三方平台提供的 API 获取;

除此之外,开源工具如 Airflow、DolphinScheduler、Seatunnel 等也是主流的多源异构数据同步工具。

2)DWD 层

数据明细层,该层是业务层和数据仓库的隔离层,保持和 ODS 层一样的数据颗粒度。主要是对 ODS 数据层做一些数据的清洗和规范化的操作,比如去除重复数据、脏数据】异常数据等。

3)DWS 层

轻度汇总数据层,该层是在 DWD 层的数据基础上,对数据做一些轻量聚合操作,一般是宽表,用于提供后续的业务查询、OLAP 分析等。

4)ADS 层

应用数据支,该层主要面向某一业务主题,经过高度聚合后,提供给数据产品使用的数据。比如常用的 BI 报表数据就来源于此。

5)DIM 层

维度表。

6)表命名规范

表命名规范,如:{项目名称}_数仓分层_所属部门_业务域_自定义表名_刷新周期标识_增量/全量标识

项目名称:不同项目数据存放在不同库名下;

所属部门:如研发、运营、市场等,研发:rd,运营:opd,市场:market 等,多部门共用写 pub

业务域:如广告 load、show、click、变现等;

自定义表名:自行定义的表名称;

刷新周期标识:表的更新时间,常用 daily、hourly 等;

增量、全量标识:全量更新-ful,增量更新-inc;

特殊情况下,当该表为临时表时,以 tmp 命名开头作为区分;

例如:blockblast_dws_pub_ad_revenue_daily_inc,就表明该项目是"blockblast",属于轻度汇总层数据,多部门使用,广告业务域,收入数据,按天同步,增量表;

7)埋点文档

根据埋点 SDK 点位对照表,明确每个事件、每个字段的业务含义,在数据建模和数据查询时加以参照。

用户头像

种一颗树最好的时间是10年前,其次是现在。 2020-07-16 加入

数据产品经理,曾在Shareit、汽车之家等公司任职,也在创业公司摸爬滚打过,业余时间运营个人公号及网店,长期关注互联网大数据、电商&社群、旅游领域。

评论

发布
暂无评论
数据仓库设计_数据仓库_Jackchang234987_InfoQ写作社区