ARTICLE / 2 MIN READ
大数据系统如何选择 OLTP、OLAP 与湖仓
从数据访问模式、延迟和成本出发,梳理业务库、分析库、数据湖和湖仓的职责边界。
大数据架构最常见的问题不是存储空间不够,而是把不同访问模式的数据塞进同一个系统。交易写入、明细查询、聚合分析和离线归档需要不同的引擎。
四类数据访问
| 访问模式 | 典型请求 | 合适存储 |
|---|---|---|
| OLTP | 按主键读写订单 | MySQL、PostgreSQL |
| OLAP | 按时间和维度聚合 | ClickHouse、Doris |
| 实时流 | 秒级窗口指标 | Kafka、Flink |
| 低频归档 | 原始明细、历史快照 | 对象存储、数据湖 |
交易库追求事务和低延迟点查,分析库追求扫描和聚合吞吐。让分析 SQL 直接扫生产库,通常会与线上写入抢 CPU、IO 和锁。
湖仓的价值
数据湖把原始数据以低成本放到对象存储,湖仓再提供表格式、事务、快照和 Schema 管理。它适合保留完整历史,支持批流一体和多引擎读取。
湖仓并不意味着放弃数仓。面向报表的稳定指标仍需要清晰的维度模型和数据契约,不能让每个分析师都直接解释原始 JSON。
一条可维护的链路
业务库/日志 -> CDC/消息 -> 原始层
-> 清洗层 -> 明细层
-> 汇总层 -> BI/API
-> 对象存储归档
每个节点都要记录数据时间、处理时间、来源、版本和质量状态。失败任务不能用空表覆盖成功数据,应该保留批次号并支持重跑。
选型时写清楚数字
在选引擎前记录数据量、每日增量、峰值写入、查询并发、P95 延迟、保留周期、更新方式和成本预算。没有这些数字时,所谓“更快”无法验证。
避免重复存储
原始层保留不可变数据,明细层保存标准化结果,汇总层只保留高频指标。冷热数据分层后,查询路由按时间范围和业务用途选择存储。相同数据在多个系统复制时,要明确谁是事实源,谁只是索引或缓存。
好的大数据架构是访问模式的地图,而不是产品名称的清单。先定义数据生命周期,再决定引擎和集群规模。
GITHUB DISCUSSION
评论与回复
评论保存在 GitHub Discussions,登录 GitHub 后即可参与,发布和回复都在本页完成。
评论区进入视口后自动加载。