从数据库到湖库一体:数据管理技术四十年的分离与统一
本文系统梳理 数据库、数据仓库、数据湖、数仓一体、湖仓一体、湖库一体 六个核心概念。全文围绕一条主线索展开:随着数据规模与负载类型的持续分化,原本统一的系统架构经历了两次分离,又在新型一体化技术的推动下重新走向融合。把握这条线索,即可理解六个概念之间的内在逻辑与承接关系。
目录
- 总体概览:六个概念的关系与定位
- 数据负载的三种基本形态
- 系统分离阶段:数据库、数据仓库与数据湖
- 系统融合阶段:数仓一体、湖仓一体与湖库一体
- 多维度对比:六个概念一览
- 技术演进时间线:1970s---2020s
- 选型参考:按诉求选择方案
- 结语
- 延伸阅读
一、总体概览:六个概念的关系与定位
六个概念并非彼此孤立的系统类别,而是同一演进链条上不同阶段的产物,彼此之间存在明确的承继关系:
#mermaid-svg-kc73kqwGrnatvKUb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kc73kqwGrnatvKUb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kc73kqwGrnatvKUb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kc73kqwGrnatvKUb .error-icon{fill:#552222;}#mermaid-svg-kc73kqwGrnatvKUb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kc73kqwGrnatvKUb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kc73kqwGrnatvKUb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kc73kqwGrnatvKUb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kc73kqwGrnatvKUb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kc73kqwGrnatvKUb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kc73kqwGrnatvKUb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kc73kqwGrnatvKUb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kc73kqwGrnatvKUb .marker.cross{stroke:#333333;}#mermaid-svg-kc73kqwGrnatvKUb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kc73kqwGrnatvKUb p{margin:0;}#mermaid-svg-kc73kqwGrnatvKUb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kc73kqwGrnatvKUb .cluster-label text{fill:#333;}#mermaid-svg-kc73kqwGrnatvKUb .cluster-label span{color:#333;}#mermaid-svg-kc73kqwGrnatvKUb .cluster-label span p{background-color:transparent;}#mermaid-svg-kc73kqwGrnatvKUb .label text,#mermaid-svg-kc73kqwGrnatvKUb span{fill:#333;color:#333;}#mermaid-svg-kc73kqwGrnatvKUb .node rect,#mermaid-svg-kc73kqwGrnatvKUb .node circle,#mermaid-svg-kc73kqwGrnatvKUb .node ellipse,#mermaid-svg-kc73kqwGrnatvKUb .node polygon,#mermaid-svg-kc73kqwGrnatvKUb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kc73kqwGrnatvKUb .rough-node .label text,#mermaid-svg-kc73kqwGrnatvKUb .node .label text,#mermaid-svg-kc73kqwGrnatvKUb .image-shape .label,#mermaid-svg-kc73kqwGrnatvKUb .icon-shape .label{text-anchor:middle;}#mermaid-svg-kc73kqwGrnatvKUb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kc73kqwGrnatvKUb .rough-node .label,#mermaid-svg-kc73kqwGrnatvKUb .node .label,#mermaid-svg-kc73kqwGrnatvKUb .image-shape .label,#mermaid-svg-kc73kqwGrnatvKUb .icon-shape .label{text-align:center;}#mermaid-svg-kc73kqwGrnatvKUb .node.clickable{cursor:pointer;}#mermaid-svg-kc73kqwGrnatvKUb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kc73kqwGrnatvKUb .arrowheadPath{fill:#333333;}#mermaid-svg-kc73kqwGrnatvKUb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kc73kqwGrnatvKUb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kc73kqwGrnatvKUb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kc73kqwGrnatvKUb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kc73kqwGrnatvKUb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kc73kqwGrnatvKUb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kc73kqwGrnatvKUb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kc73kqwGrnatvKUb .cluster text{fill:#333;}#mermaid-svg-kc73kqwGrnatvKUb .cluster span{color:#333;}#mermaid-svg-kc73kqwGrnatvKUb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kc73kqwGrnatvKUb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kc73kqwGrnatvKUb rect.text{fill:none;stroke-width:0;}#mermaid-svg-kc73kqwGrnatvKUb .icon-shape,#mermaid-svg-kc73kqwGrnatvKUb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kc73kqwGrnatvKUb .icon-shape p,#mermaid-svg-kc73kqwGrnatvKUb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kc73kqwGrnatvKUb .icon-shape .label rect,#mermaid-svg-kc73kqwGrnatvKUb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kc73kqwGrnatvKUb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kc73kqwGrnatvKUb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kc73kqwGrnatvKUb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第一次分离
第二次分离
仓内统一
并入湖层
实时汇入
数据库
在线事务
数据仓库
离线分析
数据湖
原始存储
数仓一体
湖仓一体
湖库一体
图注:上图展示六个概念的演进关系。前半段为两次系统分离------数据库因分析性能瓶颈分离出数据仓库,数据仓库因非结构化数据承载瓶颈分离出数据湖;后半段为三次融合范围逐级扩大的一体化------数仓一体统一仓库内部,湖仓一体统一湖与仓,湖库一体进一步纳入在线数据库。
以下为全文速查表,概括各概念的核心定位与代表性产品,后续章节为逐项展开:
| 概念 | 一句话定位 | 代表性产品 |
|---|---|---|
| 数据库 | 面向在线事务的数据管理系统 | MySQL、PostgreSQL、Oracle、TiDB、OceanBase |
| 数据仓库 | 面向主题分析的数据集合 | Snowflake、Teradata、ClickHouse、Doris |
| 数据湖 | 以原始格式存储海量任意数据 | AWS S3+EMR、OSS+EMR、HDFS 生态 |
| 数仓一体 | 批流打通的一体化数仓平台 | MaxCompute、GaussDB(DWS)、StarRocks |
| 湖仓一体 | 以数仓治理能力统一数据湖 | Databricks、DLC、Delta Lake、Iceberg |
| 湖库一体 | 库、仓、湖三层能力统一 | TiDB+Iceberg、TDSQL+DLC、OceanBase |
二、数据负载的三种基本形态
数据系统需要承载的负载可分为三种基本形态,分别对应不同的技术诉求:
- 事务记录(OLTP):面向订单、转账、登录等高频写入场景,要求写入低延迟、数据强一致、不丢失,核心保障为 ACID 事务语义。
- 分析决策(OLAP):面向多维聚合、统计报表等场景,需在大规模数据上执行扫描与聚合,核心诉求为查询吞吐与响应时间。
- 探索挖掘:面向机器学习训练、日志分析、非结构化数据挖掘等场景,要求海量原始数据低成本存储,对 Schema 灵活性与格式兼容性要求高。
三种负载对系统架构的要求存在本质冲突:事务处理依赖行级锁与索引机制,会显著拖慢大规模聚合查询;而复杂分析负载会占用大量 I/O 与计算资源,反噬在线事务性能。单一系统难以同时满足三类需求,这正是后续两次系统分离的根本动因。
因此,数据管理技术的演进路径并非线性的功能叠加,而是先经历专业化分离、各自承担单一负载,再通过一体化技术消除分离带来的数据搬运与复制成本。
三、系统分离阶段:数据库、数据仓库与数据湖
3.1 数据库:事务处理的基石
数据库是数据管理体系的起点,其设计目标集中于事务记录:高并发写入、强一致读取、持久化保障。为实现该目标,数据库采用行式存储结构,明确 ACID 语义(原子性、一致性、隔离性、持久性),并通过范式化建模消除数据冗余,保证同一数据仅存在单一修改入口。
数据库的局限在于分析能力薄弱:面对全表聚合类查询需逐行扫描,响应时间过长,且分析负载会挤占在线事务的资源配额。这一矛盾直接催生了第一次系统分离。
| 产品 | 简介 |
|---|---|
| MySQL / PostgreSQL | 开源关系型数据库事实标准,互联网应用最广的两大选择 |
| Oracle / SQL Server | 传统企业级商用数据库,金融、政企核心系统的主要选择 |
| MongoDB / Redis | 文档型 / 键值型 NoSQL,分别适用于灵活结构与高速缓存场景 |
| TiDB / OceanBase | 分布式关系型数据库,具备水平扩展与 HTAP 能力 |
3.2 第一次分离:数据仓库
数据仓库是面向分析负载的专门化系统,其设计思路与数据库形成互补:
- 面向主题建模:以客户、商品、订单等业务主题组织数据,而非按业务系统组织;
- 列式存储:分析查询通常仅访问少数列的全体取值,列式存储可显著提升聚合效率;
- ETL 数据集成:通过抽取、清洗、转换统一多方数据口径,保障分析结果可信;
- 历史数据沉淀:按时间维度保存全量快照,支撑趋势分析、同比环比等对比场景。
维度建模方法论(星型模型、雪花模型)的确立,使"业务问题到结构化分析"成为标准化流程。
#mermaid-svg-oZ8HInF4u9mN2cal{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oZ8HInF4u9mN2cal .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oZ8HInF4u9mN2cal .error-icon{fill:#552222;}#mermaid-svg-oZ8HInF4u9mN2cal .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oZ8HInF4u9mN2cal .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oZ8HInF4u9mN2cal .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oZ8HInF4u9mN2cal .marker.cross{stroke:#333333;}#mermaid-svg-oZ8HInF4u9mN2cal svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oZ8HInF4u9mN2cal p{margin:0;}#mermaid-svg-oZ8HInF4u9mN2cal .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-oZ8HInF4u9mN2cal .cluster-label text{fill:#333;}#mermaid-svg-oZ8HInF4u9mN2cal .cluster-label span{color:#333;}#mermaid-svg-oZ8HInF4u9mN2cal .cluster-label span p{background-color:transparent;}#mermaid-svg-oZ8HInF4u9mN2cal .label text,#mermaid-svg-oZ8HInF4u9mN2cal span{fill:#333;color:#333;}#mermaid-svg-oZ8HInF4u9mN2cal .node rect,#mermaid-svg-oZ8HInF4u9mN2cal .node circle,#mermaid-svg-oZ8HInF4u9mN2cal .node ellipse,#mermaid-svg-oZ8HInF4u9mN2cal .node polygon,#mermaid-svg-oZ8HInF4u9mN2cal .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oZ8HInF4u9mN2cal .rough-node .label text,#mermaid-svg-oZ8HInF4u9mN2cal .node .label text,#mermaid-svg-oZ8HInF4u9mN2cal .image-shape .label,#mermaid-svg-oZ8HInF4u9mN2cal .icon-shape .label{text-anchor:middle;}#mermaid-svg-oZ8HInF4u9mN2cal .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-oZ8HInF4u9mN2cal .rough-node .label,#mermaid-svg-oZ8HInF4u9mN2cal .node .label,#mermaid-svg-oZ8HInF4u9mN2cal .image-shape .label,#mermaid-svg-oZ8HInF4u9mN2cal .icon-shape .label{text-align:center;}#mermaid-svg-oZ8HInF4u9mN2cal .node.clickable{cursor:pointer;}#mermaid-svg-oZ8HInF4u9mN2cal .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-oZ8HInF4u9mN2cal .arrowheadPath{fill:#333333;}#mermaid-svg-oZ8HInF4u9mN2cal .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oZ8HInF4u9mN2cal .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oZ8HInF4u9mN2cal .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oZ8HInF4u9mN2cal .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-oZ8HInF4u9mN2cal .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oZ8HInF4u9mN2cal .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-oZ8HInF4u9mN2cal .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oZ8HInF4u9mN2cal .cluster text{fill:#333;}#mermaid-svg-oZ8HInF4u9mN2cal .cluster span{color:#333;}#mermaid-svg-oZ8HInF4u9mN2cal div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oZ8HInF4u9mN2cal .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-oZ8HInF4u9mN2cal rect.text{fill:none;stroke-width:0;}#mermaid-svg-oZ8HInF4u9mN2cal .icon-shape,#mermaid-svg-oZ8HInF4u9mN2cal .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oZ8HInF4u9mN2cal .icon-shape p,#mermaid-svg-oZ8HInF4u9mN2cal .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-oZ8HInF4u9mN2cal .icon-shape .label rect,#mermaid-svg-oZ8HInF4u9mN2cal .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oZ8HInF4u9mN2cal .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-oZ8HInF4u9mN2cal .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-oZ8HInF4u9mN2cal :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 产生数据
ETL 抽取
清洗转换
业务系统
数据库
在线事务
数据仓库
分析加工
图注:事务系统与分析系统自此分离,数据经 ETL 链路进入数据仓库,二者各自承担单一负载。
| 产品 | 简介 |
|---|---|
| Snowflake | 云原生数仓标杆,存算分离、按用量计费 |
| Teradata / Greenplum | 传统 MPP 数仓代表(商用 / 开源),政企领域积累深厚 |
| ClickHouse / Doris / StarRocks | 新一代实时分析引擎,查询性能突出,支撑实时数仓 |
| Hive(早期) | Hadoop 生态 SQL 查询层,以 SQL 抽象 MapReduce 计算 |
3.3 第二次分离:数据湖
数据仓库仅接纳经过清洗的结构化数据,难以承载互联网时代爆发式增长的非结构化与半结构化数据------日志、点击流、用户行为、传感器数据等。此类数据通常未定义 Schema,分析用途尚未明确,若强行入库需先设计表结构并完成清洗,成本高、周期长。
数据湖的应对策略是以治理能力换取规模与成本:以对象存储承载任意格式数据,存储成本通常为数仓的十分之一量级;采用 Schema-on-Read(读时定义)模式,存储阶段不定义结构,读取阶段现场解析。数据分析师与机器学习工程师均可直接访问原始数据。
代价在于治理能力缺失:无事务保障、元数据管理薄弱、数据质量难以控制。数据湖若长期缺乏治理,将退化为"数据沼泽"(Data Swamp),数据无人辨识、无人维护。
#mermaid-svg-fE2DKCV5yvlcDswS{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-fE2DKCV5yvlcDswS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-fE2DKCV5yvlcDswS .error-icon{fill:#552222;}#mermaid-svg-fE2DKCV5yvlcDswS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fE2DKCV5yvlcDswS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fE2DKCV5yvlcDswS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fE2DKCV5yvlcDswS .marker.cross{stroke:#333333;}#mermaid-svg-fE2DKCV5yvlcDswS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fE2DKCV5yvlcDswS p{margin:0;}#mermaid-svg-fE2DKCV5yvlcDswS .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fE2DKCV5yvlcDswS .cluster-label text{fill:#333;}#mermaid-svg-fE2DKCV5yvlcDswS .cluster-label span{color:#333;}#mermaid-svg-fE2DKCV5yvlcDswS .cluster-label span p{background-color:transparent;}#mermaid-svg-fE2DKCV5yvlcDswS .label text,#mermaid-svg-fE2DKCV5yvlcDswS span{fill:#333;color:#333;}#mermaid-svg-fE2DKCV5yvlcDswS .node rect,#mermaid-svg-fE2DKCV5yvlcDswS .node circle,#mermaid-svg-fE2DKCV5yvlcDswS .node ellipse,#mermaid-svg-fE2DKCV5yvlcDswS .node polygon,#mermaid-svg-fE2DKCV5yvlcDswS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fE2DKCV5yvlcDswS .rough-node .label text,#mermaid-svg-fE2DKCV5yvlcDswS .node .label text,#mermaid-svg-fE2DKCV5yvlcDswS .image-shape .label,#mermaid-svg-fE2DKCV5yvlcDswS .icon-shape .label{text-anchor:middle;}#mermaid-svg-fE2DKCV5yvlcDswS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-fE2DKCV5yvlcDswS .rough-node .label,#mermaid-svg-fE2DKCV5yvlcDswS .node .label,#mermaid-svg-fE2DKCV5yvlcDswS .image-shape .label,#mermaid-svg-fE2DKCV5yvlcDswS .icon-shape .label{text-align:center;}#mermaid-svg-fE2DKCV5yvlcDswS .node.clickable{cursor:pointer;}#mermaid-svg-fE2DKCV5yvlcDswS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-fE2DKCV5yvlcDswS .arrowheadPath{fill:#333333;}#mermaid-svg-fE2DKCV5yvlcDswS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fE2DKCV5yvlcDswS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fE2DKCV5yvlcDswS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fE2DKCV5yvlcDswS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-fE2DKCV5yvlcDswS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fE2DKCV5yvlcDswS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-fE2DKCV5yvlcDswS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fE2DKCV5yvlcDswS .cluster text{fill:#333;}#mermaid-svg-fE2DKCV5yvlcDswS .cluster span{color:#333;}#mermaid-svg-fE2DKCV5yvlcDswS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fE2DKCV5yvlcDswS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-fE2DKCV5yvlcDswS rect.text{fill:none;stroke-width:0;}#mermaid-svg-fE2DKCV5yvlcDswS .icon-shape,#mermaid-svg-fE2DKCV5yvlcDswS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fE2DKCV5yvlcDswS .icon-shape p,#mermaid-svg-fE2DKCV5yvlcDswS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-fE2DKCV5yvlcDswS .icon-shape .label rect,#mermaid-svg-fE2DKCV5yvlcDswS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fE2DKCV5yvlcDswS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-fE2DKCV5yvlcDswS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-fE2DKCV5yvlcDswS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 非结构化数据
难以承载
治理机制缺失
数据仓库
治理完善
数据湖
成本低廉
数据沼泽
质量失控
图注:数据湖以成本与容量换取治理能力的让渡,治理长期缺位是其后种种问题的根源。
| 产品 | 简介 |
|---|---|
| AWS S3 + EMR/Athena | 云上数据湖的事实标准组合 |
| Azure Data Lake Storage(ADLS) | 微软云数据湖存储,与 Synapse 深度集成 |
| 阿里云 OSS + MaxCompute/EMR、腾讯云 COS + EMR | 国内主流云厂商的数据湖路径 |
| HDFS + Hive/Hadoop 生态 | 大数据时代的原生数据湖方案 |
| Delta Lake / Iceberg / Hudi | 湖上表格式技术,推动数据湖从存储进化为治理平台(见下一章) |
两次分离完成后,形成"数据库承载事务、数据仓库承载分析、数据湖承载原始存储"的格局。但该格局引入了新的成本:同一份数据以"干净副本"与"原始副本"两种形态并存,产生双份存储与双份 ETL 开销,且数据处理口径难以对齐。这一矛盾推动技术演进进入融合阶段。
四、系统融合阶段:数仓一体、湖仓一体与湖库一体
三个"一体化"概念并非并列的新产品类别,而是融合范围逐级扩大、分别解决不同层面分裂问题的三阶段方案:
#mermaid-svg-bmA23DsHIfOW7uWJ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bmA23DsHIfOW7uWJ .error-icon{fill:#552222;}#mermaid-svg-bmA23DsHIfOW7uWJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bmA23DsHIfOW7uWJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bmA23DsHIfOW7uWJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bmA23DsHIfOW7uWJ .marker.cross{stroke:#333333;}#mermaid-svg-bmA23DsHIfOW7uWJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bmA23DsHIfOW7uWJ p{margin:0;}#mermaid-svg-bmA23DsHIfOW7uWJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ .cluster-label text{fill:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ .cluster-label span{color:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ .cluster-label span p{background-color:transparent;}#mermaid-svg-bmA23DsHIfOW7uWJ .label text,#mermaid-svg-bmA23DsHIfOW7uWJ span{fill:#333;color:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ .node rect,#mermaid-svg-bmA23DsHIfOW7uWJ .node circle,#mermaid-svg-bmA23DsHIfOW7uWJ .node ellipse,#mermaid-svg-bmA23DsHIfOW7uWJ .node polygon,#mermaid-svg-bmA23DsHIfOW7uWJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bmA23DsHIfOW7uWJ .rough-node .label text,#mermaid-svg-bmA23DsHIfOW7uWJ .node .label text,#mermaid-svg-bmA23DsHIfOW7uWJ .image-shape .label,#mermaid-svg-bmA23DsHIfOW7uWJ .icon-shape .label{text-anchor:middle;}#mermaid-svg-bmA23DsHIfOW7uWJ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bmA23DsHIfOW7uWJ .rough-node .label,#mermaid-svg-bmA23DsHIfOW7uWJ .node .label,#mermaid-svg-bmA23DsHIfOW7uWJ .image-shape .label,#mermaid-svg-bmA23DsHIfOW7uWJ .icon-shape .label{text-align:center;}#mermaid-svg-bmA23DsHIfOW7uWJ .node.clickable{cursor:pointer;}#mermaid-svg-bmA23DsHIfOW7uWJ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bmA23DsHIfOW7uWJ .arrowheadPath{fill:#333333;}#mermaid-svg-bmA23DsHIfOW7uWJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bmA23DsHIfOW7uWJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bmA23DsHIfOW7uWJ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bmA23DsHIfOW7uWJ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bmA23DsHIfOW7uWJ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bmA23DsHIfOW7uWJ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bmA23DsHIfOW7uWJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bmA23DsHIfOW7uWJ .cluster text{fill:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ .cluster span{color:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bmA23DsHIfOW7uWJ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bmA23DsHIfOW7uWJ rect.text{fill:none;stroke-width:0;}#mermaid-svg-bmA23DsHIfOW7uWJ .icon-shape,#mermaid-svg-bmA23DsHIfOW7uWJ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bmA23DsHIfOW7uWJ .icon-shape p,#mermaid-svg-bmA23DsHIfOW7uWJ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bmA23DsHIfOW7uWJ .icon-shape .label rect,#mermaid-svg-bmA23DsHIfOW7uWJ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bmA23DsHIfOW7uWJ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bmA23DsHIfOW7uWJ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bmA23DsHIfOW7uWJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 仓内统一
湖仓统一
库湖仓统一
数仓一体
湖仓一体
湖库一体
统一数据底座
图注:三者的融合范围依次扩大:数仓一体作用于仓库内部,湖仓一体作用于湖层与仓层之间,湖库一体作用于库、湖、仓三层,后者为前者的超集。
4.1 数仓一体:仓库内部统一
实时化改造的普及使许多企业同时维护两条分析链路:离线数仓承载 T+1 报表,实时数仓承载实时大屏与实时风控。两套链路指标口径不一致,同一指标可能产出两套数值,数据可信度与决策效率均受影响。
数仓一体的解决方案是将批处理与流处理统一至同一平台:离线批处理与实时流处理共用存储与口径,数据统一供给 BI 报表、实时大屏、机器学习等多类下游消费方,元数据、权限与数据质量治理在同一体系内闭环。该方案通常与批流一体、存算分离两项技术绑定实施。
#mermaid-svg-45Td8jKjv1EWWQAw{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-45Td8jKjv1EWWQAw .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-45Td8jKjv1EWWQAw .error-icon{fill:#552222;}#mermaid-svg-45Td8jKjv1EWWQAw .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-45Td8jKjv1EWWQAw .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-45Td8jKjv1EWWQAw .marker{fill:#333333;stroke:#333333;}#mermaid-svg-45Td8jKjv1EWWQAw .marker.cross{stroke:#333333;}#mermaid-svg-45Td8jKjv1EWWQAw svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-45Td8jKjv1EWWQAw p{margin:0;}#mermaid-svg-45Td8jKjv1EWWQAw .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-45Td8jKjv1EWWQAw .cluster-label text{fill:#333;}#mermaid-svg-45Td8jKjv1EWWQAw .cluster-label span{color:#333;}#mermaid-svg-45Td8jKjv1EWWQAw .cluster-label span p{background-color:transparent;}#mermaid-svg-45Td8jKjv1EWWQAw .label text,#mermaid-svg-45Td8jKjv1EWWQAw span{fill:#333;color:#333;}#mermaid-svg-45Td8jKjv1EWWQAw .node rect,#mermaid-svg-45Td8jKjv1EWWQAw .node circle,#mermaid-svg-45Td8jKjv1EWWQAw .node ellipse,#mermaid-svg-45Td8jKjv1EWWQAw .node polygon,#mermaid-svg-45Td8jKjv1EWWQAw .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-45Td8jKjv1EWWQAw .rough-node .label text,#mermaid-svg-45Td8jKjv1EWWQAw .node .label text,#mermaid-svg-45Td8jKjv1EWWQAw .image-shape .label,#mermaid-svg-45Td8jKjv1EWWQAw .icon-shape .label{text-anchor:middle;}#mermaid-svg-45Td8jKjv1EWWQAw .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-45Td8jKjv1EWWQAw .rough-node .label,#mermaid-svg-45Td8jKjv1EWWQAw .node .label,#mermaid-svg-45Td8jKjv1EWWQAw .image-shape .label,#mermaid-svg-45Td8jKjv1EWWQAw .icon-shape .label{text-align:center;}#mermaid-svg-45Td8jKjv1EWWQAw .node.clickable{cursor:pointer;}#mermaid-svg-45Td8jKjv1EWWQAw .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-45Td8jKjv1EWWQAw .arrowheadPath{fill:#333333;}#mermaid-svg-45Td8jKjv1EWWQAw .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-45Td8jKjv1EWWQAw .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-45Td8jKjv1EWWQAw .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-45Td8jKjv1EWWQAw .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-45Td8jKjv1EWWQAw .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-45Td8jKjv1EWWQAw .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-45Td8jKjv1EWWQAw .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-45Td8jKjv1EWWQAw .cluster text{fill:#333;}#mermaid-svg-45Td8jKjv1EWWQAw .cluster span{color:#333;}#mermaid-svg-45Td8jKjv1EWWQAw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-45Td8jKjv1EWWQAw .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-45Td8jKjv1EWWQAw rect.text{fill:none;stroke-width:0;}#mermaid-svg-45Td8jKjv1EWWQAw .icon-shape,#mermaid-svg-45Td8jKjv1EWWQAw .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-45Td8jKjv1EWWQAw .icon-shape p,#mermaid-svg-45Td8jKjv1EWWQAw .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-45Td8jKjv1EWWQAw .icon-shape .label rect,#mermaid-svg-45Td8jKjv1EWWQAw .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-45Td8jKjv1EWWQAw .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-45Td8jKjv1EWWQAw .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-45Td8jKjv1EWWQAw :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 离线批处理
统一数仓平台
实时流处理
BI 报表
实时大屏
模型训练
图注:离线与实时链路统一至同一平台,共享存储与指标口径,消除双链路分裂。
数仓一体解决的是仓库内部的口径分裂问题,也是后两个融合方案的前提------仓库层治理有序之后,湖层与库层才具备接入条件。
| 产品 | 简介 |
|---|---|
| 阿里云 MaxCompute | 一体化大数据计算服务,离线、实时、机器学习统一底座 |
| 华为云 GaussDB(DWS) | 分析型数据库服务,主打一体化高可靠数仓 |
| StarRocks / Doris | 极速分析引擎,单链路同时支撑实时与离线分析 |
| 腾讯云 TCHouse-C / EMR 数仓套件 | 云上一体化数仓服务,支持离线实时一体化建仓 |
4.2 湖仓一体:湖与仓的统一
湖仓一体是数仓一体的自然延伸。其核心判断在于:数据湖具备存储成本优势,数据仓库具备治理能力优势,二者可通过同一份数据底座兼得。实现路径依赖开放表格式(Open Table Format)------Delta Lake、Apache Iceberg、Apache Hudi、Apache Paimon 等方案为对象存储上的数据文件补充 ACID 事务、时间旅行(Time Travel)、Schema 演进、增量读取等能力,将纯粹的数据存储升级为具备治理能力的平台。
效果表现为:数据统一存放于低成本湖存储,BI 分析与机器学习直接消费同一份数据,无需维护双份副本。
#mermaid-svg-pN89uyOznuBKR9YJ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pN89uyOznuBKR9YJ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pN89uyOznuBKR9YJ .error-icon{fill:#552222;}#mermaid-svg-pN89uyOznuBKR9YJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pN89uyOznuBKR9YJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pN89uyOznuBKR9YJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pN89uyOznuBKR9YJ .marker.cross{stroke:#333333;}#mermaid-svg-pN89uyOznuBKR9YJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pN89uyOznuBKR9YJ p{margin:0;}#mermaid-svg-pN89uyOznuBKR9YJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-pN89uyOznuBKR9YJ .cluster-label text{fill:#333;}#mermaid-svg-pN89uyOznuBKR9YJ .cluster-label span{color:#333;}#mermaid-svg-pN89uyOznuBKR9YJ .cluster-label span p{background-color:transparent;}#mermaid-svg-pN89uyOznuBKR9YJ .label text,#mermaid-svg-pN89uyOznuBKR9YJ span{fill:#333;color:#333;}#mermaid-svg-pN89uyOznuBKR9YJ .node rect,#mermaid-svg-pN89uyOznuBKR9YJ .node circle,#mermaid-svg-pN89uyOznuBKR9YJ .node ellipse,#mermaid-svg-pN89uyOznuBKR9YJ .node polygon,#mermaid-svg-pN89uyOznuBKR9YJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pN89uyOznuBKR9YJ .rough-node .label text,#mermaid-svg-pN89uyOznuBKR9YJ .node .label text,#mermaid-svg-pN89uyOznuBKR9YJ .image-shape .label,#mermaid-svg-pN89uyOznuBKR9YJ .icon-shape .label{text-anchor:middle;}#mermaid-svg-pN89uyOznuBKR9YJ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pN89uyOznuBKR9YJ .rough-node .label,#mermaid-svg-pN89uyOznuBKR9YJ .node .label,#mermaid-svg-pN89uyOznuBKR9YJ .image-shape .label,#mermaid-svg-pN89uyOznuBKR9YJ .icon-shape .label{text-align:center;}#mermaid-svg-pN89uyOznuBKR9YJ .node.clickable{cursor:pointer;}#mermaid-svg-pN89uyOznuBKR9YJ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pN89uyOznuBKR9YJ .arrowheadPath{fill:#333333;}#mermaid-svg-pN89uyOznuBKR9YJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pN89uyOznuBKR9YJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pN89uyOznuBKR9YJ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pN89uyOznuBKR9YJ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pN89uyOznuBKR9YJ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pN89uyOznuBKR9YJ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pN89uyOznuBKR9YJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pN89uyOznuBKR9YJ .cluster text{fill:#333;}#mermaid-svg-pN89uyOznuBKR9YJ .cluster span{color:#333;}#mermaid-svg-pN89uyOznuBKR9YJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pN89uyOznuBKR9YJ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pN89uyOznuBKR9YJ rect.text{fill:none;stroke-width:0;}#mermaid-svg-pN89uyOznuBKR9YJ .icon-shape,#mermaid-svg-pN89uyOznuBKR9YJ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pN89uyOznuBKR9YJ .icon-shape p,#mermaid-svg-pN89uyOznuBKR9YJ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pN89uyOznuBKR9YJ .icon-shape .label rect,#mermaid-svg-pN89uyOznuBKR9YJ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pN89uyOznuBKR9YJ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pN89uyOznuBKR9YJ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pN89uyOznuBKR9YJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 湖仓一体
原架构
原始数据
清洗数据
开放表格式
数据湖
机器学习
数据仓库
报表分析
湖存储
统一数据层
图注:湖仓一体以开放表格式统一湖存储与仓的治理能力,消除双份拷贝与数据搬运。
| 产品 | 简介 |
|---|---|
| Databricks Lakehouse | 湖仓一体概念提出者,Data + AI 一体化平台 |
| Delta Lake / Iceberg / Hudi / Paimon | 开源开放表格式,主流湖仓方案的共同技术基础 |
| 腾讯云 DLC + EMR | DLC 提供 Serverless 湖仓分析,EMR 提供开源引擎组合 |
| 阿里云 MaxCompute/EMR + OSS、华为云 FusionInsight | 国内主流云厂商的湖仓方案路径 |
| Dremio / Trino | 湖上 SQL 查询引擎,使分析师可直接查询湖数据 |
4.3 湖库一体:交易与分析的统一
湖仓一体消除了分析层的双份拷贝,湖库一体则面向更深层的分裂:交易与分析之间的时延隔阂。传统架构下,业务数据库数据需经 T+1 批式导入数仓,当日交易次日方可进入分析链路,实时风控、实时推荐、动态定价等场景受到制约。
湖库一体将数据库纳入统一底座,依托 HTAP(混合事务分析处理,Hybrid Transactional/Analytical Processing)技术,交易数据写入后即可被同步分析。其价值不在于新增存储形态,而在于贯通三个已有层:数据库层承载实时写入与强一致,仓库层承载大规模分析,湖层承载原始沉淀,三层共享统一元数据与数据口径。
需澄清一个常见误解:"湖库一体"并非"数据湖叠加一个数据库"。库、湖、仓各对应一层能力------库管交易、仓管分析、湖管原始------其核心诉求是交易与分析的低延迟协同,而非存储格式问题。
#mermaid-svg-OtvMhw8LUdyGFegd{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-OtvMhw8LUdyGFegd .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-OtvMhw8LUdyGFegd .error-icon{fill:#552222;}#mermaid-svg-OtvMhw8LUdyGFegd .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-OtvMhw8LUdyGFegd .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-OtvMhw8LUdyGFegd .marker{fill:#333333;stroke:#333333;}#mermaid-svg-OtvMhw8LUdyGFegd .marker.cross{stroke:#333333;}#mermaid-svg-OtvMhw8LUdyGFegd svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-OtvMhw8LUdyGFegd p{margin:0;}#mermaid-svg-OtvMhw8LUdyGFegd .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-OtvMhw8LUdyGFegd .cluster-label text{fill:#333;}#mermaid-svg-OtvMhw8LUdyGFegd .cluster-label span{color:#333;}#mermaid-svg-OtvMhw8LUdyGFegd .cluster-label span p{background-color:transparent;}#mermaid-svg-OtvMhw8LUdyGFegd .label text,#mermaid-svg-OtvMhw8LUdyGFegd span{fill:#333;color:#333;}#mermaid-svg-OtvMhw8LUdyGFegd .node rect,#mermaid-svg-OtvMhw8LUdyGFegd .node circle,#mermaid-svg-OtvMhw8LUdyGFegd .node ellipse,#mermaid-svg-OtvMhw8LUdyGFegd .node polygon,#mermaid-svg-OtvMhw8LUdyGFegd .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-OtvMhw8LUdyGFegd .rough-node .label text,#mermaid-svg-OtvMhw8LUdyGFegd .node .label text,#mermaid-svg-OtvMhw8LUdyGFegd .image-shape .label,#mermaid-svg-OtvMhw8LUdyGFegd .icon-shape .label{text-anchor:middle;}#mermaid-svg-OtvMhw8LUdyGFegd .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-OtvMhw8LUdyGFegd .rough-node .label,#mermaid-svg-OtvMhw8LUdyGFegd .node .label,#mermaid-svg-OtvMhw8LUdyGFegd .image-shape .label,#mermaid-svg-OtvMhw8LUdyGFegd .icon-shape .label{text-align:center;}#mermaid-svg-OtvMhw8LUdyGFegd .node.clickable{cursor:pointer;}#mermaid-svg-OtvMhw8LUdyGFegd .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-OtvMhw8LUdyGFegd .arrowheadPath{fill:#333333;}#mermaid-svg-OtvMhw8LUdyGFegd .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-OtvMhw8LUdyGFegd .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-OtvMhw8LUdyGFegd .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OtvMhw8LUdyGFegd .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-OtvMhw8LUdyGFegd .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OtvMhw8LUdyGFegd .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-OtvMhw8LUdyGFegd .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-OtvMhw8LUdyGFegd .cluster text{fill:#333;}#mermaid-svg-OtvMhw8LUdyGFegd .cluster span{color:#333;}#mermaid-svg-OtvMhw8LUdyGFegd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-OtvMhw8LUdyGFegd .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-OtvMhw8LUdyGFegd rect.text{fill:none;stroke-width:0;}#mermaid-svg-OtvMhw8LUdyGFegd .icon-shape,#mermaid-svg-OtvMhw8LUdyGFegd .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OtvMhw8LUdyGFegd .icon-shape p,#mermaid-svg-OtvMhw8LUdyGFegd .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-OtvMhw8LUdyGFegd .icon-shape .label rect,#mermaid-svg-OtvMhw8LUdyGFegd .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OtvMhw8LUdyGFegd .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-OtvMhw8LUdyGFegd .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-OtvMhw8LUdyGFegd :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 隔夜延迟
实时决策
湖库一体架构
库层
在线交易
仓层
分析加工
湖层
原始存储
传统架构
T+1 搬运
风控/推荐/定价
图注:湖库一体贯通库、仓、湖三层,消除交易与分析之间的隔夜延迟,输出实时决策能力。
| 产品 | 简介 |
|---|---|
| TiDB + 开放湖格式(Iceberg 等) | 开源 HTAP 数据库与湖上表格式打通,实验路径成本较低 |
| OceanBase | 原生 HTAP 数据库,事务与分析一体,并向湖生态延伸 |
| 腾讯云 TDSQL + DLC/EMR、华为云 GaussDB + MRS | 云厂商"数据库 + 湖仓"组合的一体化底座 |
| SingleStore / ClickHouse 类 | 从分析侧切入,提供高性能实时分析对外服务 |
4.4 三者的关系:融合范围逐级扩大
将三个"一体化"概念纳入同一维度对比,差异即清晰可见:
| 维度 | 数仓一体 | 湖仓一体 | 湖库一体 |
|---|---|---|---|
| 融合对象 | 仓内部(批处理与流处理) | 仓与湖之间(双份拷贝) | 库、湖、仓三层(T+1 延迟) |
| 本质问题 | 数据口径分裂 | 存储双重拷贝 | 交易与分析分离 |
| 关键技术 | 批流一体、存算分离 | 开放表格式 | HTAP + 湖仓贯通 |
| 解决目标 | 统一仓库内部口径 | 消除双份存储 | 消除隔夜延迟 |
三者构成包含关系:
数仓一体 ⊆ 湖仓一体 ⊆ 湖库一体
湖仓一体平台内部仍需完成批流一体(数仓一体的职能),湖库一体方案内部同样包含湖仓一体的职能。后一方案是前一方案的超集,而非替代品。演进时间线上亦相吻合:数仓一体约于 2015---2020 年成型,湖仓一体于 2020 年前后成为主流,湖库一体自 2023 年起升温------每一层分裂被解决后,下一层分裂方才暴露。
五、多维度对比:六个概念一览
前文已逐一展开六个概念,本节将其并置入同一张对比表,九个维度可完整呈现各系统之间的差异:
| 对比维度 | 数据库 | 数据仓库 | 数据湖 | 数仓一体 | 湖仓一体 | 湖库一体 |
|---|---|---|---|---|---|---|
| 数据定位 | 业务事实记录 | 决策分析资产 | 任意原始资产 | 统一定义的仓资产 | 统一底座的湖+仓资产 | 交易+分析+探索全域资产 |
| 典型负载 | OLTP 点查 | OLAP 聚合 | 批处理/扫描/ML | 实时+离线分析 | 湖上任意负载 | 交易+分析实时协同 |
| 存储结构 | 行式为主 | 列式为主 | 对象存储/任意格式 | 列式(存算分离) | 对象存储+开放表格式 | 混合存储统一管理 |
| Schema 时机 | 写时定义 | 写时定义 | 读时定义 | 写时(统一口径) | 表格式演进 | 全域统一管理 |
| 事务支持 | 强 ACID | 较强(写入侧) | 原生弱,需表格层 | 平台内支持 | 表格式提供 ACID | 库强、湖仓由表格式提供 |
| 查询类型 | 主键点查、小事务 | 多维聚合、报表 | 全量扫描、探索 | 聚合+实时流 | 同左+ML 特征 | 点查+聚合+实时 |
| 典型时延 | 毫秒级 | 秒级 | 分钟级~批处理 | 秒级~准实时 | 秒级起 | 毫秒~秒级连续 |
| 主要使用者 | 业务应用 | BI 分析师 | 数据科学家/工程师 | 分析师+工程师 | 全员(分析+AI) | 业务+分析+AI 全角色 |
| 存储成本 | 高(热存储) | 中高(专用存储) | 低(对象存储) | 中(弹性) | 低(复用湖存储) | 分层定价、总体最低 |
表中三处值得重点关注:
- 第一列与第二列的分野是"事务与分析"的元命题:行存与列存、点查与聚合、范式与维度。这一分野是理解后续一切概念的基础。
- 数据湖一列集中体现了"自由"与"缺位":任意格式、低成本、自由读取,但事务支持与治理能力缺失。这份缺位,正是后三个融合方案各自的介入点。
- 三个"一体"列呈现明确的收敛趋势:存储成本自左向右递减、时延自左向右趋于连续,体现行业二十年向统一底座收敛的整体方向。
六、技术演进时间线:1970s---2020s
将前文所述演进过程压缩为一条时间线:
#mermaid-svg-7QXiqgURD8GaiFkb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7QXiqgURD8GaiFkb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7QXiqgURD8GaiFkb .error-icon{fill:#552222;}#mermaid-svg-7QXiqgURD8GaiFkb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7QXiqgURD8GaiFkb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7QXiqgURD8GaiFkb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7QXiqgURD8GaiFkb .marker.cross{stroke:#333333;}#mermaid-svg-7QXiqgURD8GaiFkb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7QXiqgURD8GaiFkb p{margin:0;}#mermaid-svg-7QXiqgURD8GaiFkb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7QXiqgURD8GaiFkb .cluster-label text{fill:#333;}#mermaid-svg-7QXiqgURD8GaiFkb .cluster-label span{color:#333;}#mermaid-svg-7QXiqgURD8GaiFkb .cluster-label span p{background-color:transparent;}#mermaid-svg-7QXiqgURD8GaiFkb .label text,#mermaid-svg-7QXiqgURD8GaiFkb span{fill:#333;color:#333;}#mermaid-svg-7QXiqgURD8GaiFkb .node rect,#mermaid-svg-7QXiqgURD8GaiFkb .node circle,#mermaid-svg-7QXiqgURD8GaiFkb .node ellipse,#mermaid-svg-7QXiqgURD8GaiFkb .node polygon,#mermaid-svg-7QXiqgURD8GaiFkb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7QXiqgURD8GaiFkb .rough-node .label text,#mermaid-svg-7QXiqgURD8GaiFkb .node .label text,#mermaid-svg-7QXiqgURD8GaiFkb .image-shape .label,#mermaid-svg-7QXiqgURD8GaiFkb .icon-shape .label{text-anchor:middle;}#mermaid-svg-7QXiqgURD8GaiFkb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7QXiqgURD8GaiFkb .rough-node .label,#mermaid-svg-7QXiqgURD8GaiFkb .node .label,#mermaid-svg-7QXiqgURD8GaiFkb .image-shape .label,#mermaid-svg-7QXiqgURD8GaiFkb .icon-shape .label{text-align:center;}#mermaid-svg-7QXiqgURD8GaiFkb .node.clickable{cursor:pointer;}#mermaid-svg-7QXiqgURD8GaiFkb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7QXiqgURD8GaiFkb .arrowheadPath{fill:#333333;}#mermaid-svg-7QXiqgURD8GaiFkb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7QXiqgURD8GaiFkb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7QXiqgURD8GaiFkb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7QXiqgURD8GaiFkb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7QXiqgURD8GaiFkb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7QXiqgURD8GaiFkb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7QXiqgURD8GaiFkb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7QXiqgURD8GaiFkb .cluster text{fill:#333;}#mermaid-svg-7QXiqgURD8GaiFkb .cluster span{color:#333;}#mermaid-svg-7QXiqgURD8GaiFkb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7QXiqgURD8GaiFkb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7QXiqgURD8GaiFkb rect.text{fill:none;stroke-width:0;}#mermaid-svg-7QXiqgURD8GaiFkb .icon-shape,#mermaid-svg-7QXiqgURD8GaiFkb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7QXiqgURD8GaiFkb .icon-shape p,#mermaid-svg-7QXiqgURD8GaiFkb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7QXiqgURD8GaiFkb .icon-shape .label rect,#mermaid-svg-7QXiqgURD8GaiFkb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7QXiqgURD8GaiFkb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7QXiqgURD8GaiFkb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7QXiqgURD8GaiFkb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1970s-90s
单机数据库
1990s-2000s
数据仓库
2005-2015
数据湖
2015-2020
数仓一体
2020-至今
湖仓一体
湖库一体
图注:五个阶段分别对应数据库、数据仓库、数据湖、数仓一体、湖仓一体与湖库一体,每一阶段转折均由旧架构无法承载的新增负载触发。
各阶段关键技术特征如下:
- 数据库时代(1970s---1990s):企业信息化的起点,将纸质账本转化为电子记录。Oracle、DB2、SQL Server 各据一方,可靠的单机关系型数据库是主流答案。
- 数据仓库时代(1990s---2000s):数据量累积触发决策分析需求,OLTP 库无法支撑大规模聚合查询,MPP 数仓登场。Kimball 星型模型与 Inmon 企业信息工厂两套方法论成型,Teradata、Exadata、Greenplum、Vertica 各领风骚。
- 数据湖 / 大数据时代(2005---2015):互联网爆发使日志、点击流、传感器数据几何级增长。HDFS + MapReduce + Hive 生态崛起,2010 年 James Dixon 正式提出 Data Lake 概念。数据沼泽问题同期显现,为后续治理能力回归埋下伏笔。
- 云数仓与数仓一体(2015---2020):云计算使按用量计费成为可能,Snowflake 以存算分离重新定义数仓形态;实时分析价值被重新评估,批流一体、实时数仓相继涌现,"数仓一体"的平台化思路成型。
- 湖仓一体与湖库一体(2020---至今):开放表格式将 ACID 事务带回湖上,湖仓一体成为主流架构;HTAP 数据库与湖仓体系打通,湖库一体将交易数据真正纳入统一底座。AI 对原始数据的大规模消费是此轮演进的持续推力。
演进背后是同一组压力在叠加:数据规模、实时性要求、存储成本,以及近年 AI 场景的新增需求。每一次技术跃迁,本质上都是将这组压力下"分离带来的额外开销"再压缩一层。
七、选型参考:按诉求选择方案
技术选型不存在普适的最优解,但存在清晰的决策路径。首先需要明确:核心负载诉求是什么?
#mermaid-svg-us3ADISJo93wHdFo{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-us3ADISJo93wHdFo .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-us3ADISJo93wHdFo .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-us3ADISJo93wHdFo .error-icon{fill:#552222;}#mermaid-svg-us3ADISJo93wHdFo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-us3ADISJo93wHdFo .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-us3ADISJo93wHdFo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-us3ADISJo93wHdFo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-us3ADISJo93wHdFo .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-us3ADISJo93wHdFo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-us3ADISJo93wHdFo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-us3ADISJo93wHdFo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-us3ADISJo93wHdFo .marker.cross{stroke:#333333;}#mermaid-svg-us3ADISJo93wHdFo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-us3ADISJo93wHdFo p{margin:0;}#mermaid-svg-us3ADISJo93wHdFo .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-us3ADISJo93wHdFo .cluster-label text{fill:#333;}#mermaid-svg-us3ADISJo93wHdFo .cluster-label span{color:#333;}#mermaid-svg-us3ADISJo93wHdFo .cluster-label span p{background-color:transparent;}#mermaid-svg-us3ADISJo93wHdFo .label text,#mermaid-svg-us3ADISJo93wHdFo span{fill:#333;color:#333;}#mermaid-svg-us3ADISJo93wHdFo .node rect,#mermaid-svg-us3ADISJo93wHdFo .node circle,#mermaid-svg-us3ADISJo93wHdFo .node ellipse,#mermaid-svg-us3ADISJo93wHdFo .node polygon,#mermaid-svg-us3ADISJo93wHdFo .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-us3ADISJo93wHdFo .rough-node .label text,#mermaid-svg-us3ADISJo93wHdFo .node .label text,#mermaid-svg-us3ADISJo93wHdFo .image-shape .label,#mermaid-svg-us3ADISJo93wHdFo .icon-shape .label{text-anchor:middle;}#mermaid-svg-us3ADISJo93wHdFo .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-us3ADISJo93wHdFo .rough-node .label,#mermaid-svg-us3ADISJo93wHdFo .node .label,#mermaid-svg-us3ADISJo93wHdFo .image-shape .label,#mermaid-svg-us3ADISJo93wHdFo .icon-shape .label{text-align:center;}#mermaid-svg-us3ADISJo93wHdFo .node.clickable{cursor:pointer;}#mermaid-svg-us3ADISJo93wHdFo .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-us3ADISJo93wHdFo .arrowheadPath{fill:#333333;}#mermaid-svg-us3ADISJo93wHdFo .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-us3ADISJo93wHdFo .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-us3ADISJo93wHdFo .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-us3ADISJo93wHdFo .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-us3ADISJo93wHdFo .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-us3ADISJo93wHdFo .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-us3ADISJo93wHdFo .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-us3ADISJo93wHdFo .cluster text{fill:#333;}#mermaid-svg-us3ADISJo93wHdFo .cluster span{color:#333;}#mermaid-svg-us3ADISJo93wHdFo div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-us3ADISJo93wHdFo .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-us3ADISJo93wHdFo rect.text{fill:none;stroke-width:0;}#mermaid-svg-us3ADISJo93wHdFo .icon-shape,#mermaid-svg-us3ADISJo93wHdFo .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-us3ADISJo93wHdFo .icon-shape p,#mermaid-svg-us3ADISJo93wHdFo .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-us3ADISJo93wHdFo .icon-shape .label rect,#mermaid-svg-us3ADISJo93wHdFo .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-us3ADISJo93wHdFo .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-us3ADISJo93wHdFo .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-us3ADISJo93wHdFo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 在线事务优先
经营分析
数十 TB
海量+非结构化
是
否
实时决策
存量仓改造
核心诉求
数据库 OLTP
数据规模
云数仓
分析+AI
湖仓一体
湖+仓分离
湖库一体
数仓一体
图注:按核心诉求沿决策路径定位方案;数据规模与非结构化负载占比是后续分支的关键判据。
附选型速查表:
| 核心诉求 | 优先考虑 | 不建议 |
|---|---|---|
| 业务上线、交易系统要求稳与快 | 数据库(OLTP) | 初期即引入湖/仓 |
| 报表、看板、经营分析,数据量数十 TB 内 | 数仓 / 云数仓 | 自建 Hadoop 数据湖 |
| 日志、非结构化数据归档、ML 训练数据 | 数据湖(对象存储) | 全量入库数仓 |
| 既有数仓需增加实时能力、统一口径 | 数仓一体(批流一体) | 推倒重来重建数据湖 |
| 数据量大、分析+AI 并重、数据需复用 | 湖仓一体 | 湖/仓双份拷贝 |
| 交易在线 + 分析瞬时可见 + 实时决策 | 湖库一体 / HTAP + 湖仓 | 传统 T+1 链路 |
选型的基本原则:技术方案始终服务于业务形态。 交易敏感、分析需求较轻的组织,一套成熟数据库即可满足;数据形态复杂的组织,湖仓一体往往是必要选择;对实时性要求极高且依赖强一致性的金融、供应链场景,湖库一体是当前最接近目标方向的方案,但其标准与生态仍处于快速演进期,选型时应综合评估厂商方案的成熟度与团队自身的运维能力。
八、结语
数据管理四十年的演进,本质上是一场"分离---统一"的循环。因性能与容量的限制,数据库、数据仓库、数据湖依次分离,各自承担单一负载;因实时性、成本与 AI 需求的驱动,数仓一体、湖仓一体、湖库一体又逐步完成更高层级的统一。
面对新的数据技术概念,可通过三个维度快速定位:该技术统一了什么能力?统一作用于哪一层?统一过程中让渡了哪些特性?能够回答这三个问题,即基本掌握了该技术在演进谱系中的位置。
九、延伸阅读
- James Dixon, "Pentaho, Hadoop, and Data Lakes"(2010,Data Lake 概念起源)
- Databricks:Lakehouse 白皮书(2019)与 Delta Lake 技术文档
- Apache Iceberg / Apache Hudi / Apache Paimon 官方文档
- Kimball & Ross, The Data Warehouse Toolkit(维度建模经典)
- 各云厂商官方文档:Snowflake、MaxCompute、DLC、GaussDB(DWS)、TDSQL 等
文中涉及产品与技术状态截至 2026 年 9 月,云产品能力以厂商官方最新文档为准。欢迎交流选型与实践经验。