存储与数仓
OLTP/OLAP、关系库、文档库、数仓架构。
35 分钟
存储与数仓
OLTP 管交易,OLAP 管分析。 数据工程师要会在关系库、文档库与数仓之间选型,并设计从业务库到分析层的分层架构。
学习目标
- 区分 OLTP 与 OLAP 的工作负载特征
- 了解关系库、文档库、列存数仓的适用场景
- 理解 staging → warehouse → mart 分层
OLTP vs OLAP
| 维度 | OLTP(如 MySQL 业务库) | OLAP(如 Snowflake / BigQuery) |
|---|---|---|
| 查询模式 | 点查、短事务 | 大范围扫描、聚合 |
| 写入 | 频繁单行/小批 | 批量加载为主 |
| schema | 高度规范化 | 星型/宽表偏 denormalized |
| 延迟 | 毫秒级 | 秒~分钟可接受 |
CodeRoadMap 的 cf_track、cf_user_progress 是典型 OLTP;「全站学习时长 Top 10」应走 OLAP 或物化视图。
存储选型
| 类型 | 代表 | 典型用途 |
|---|---|---|
| 关系库 | MySQL, PostgreSQL | 业务源库、小型 mart |
| 文档库 | MongoDB | 半结构化日志、catalog |
| 列存数仓 | Snowflake, BigQuery, Redshift | 企业级分析 |
| 对象存储 | S3, GCS, MinIO | 原始文件、数据湖 |
本站主栈 MySQL 8 见 sql-intro;数仓可在云托管服务或 MySQL 分析实例上 轻量模拟。
数仓分层(Medallion / 经典三层)
Bronze / Staging — 贴源层,尽量保真
Silver / Warehouse — 清洗、统一键、SCD
Gold / Mart — 面向主题的宽表(课程、用户、收入)
命名示例:
stg_coderoadmap__tracks # 从 cf_track 同步
dim_track # 维度表
fct_lesson_completion # 事实表:完课事件
mart_learning_daily # 日报 mart
同步策略
- 全量:小表、首次加载
- 增量:
updated_at水位线 - CDC:binlog / Debezium → Kafka(见 de-streaming)
与路线图的关系
- /roadmaps/data-engineer — Data Warehousing 节点
- /tracks/sql-essentials — 表设计与 JOIN