三层数据架构总览

管理

三层数据架构总览

> 最后更新: 2026-06-07

> 版本: v0.1(设计阶段)

---

架构目标

  • 性能: 从标准视图的每次全量查询 → 物化视图的秒级响应
  • 可维护: 分层清晰,各层职责独立
  • 可追溯: 每个数据口径有定义、有来源、有变更记录
  • 可扩展: 新增分析维度无需改动底层

---

整体架构图

`

┌──────────────────────────────────────────────────────────────────────┐

│ Layer 1: 原始数据层 (ODS) — MySQL ruimeiyun (280MB, 8张基表) │

│ │

│ 回访记录(272K) 712执行业绩(124K) 出纳结算单(108K) │

│ 到院明细(78K) 预约记录(43K) 客户盘点(42K) │

│ 入库记录(9K) 白鲸门店日报(95行) │

│ │

│ 现有: 24个标准视图(每次全量重算) │

└──────────────────┬───────────────────────────────────────────────────┘

│ Python ETL (每日4:00)

┌──────────────────────────────────────────────────────────────────────┐

│ Layer 2: 物化视图层 (PostgreSQL ruimeiyun_dw) │

│ │

│ ┌──────────────────────────────────────────────────────────────┐ │

│ │ DWD 明细层 (Detail) — 清洗、标准化后的明细数据 │ │

│ │ m_dwd_出纳结算单 m_dwd_到院明细 m_dwd_客户盘点 │ │

│ │ m_dwd_回访记录 m_dwd_712执行业绩 m_dwd_预约记录 │ │

│ ├──────────────────────────────────────────────────────────────┤ │

│ │ DWS 汇总层 (Summary) — 日/月聚合,高频查询 │ │

│ │ m_dws_daily_brief m_dws_monthly_performance │ │

│ │ m_dws_store_daily_kpi m_dws_consultant_monthly │ │

│ │ m_dws_product_sales m_dws_visit_summary │ │

│ ├──────────────────────────────────────────────────────────────┤ │

│ │ ADS 应用层 (Application) — 业务直接调用 │ │

│ │ m_ads_customer_rfm m_ads_churn_warning │ │

│ │ m_ads_consultant_ranking m_ads_customer_wakeup │ │

│ │ m_ads_cross_flow m_ads_source_roi │ │

│ │ m_ads_executive_dashboard m_ads_complaint_analysis │ │

│ └──────────────────────────────────────────────────────────────┘ │

└──────────────────┬───────────────────────────────────────────────────┘

│ 查询

┌──────────────────────────────────────────────────────────────────────┐

│ Layer 3: 展示层 │

│ │

│ Dify AI问答 + ChartGen | BI仪表盘 | 报表导出/外部API │

│ (自然语言查数、自动图表) (固定看板) (定时推送到微信/钉钉/邮件) │

└──────────────────────────────────────────────────────────────────────┘

`

---

各层职责

ODS 层(源数据层)

  • 保留原始数据不做修改
  • 每日从远程睿美云同步
  • 数据新鲜度:T+1

DWD 层(明细层)

  • 清洗、去重、标准化
  • 字段重命名、类型转换
  • 补充缺失值
  • 与基础表一一对应

DWS 层(汇总层)

  • 按日/月粒度预聚合
  • 面向高频查询场景
  • 多表 JOIN 提前完成

ADS 层(应用层)

  • 面向具体业务应用
  • 复杂计算逻辑(RFM、排名、分层)
  • 管理层看板数据源

展示层

  • Dify + database 插件:自然语言查询
  • ChartGen 插件:自动图表生成
  • BI 工具:固定仪表盘
  • Python 脚本:Excel 报表导出

---

刷新策略

| 层级 | 刷新时间 | 方式 |

|------|---------|------|

| ODS | 每日 3:00 | 远程 → 本地 MySQL 同步(已有 crontab) |

| DWD | 每日 4:00 | PostgreSQL REFRESH MATERIALIZED VIEW CONCURRENTLY |

| DWS | 每日 4:15 | 同上,依赖 DWD 刷新完成后 |

| ADS | 每日 4:30 | 同上,依赖 DWS 刷新完成后 |

| 展示层 | 实时 | 直接查询物化视图 |

> 使用 CONCURRENTLY 保证刷新期间查询不中断

> 支持单视图按需刷新 API

---

性能预期对比

| 查询场景 | 当前(标准视图) | 改造后(物化视图) |

|---------|----------------|-----------------|

| RFM 客户分层 | 10-20秒 | < 1秒 |

| 月度业绩报表 | 5-10秒 | < 0.5秒 |

| 流失预警客户 | 3-8秒 | < 1秒 |

| 咨询师排名 | 5-15秒 | < 0.5秒 |

| 管理层看板 | 30秒+ | < 2秒 |

|

四、查询规则(强制)

4.1 分析查询优先级

所有数据分析查询必须按以下优先级执行:

`

第1优先:物化视图 (m_*) → 覆盖则直接用

└─ m_dwd_customer_consultant 客户归属+RFM+消费+到院+回访

└─ m_dwd_customer_visit 客户到院明细

└─ m_dws_consultant_monthly 咨询师月绩效

└─ m_ads_customer_rfm 客户RFM分层

└─ m_ads_pending_followup 咨询师待回访客户列表(含缴费+回访时间)

└─ 其他 m_* 视图

第2优先:staging 基表 (stg_*)

└─ 先出分析结果,再补物化视图

第3优先:根据本次分析模式,新增/优化物化视图

└─ 分析完成后 → 新建或调整物化视图 → 更新手册

`

4.2 闭环规则(迭代优化)

`

分析需求 → 查物化视图 → 覆盖? → YES → 出结果

→ NO → 回退 staging 先出结果

根据本次分析模式,新建或优化物化视图

更新手册

下次同类需求自动走物化视图

`

物化视图不是分析的前置依赖,是后置优化。先出结果,再建视图。每次分析都在为下一次铺路。

4.3 2026-06-07 复盘教训

分析张凯乐客户时使用了4张staging表做join(stg_客户盘点+stg_出纳结算单+stg_回访记录+stg_712执行业绩),

但 m_dwd_customer_consultant 一张物化视图已包含所有字段(客户归属、消费、储值、最近到院、最近回访)。

本次迭代产出: m_ads_pending_followup — 咨询师待回访客户列表视图,下次同类需求直接查此视图。


最后更新: 2026/6/16 18:51:38