菜单
数据中心进化与演变

记录工作中搭建数据中心(数仓)的过程演进。

版本 v1.0

---
title: before 2022
---
graph LR
MySQL[(Online MySQL)] ---> |业务逻辑| Dashboard[报表实时呈现]

优点

  • 报表定制灵活
  • 结果实时性好

缺点

  • 随着数据量的增多:查询耗时增长,页面频发502
  • 部分查询对数据库锁表,线上业务影响较重(可通过增加只读库 Slave 缓解)

版本 v2.0

---
title: 2022
---
graph LR
    MySQL[(Online MySQL Slave)]
    DW[(数仓)]
    BTable[(BI数据表)]
    BI[BI分析框架(阿里BI)]
    Logic[定时任务]
    X[基础数据补完]
    Y[数据清洗、聚合与打宽]
    Z[视图物化]

    MySQL --> |Shell脚本 + 定时同步| DW
    Logic -.-> BTable
    DW --> BTable
    BTable --> BI

    DW -.-> Logic
    Logic --> X
    Logic --> Y
    Logic --> Z

优点

  • 可方便实现数据可视化
  • 报表灵活性提高
  • 隔离了线上业务(可以重建索引、数据二次处理等)

缺点

  • 实时数据延时 T-1(但可接受)
  • 同步耗时、定时任务需要维护(如发生数据同步延时等)
  • BI 框架对业务部门使用门槛较高
  • BI 框架对 MySQL 多表聚合查询时性能表现不理想

版本 v3.0

---
title: 2022-2024
---
graph LR
    User((用户))
    MySQL[(Online MySQL Slave)]
    DW[(数仓)]
    BTable[(BI数据表)]
    CH[(ClickHouse<br>列式引擎)]
    BI[BI分析]
    Logic[定时任务]
    Task1[基础数据补完]
    Task2[数据清洗、聚合与打宽]
    Task3[视图物化]
    Dashboard[业务看板]

    MySQL --> |Shell脚本 + 定时同步| DW
    DW -.-> Logic
    Logic --> Task1
    Logic --> Task2
    Logic --> Task3
    Logic -.-> BTable
    DW --> BTable
    BTable --> |物化MySQL| CH
    CH --> BI
    CH --> |业务逻辑| Dashboard
    User --> |权限分配| Dashboard

优点

  • 报表改为代码实现,提高灵活性。同时支持BI分析
  • 业务看板降低了其他业务部门的使用门槛
  • 隔离了线上业务
  • 引入ClickHouse 列式数据库,显著提高实时查询性能

缺点

  • 数据延时(但可接受)
  • 数据落地链路较长,有问题需要多个节点排查

版本 v4.0 (当前)

2025-05-26 更

---
title: 2025
---
graph LR
    User((用户))
    MySQL[(Online MySQL Slave)]
    Doris[(数仓 Apach Doris)]
    BI[BI分析]
    Dashboard[业务看板]
    BTable[业务宽表]

    User --> |权限分配| Dashboard
    MySQL --> |Apach SeaTunnel| Doris
    Doris --> |业务逻辑| Dashboard
    Doris -.-> BI
    Doris <-.-> BTable
    BTable--> |业务逻辑| Dashboard

相较于版本 v3 我们有如下改进

  1. Shell 同步脚本 改为了 Apache Seatunnel 同步更高效,部分数据表使用了增量更新减少数据重复提取
  2. 将 ClickHouse 改为了 Apache Doris,因CH在多表联合查询时表现仍不够灵活且SQL语法略有不同,所以更换为 Doris,其 SQL 语法兼容性更好性能上感知差别不大
  3. 去掉了从数仓到 BI数据表生成时的定时任务,直接使用数仓。
  4. 数据的展示完全依赖业务看板侧的逻辑实现,减少多余的处理逻辑维护。

整体缩减了数据传输链路,同时降低了维护成本,重点放在设计数仓表结构以及业务逻辑维护上。