写在前面

“数据一团乱麻,不知道从哪找起;同一指标,不同部门给出的数字居然不一样;业务方想要个数据,开发却说排期要三周。”

这些问题,相信做过数据工作的同学或多或少都遇到过。而它们的根源,往往在于底层的数据仓库设计没有做好。

在数智化浪潮下,数据仓库就像是企业的地基——房子盖得再高再漂亮,没有地基撑着,早晚都得塌。今天这篇文章,笔者将从最核心的概念出发,带你一步步搞懂数据仓库的分层架构、主流技术栈以及从0到1的搭建方法。

目录

写在前面

一、数据仓库是什么?

1.1 数据库 ≠ 数据仓库

1.2 数据仓库的官方定义

二、数据仓库分层架构详解

2.1 为什么要分层?

2.2 经典分层架构

2.3 各层详解

(1)操作数据层 ODS(Operational Data Store)

(2)明细数据层 DWD(Data Warehouse Detail)

(3)汇总数据层 DWS(Data Warehouse Summary)

(4)应用数据层 ADS(Application Data Service)

(5)公共维度层 DIM(Dimension)

2.4 分层架构全景总结

三、数据仓库系统架构

3.1 整体技术架构

3.2 三大经典架构模式

Lambda 架构(批流分离)

Kappa 架构(纯流处理)

Lakehouse 架构(湖仓一体)

四、主流技术栈详解

4.1 技术选型全景

4.2 数据采集层

4.3 存储与计算层

离线计算

实时计算

4.4 OLAP 查询引擎对比

4.5 湖仓一体技术栈

4.6 云上数仓方案

阿里云方案:DataWorks + MaxCompute

国际云厂商

五、从0到1搭建数据仓库

5.1 整体搭建路线

5.2 步骤一:需求分析与核心场景选择

5.3 步骤二:技术选型与架构设计

5.4 步骤三:分层建模与ETL开发

分层设计原则

建模方法论:维度建模

ETL / ELT 开发

5.5 步骤四:数据治理与质量保障

5.6 步骤五:部署上线与运维监控

六、主流数据仓库产品对比

6.1 OLAP数仓引擎

6.2 云上数仓方案横向对比

七、前沿趋势与展望

7.1 Data Agent Ready:面向AI Agent的数据架构

7.2 实时湖仓一体化

7.3 AI与数据仓库深度融合

八、总结

附录:常见问题 FAQ


一、数据仓库是什么?

1.1 数据库 ≠ 数据仓库

很多人一听“数据仓库”,脑子里蹦出三个字:MySQL、Oracle。这是最常见的误解。

简单来说:

  • 数据库(OLTP) :存业务数据的地方——下订单、改库存、记考勤,关注的是事务处理;

  • 数据仓库(OLAP) :管分析数据的地方——想看“哪个渠道销量好”“哪个部门毛利高”“过去半年用户留存率”,就得从数仓里拉数据。

对比维度 数据库(OLTP) 数据仓库(OLAP)
核心目标 支持业务事务处理 支持数据分析与决策
数据特点 当前、实时、细节化 历史性、汇总性、多维化
数据模型 范式化(3NF) 星型/雪花型、维度建模
数据量级 MB ~ GB 级 TB ~ PB 级
读写模式 频繁读写(增删改查) 批量写、大批量读
用户群体 一线业务人员 分析师、管理层、数据科学家

数据仓库,就是企业数智化的“数据发动机”,后面连着BI系统、算法平台、可视化报表,甚至AI模型。你可以不搞AI,但你不能没有仓库。

1.2 数据仓库的官方定义

根据数据仓库之父 Bill Inmon 在1991年提出的定义:

数据仓库是一个面向主题的(Subject-Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化的(Time-Variant)数据集合,用于支持管理决策。

这四个特性的含义如下:

特性 说明 示例
面向主题 围绕业务主题组织数据,而非按应用功能 围绕“客户”、“商品”、“订单”而不是“CRM系统”、“ERP系统”
集成的 将多个异构数据源整合为一致的数据视图 A系统叫“客户编号”,B系统叫“客户ID”,C系统写成“customer_no”——数仓统一为“cust_id”
相对稳定 数据一旦进入数仓,通常不会被修改或删除 历史订单数据保留,不被业务系统的删除操作影响
反映历史变化 包含时间维度,能够追溯任意时间点的数据状态 可查询过去12个月每个月的销售趋势,而不是只看当前库存

二、数据仓库分层架构详解

2.1 为什么要分层?

简单来说,数据仓库分层是一种组织和管理数据的方法。它的核心思路,是把数据根据不同的处理阶段和用途,分到不同的层次中;每一层只做自己该做的事情,职责清晰,互不干扰

你可能会问,为什么不能把所有数据放在一起?说白了,混乱的数据难以维护和使用。如果不加整理,数据会变得臃肿、重复,甚至出错;分层之后,数据从采集到应用,每一步都清晰可控。

2.2 经典分层架构

虽然不同企业会有细节差异,但目前主流的数据仓库分层大多数为四到五层的架构。以DataWorks默认提供的五层分法为例,包括五层:ODS → DWD → DWS → ADS → DIM。

下面来逐一讲解每一层的作用。

2.3 各层详解

(1)操作数据层 ODS(Operational Data Store)

ODS层是数据仓库的“接收站”,用于接收并处理需要存储至数据仓库系统的原始数据,其数据表的结构与原始数据所在的数据系统中的表结构一致。

核心职责:

  • 从业务数据库、日志文件、第三方API等数据源接入原始数据

  • 几乎不做处理,最多进行一些简单清洗(如格式标准化、字段重命名)

  • 保存最原始的数据状态,方便后续追溯和加工

  • 隔离作用:避免业务数据库被频繁查询而影响性能

数据操作方式:

  • 将原始的结构化数据增量或全量同步至数据仓库中

  • 将原始的非结构化数据(例如日志信息)进行结构化处理后存储

命名规范示例: ODS层的数据表,命名通常以 ods_ 开头。

💡 业务案例:某电商平台的订单表orders中包含每天数百万条订单流水,ODS层同步时,将整个orders表原样同步到ODS层,表名设为ods_orders。ODS相当于物流链上的“收货环节”——源系统送过来什么,我原样接收。

(2)明细数据层 DWD(Data Warehouse Detail)

DWD层是真正开始加工数据的地方,也是数据清洗和整合的核心环节。

核心职责:

  • 数据清洗、整合和规范化

  • 把不同业务系统中的数据进行合并(如将多个系统的用户表合并成一张主表)

  • 去除无效数据,统一数据格式

  • 完成数据脱敏、维度退化、字段标准化

  • 保持最细粒度的数据,为上层汇总提供可靠的基础

设计原则:

  • 以业务过程为建模驱动,基于具体业务事件的特点构建最细粒度的明细数据表

  • 可结合企业数据使用特点,将明细数据表的某些重要维度属性字段适当冗余,即宽表化处理,减少后续的维度关联

💡 业务案例:在DWD层对ods_orders进行清洗,如将customer_no统一为cust_id,对缺失的发货时间字段进行回填或标记。将订单事实表、用户维度表、商品维度表整合成一张宽表dwd_order_detail,包含订单ID、用户ID、用户名、商品ID、商品名、类目、数量、金额、下单时间等核心字段,一张宽表即可满足80%的下游分析需求。

(3)汇总数据层 DWS(Data Warehouse Summary)

DWS层是在DWD层数据基础上,通过分析的主题对象构建数据模型,按主题进行轻度或中度汇总。

核心职责:

  • 基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表

  • 按主题进行汇总(如产品销售汇总、用户行为统计等)

  • 以宽表形式存储,提高后续分析效率

典型汇总维度: 时间(天/周/月)、地域、用户ID、商品类目等。

设计价值: 从ODS层中对用户的行为做一个初步的归类汇总,抽象出通用维度(如时间、IP、ID),并统计相关数据。在此基础上可以进一步添加轻度汇总,如计算7天、30天、90天的行为数据,让后续计算更加高效。

💡 业务案例:基于dwd_order_detail,按“天 + 城市 + 商品类目”维度汇总订单金额和订单数量,生成dws_category_city_daily表。某业务分析师想查“过去7天各城市手机品类的销售额趋势”,直接在DWS层查询即可,秒级出结果,无需扫描DWD层几亿条原始订单。

(4)应用数据层 ADS(Application Data Service)

ADS是数据分层的最后一站,用于存放数据产品个性化的统计指标数据,输出各种报表。我们平时看到的报表、数据大屏、推荐策略等,都来自这一层。

核心职责:

  • 从DWS或DWD中取数,进一步汇总成适合特定部门或场景使用的数据集

  • 直接面向用户,为BI报表、数据看板、算法模型等提供数据

  • 高度聚合,甚至以接口形式提供

💡 业务案例:市场团队可能需要广告效果分析表,财务团队则需要收支报表。ADS层为不同部门定制专属数据集,结构简洁、查询高效,更贴近业务用语。

(5)公共维度层 DIM(Dimension)

此外,有些架构中还有独立的DIM层,负责存储公用维度数据。

核心职责:

  • 基于实际业务,存放逻辑模型的维度表

  • 通过定义维度,确定维度主键,添加维度属性,关联不同维度

  • 构建整个企业的一致性数据分析维表,降低数据计算口径和算法不统一的风险

典型维度: 时间维度(年/季/月/日)、地域维度(国家/省份/城市)、产品维度(类目/品牌/SKU)、用户维度(等级/来源渠道)。

💡 业务案例:实际工作中,常见的场景是跨部门指标口径打架——市场部说上个月新增用户是5万,产品部说是4.7万。原因在于“新增用户”定义不一致:市场部按注册时间算,产品部按首次登录算。在DIM层统一维护一张dim_date日历维表和dim_user用户维表,约定“新增用户=首次登录时间在统计周期内的用户”,所有下游指标强制引用同一张维表,从源头消除口径差异。

2.4 分层架构全景总结

分层 名称 核心职责 数据特点
ODS 操作数据层 接入原始数据,保持数据原貌 与源系统结构一致,最原始状态
DIM 公共维度层 构建一致性维度 维度定义、维度属性、维度关联
DWD 明细数据层 数据清洗、整合、标准化 最细粒度明细数据,干净可信
DWS 汇总数据层 按主题汇总,构建指标 轻度/中度汇总,宽表形式
ADS 应用数据层 面向具体场景的个性化统计 高度聚合,面向报表与应用

三、数据仓库系统架构

3.1 整体技术架构

数据仓库系统架构通常分为五层:数据源层 → 数据采集层 → 大数据平台层(存储+计算) → 数据仓库层 → 应用层


3.2 三大经典架构模式

Lambda 架构(批流分离)

批处理层(Batch Layer)用于大规模离线计算,速度层(Speed Layer)用于实时增量计算,服务层(Serving Layer)合并两者的结果对外提供查询。

典型技术组合:Hive/Spark(批处理) + Flink/Kafka Streams(流处理) + HBase/Redis(服务层)。

优点:容错性高,批处理保证数据最终一致性。缺点:需要维护批处理和流处理两套代码逻辑,开发和维护成本高;当批和流的结果不一致时,对账排查工作量大。

Kappa 架构(纯流处理)

将所有数据视为流数据,用统一的流处理引擎处理,批处理是流处理的一个子集(重放历史数据)。

典型技术组合:Kafka(消息队列)+ Flink(流处理引擎)+ Paimon/Iceberg(流式存储)+ StarRocks/ClickHouse(查询引擎)。

优点:单一技术栈,无需维护两套代码。缺点:对历史数据的大规模重算需要回放消息队列,不适合超大规模的历史数据。

Lakehouse 架构(湖仓一体)

湖仓一体是近年最热门的架构演进方向,旨在将数仓和数据湖的能力融合到统一的平台中,通过使用开放数据格式(如 Apache Iceberg、Delta Lake、Apache Hudi),支持ACID事务,并提供强大的分析功能。

典型技术组合:Paimon/Iceberg(湖存储格式)+ StarRocks/Trino(查询引擎)+ Flink(计算引擎)+ OSS/S3(底层存储)。

淘宝闪购(饿了么)的大数据架构正是经历了这样的演进——从Lambda到湖仓一体,通过Flink + Paimon + StarRocks实现了统一的流批一体处理能力。


四、主流技术栈详解

4.1 技术选型全景

按用途分类,数仓领域的主流技术选型如下:

类别 技术选型
数据采集传输 FlinkCDC、Kafka、Flume、DataX、Maxwell、Sqoop
数据存储 MySQL、HDFS、HBase、Redis、MongoDB、OSS/S3
数据计算(离线) Hive、Spark、Tez、MapReduce
数据计算(实时) Flink、Storm、Spark Streaming
数据查询 Presto、Kylin、Impala、Druid
OLAP引擎 ClickHouse、Doris、StarRocks、Druid
任务调度 DolphinScheduler、Airflow、Azkaban、Oozie
数据可视化 QuickBI、DataV、FineBI、Superset、Echarts
数据治理 DataWorks、Dataphin、Atlas、Amundsen
元数据管理 Apache Polaris、Atlan、Unity Catalog

4.2 数据采集层

工具 类型 适用场景
Canal / FlinkCDC 实时增量 MySQL Binlog 实时同步
Kafka 消息队列 实时流数据接入
Flume 日志采集 日志文件实时采集
DataX 离线同步 异构数据源离线批量同步
Sqoop 离线同步 Hadoop 与关系型数据库之间的数据传输

4.3 存储与计算层

离线计算
引擎 说明
Hive 基于 HDFS 之上的数据仓库,支持标准 SQL,默认执行引擎为 MapReduce,本质是将 SQL 转化为分布式计算任务
Spark SQL 基于内存计算,比 Hive MapReduce 速度快 10~100 倍,是离线计算的主力引擎
Tez 将 MapReduce 任务转化为 DAG 执行,显著提升 Hive 的查询速度
实时计算
引擎 说明
Flink 真正的流处理引擎,支持事件时间处理和 Exactly-Once 语义,可通过Flink SQL实现流式数据的分层加工与流转
Spark Streaming 微批处理模式(Micro-Batch),延迟为秒级,适合准实时场景
Storm 早期的实时计算框架,逐条记录处理,延迟极低但吞吐量有限

4.4 OLAP 查询引擎对比

在数据仓库的查询层,四大主流OLAP引擎各有千秋:

引擎 核心优势 弱点 典型场景
ClickHouse 单表查询超高性能,极致压缩,写入吞吐高 多表JOIN性能弱,数据更新不友好 日志分析、用户行为轨迹、监控系统
Apache Doris MySQL协议兼容,部署轻量,性能均衡,入门门槛低 大规模集群运维复杂度 中小规模BI报表、快速PoC
StarRocks 多表JOIN性能突出,存算分离,实时更新能力强,湖仓一体支持好 社区国际化仍在完善中 实时BI、用户画像、需要外查询数据湖
Druid 时间序列查询极快,高并发支持好 不支持UPDATE/DELETE,多维建模能力弱 广告点击分析、实时监控大盘

💡 简记技巧:ClickHouse适合“查日志”——一天几亿条请求,聚合分析秒级出结果;Doris适合“做报表”——中小团队用MySQL语法就能跑BI;StarRocks适合“多表查”——用户画像需要关联十张表,还要求高并发自助分析;Druid适合“看时序”——广告投放实时数据看板,运维喊你上Druid。

4.5 湖仓一体技术栈

湖仓一体(Lakehouse)是当前数据仓库领域最重要的架构演进。它把数据湖的灵活性和数据仓库的管理能力融为一体,其实现依赖四个核心组件:

组件 作用 典型技术
存储 数据物理存储 S3、OSS、HDFS、Azure Blob
表格式 为文件存储添加 ACID 事务、Schema 管理能力 Apache Iceberg、Delta Lake、Apache Hudi、Apache Paimon
目录 注册并管理表的位置和访问权限 Apache Polaris、Hive Metastore、Unity Catalog
查询引擎 读取数据、优化执行计划、返回查询结果 StarRocks、Trino、Spark、Dremio

Apache Paimon 作为新一代流式湖存储格式,在多个关键指标上表现优异:能够提供更低的数据处理延迟,在流式更新的稳定性方面表现更好,写放大控制也更加有效。

4.6 云上数仓方案

阿里云方案:DataWorks + MaxCompute

DataWorks基于MaxCompute等大数据引擎,提供全链路大数据开发治理平台。作为阿里巴巴数据中台的建设者,DataWorks沉淀了阿里巴巴大数据建设方法论。MaxCompute提供EB级数据存储与大规模分布式计算能力,支持存算分离,集群自动弹性,用户可在极短时间内拉起大量CU计算资源。

在DataWorks + MaxCompute的组合中,数据仓库遵循经典的分层建模方法,通过数据开发Studio进行可视化ETL/ELT开发,构建清晰、可复用的数据模型。

国际云厂商
平台 核心特点 适合场景
Snowflake 存算分离的SaaS数仓,零运维 企业级BI、数据共享
Google BigQuery Serverless架构,按查询量计费 广告分析、大规模日志
Amazon Redshift AWS生态深度整合 已深度使用AWS的企业
Databricks Lakehouse架构,AI/ML就绪 数据科学、机器学习场景

五、从0到1搭建数据仓库

5.1 整体搭建路线

搭建企业级数据仓库,可以遵循以下从规划到落地的核心步骤:

步骤一:需求分析与核心场景选择 → 步骤二:技术选型与架构设计 → 步骤三:分层建模与ETL开发 → 步骤四:数据治理与质量保障 → 步骤五:部署上线与运维监控

5.2 步骤一:需求分析与核心场景选择

构建企业级数据仓库的首要任务是明确业务需求。这包括理解企业的业务目标、关键绩效指标(KPIs)、以及数据分析的具体需求。通过与业务部门的紧密沟通,可以确保数据仓库的设计能够满足实际业务场景的需求。

实践建议:不要试图一开始就覆盖所有业务。从现有业务出发,先选一个“核心分析场景”,比如电商的销售分析、金融的客户画像,集中资源做深做透,跑通之后再逐步覆盖更多业务域。

需要产出的核心文档

  • 《数据需求说明书》 :明确分析场景、指标体系、数据源列表

  • 《指标体系清单》 :列出每个指标的名称、口径、计算公式、数据来源和责任人

  • 《数据源调研报告》 :汇总各业务系统的数据库类型、数据量、更新频率、接口方式

💡 业务案例:某零售企业要建数仓,先从“销售分析”切入。初期只需接入订单系统(MySQL)和商品系统(Oracle)两个数据源,指标体系围绕“销售额、订单量、客单价、退货率”四个核心指标展开。跑通从数据接入到BI报表的全链路后,再逐步接入库存系统、CRM系统和广告投放数据——这就是典型的“先纵后横”策略。

5.3 步骤二:技术选型与架构设计

根据企业的数据量级、实时性要求、技术团队能力以及预算,选择合适的技术栈。

选型决策表:

场景 数据量 实时要求 推荐技术组合
小型团队快速起步 < 100 GB 天级 MySQL + DataX + Doris + Superset
中型企业离线数仓 TB 级 小时级 Hadoop + Hive/Spark + DataWorks/DolphinScheduler + QuickBI
实时数仓 TB 级 秒/分钟级 Kafka + Flink + Paimon + StarRocks/ClickHouse
云上数据平台 PB 级 弹性需求 MaxCompute + DataWorks + Hologres
AI/ML就绪型 多模态数据 批量/实时 Databricks + Iceberg + MLflow

现代平台的架构设计有一个重要的趋势:存算分离。存储和计算资源可以独立扩展,按需使用,大幅优化成本。这一架构已经成为2025年后云数据仓库的标配。

架构设计需要产出的内容

  • 整体架构图(含数据流向、组件之间的调用关系)

  • 分层设计(ODS → DIM → DWD → DWS → ADS 各层的存储格式、保留策略)

  • 集群规模规划:根据数据量预估节点数、存储容量、计算资源

  • 安全架构:网络隔离策略、数据脱敏规则、访问权限矩阵

5.4 步骤三:分层建模与ETL开发

分层设计原则

遵循 ODS → DIM → DWD → DWS → ADS 五层架构,逐层完成建模设计。

各层设计要点

层级 建模方法 关键技术决策
ODS 源系统结构镜像 全量同步还是增量同步?时间窗口多久?
DIM 维度建模(星型/雪花型) 缓慢变化维度(SCD)采用哪种策略?
DWD 事实表建模,面向业务过程 明细粒度?需要哪些维度退化?
DWS 汇总建模 汇总粒度为天/周/月?是否预聚合?
ADS 应用场景定制 报表更新频率?是否需支持导出?
建模方法论:维度建模

业内最主流的数仓建模方法是维度建模(Dimensional Modeling),它将数据模型分为两类表:

事实表:存储业务过程的度量值(如订单金额、订单数量),通常非常“瘦长”——列少行多。事实表的设计关键是确定粒度(一条记录代表什么,如“一笔订单”还是“一笔订单中的一件商品”)。

维度表:描述分析的角度,如时间、地域、商品、用户等。维度表的设计关键是缓慢变化维(SCD)的处理策略——当维度属性发生变化时(如用户从“铜牌会员”升级为“银牌会员”),是覆盖(Type 1)、追加新行(Type 2)还是增加历史属性列(Type 3)。

ETL / ELT 开发

使用DataWorks、Dataphin等平台工具进行可视化ETL/ELT开发。

数据集成任务示例(离线批处理)

  • 通过DataWorks数据集成模块,将RDS MySQL中的数据每日凌晨2点全量同步到MaxCompute ODS层

  • 配置增量同步策略,减少每次同步的数据量

  • 实时同步路径:通过Flink CDC读取MySQL Binlog,写入Kafka,再由Flink SQL消费写入ODS/Paimon

数据加工任务示例

  • ODS → DWD:清洗脏数据(剔除空值订单、去重),数据类型标准化(时间戳统一为“yyyy-MM-dd HH:mm:ss”格式),字段映射(customer_nocust_id

  • DWD → DWS:基于DWD明细表,按“日期 + 类目 + 城市”三维汇总,计算日销售额和日订单量

  • DWS → ADS:从DWS汇总表中提取“近7天Top10城市销售额排行”,写入ADS应用结果表

5.5 步骤四:数据治理与质量保障

在关键ETL任务后配置数据质量监控规则,包括主键唯一性检查、值域范围验证、数据波动率监控等,阻塞问题任务,保障下游数据可信。

日常监控指标:

  • 数据量波动:当日数据量与昨日对比,波动超过一定比例(如±30%)自动告警

  • 空值率:关键字段(如订单金额、用户ID)空值率超过阈值(如5%)自动阻断

  • 任务执行时间:ETL任务执行时间异常增长,需检查是否存在数据倾斜或资源不足

5.6 步骤五:部署上线与运维监控

  • 部署调度系统(DolphinScheduler / Airflow / DataWorks运维中心),配置任务间的依赖关系和重试策略

  • 配置监控告警(Prometheus + Grafana / 云厂商自带监控),覆盖集群资源(CPU/内存/磁盘)、任务状态、数据质量三类指标

  • 建立数据字典和元数据管理,借助数据地图服务自动构建全域数据目录与血缘图谱

  • 提供数据服务接口(API / JDBC / ODBC),供BI工具、算法模型等下游系统消费


六、主流数据仓库产品对比

6.1 OLAP数仓引擎

引擎 查询性能 实时更新 多表Join 运维复杂度 典型场景
ClickHouse ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐ 中等 日志分析、监控
StarRocks ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ 实时BI、湖仓一体
Apache Doris ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ 中小规模报表
Druid ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐ 中等 实时监控大盘

StarRocks在湖仓一体与高并发BI自助分析方面优势明显,适合数据规模巨大、需要跨源联邦查询的大型企业;Apache Doris更适合中小规模业务或需要快速PoC的项目。

6.2 云上数仓方案横向对比

平台 部署模式 核心优势 数据量上限 成本模式
MaxCompute + DataWorks 云托管 阿里生态深度整合,方法论成熟,方便与Flink/Hologres联动 PB级 按量付费 + 包年包月
Snowflake 云托管(多云) 存算完全分离,零运维,数据共享能力突出 PB级 按计算量 + 存储量
Google BigQuery Serverless 自动弹性,按查询量计费,Spark集成好 PB级 按扫描数据量
Databricks 云托管 Lakehouse原生,AI/ML内置 PB级 DBU按使用时长
腾讯云TCHouse 云托管 腾讯生态整合,兼容MySQL协议 PB级 按量计费
本地开源方案 私有化部署 低成本,完全可控,数据不出域 受硬件限制 硬件 + 运维人力

选型决策树

  1. 数据量小于100GB:直接上Apache Doris或StarRocks单机版即可,无需引入Hadoop体系,性价比最高。

  2. 需要深度整合阿里云生态(已使用Flink/DataV/QuickBI等):首选MaxCompute + DataWorks,打通成本最低。

  3. 需要多云部署、数据共享(跨组织协作场景):Snowflake是唯一选择,其数据共享能力无竞品可比。

  4. 有数据科学/ML/AI需求:Databricks + Iceberg的Lakehouse方案最为成熟。

  5. 对成本极其敏感、且团队有自运维能力:Hive on HDFS + 开源调度引擎,几乎是零软件成本。


七、前沿趋势与展望

7.1 Data Agent Ready:面向AI Agent的数据架构

2025年数据库进入AI Ready时代——向量检索、AI函数从新鲜特性变成行业标配;2026年新的趋势正在形成:Data Agent Ready。随着Cursor、Claude Code等编程Agent以及数据分析Agent的普及,数据仓库架构正在从“面向人写SQL”转向“面向AI Agent自主决策”。未来数据平台的终极形态是“Data Agent”:把对话式交互、分析链路、工程任务、Bug定位和修复进行全自动化。

7.2 实时湖仓一体化

新一代Lakehouse架构借助开源技术实现了技术栈的解耦和互通。Apache Iceberg、Paimon等表格式成为数据湖上的事实标准,配合StarRocks、Trino等高性能查询引擎,用户可以在对象存储上获得接近数据仓库的性能体验。

Apache Paimon 是其中的一颗新星,凭借LSM-tree的高效更新机制和changelog生成能力,既能实现流批一体的数据存储,又能支撑实时数仓的分层加工。

7.3 AI与数据仓库深度融合

MaxCompute等平台已全面升级为AI原生高性能数据仓库,支持AI计算和服务。向量化执行引擎、内置ML模型推理、AutoML自动建模等能力,正成为新一代数据仓库的标配能力。在数据架构层面,Metastore正在演进为Data Catalog,再加入数据资产、血缘、搜索等内容变成全量元数据管理平台


八、总结

数据仓库是企业数智化转型的基础设施。构建一个优秀的数据仓库,核心在于:

关键要素 核心要点
分层设计 坚持 ODS → DWD → DWS → ADS 分层原则,每层职责清晰
技术选型 根据数据量、实时性、团队能力合理选择技术栈
数据治理 建立数据质量监控、元数据管理、数据资产体系
持续演进 关注湖仓一体、流批一体、实时数仓、AI融合等前沿趋势

对于初学者,建议从简单的分层架构开始,使用 DataWorks、DolphinScheduler 等成熟的调度工具配合 Hive/Flink 进行计算,逐步深入。在云原生时代,MaxCompute、Snowflake 等云数仓方案也大大降低了企业构建数据仓库的技术门槛。

希望本文能帮助你建立对数据仓库的完整认知。如果觉得有帮助,欢迎点赞收藏,也欢迎在评论区交流讨论!


附录:常见问题 FAQ

Q1:数据仓库和数据湖到底有什么区别?

数据仓库适用于结构化数据,遵循 Schema-on-Write(写时定义模式),查询性能高,适合BI报表;数据湖可以存储结构化、半结构化和非结构化的原始数据,遵循 Schema-on-Read(读时解析模式),灵活性高,适合数据科学和探索性分析。湖仓一体则试图融合两者优势。

Q2:小型初创公司需要建数据仓库吗?

建议从轻量方案入手。数据量不大时,直接用 Apache Doris 或 ClickHouse 单机即可满足分析需求,配合 DataX 做数据同步,Superset 做可视化。等业务规模上来后再逐步演进到完整的分层架构。

Q3:ODS层数据保留多久合适?

通常建议ODS层保留 7~30 天的近期数据,用于支持数据回刷和问题排查。DWD层保留全量历史数据(1年以上),DWS层可根据业务需求设定保留周期(如3个月到1年)。具体保留策略需结合存储成本和业务回溯需求权衡。

Q4:实时数仓和离线数仓可以共存吗?

可以,而且这是当前主流方案。通常在Lambda架构下,离线层(Batch)负责全量历史数据的高精度计算和复杂多维分析,实时层(Speed)负责秒级延迟的增量数据计算。也可以采用Kappa架构,用Flink + Paimon实现流批一体的统一处理。具体选择取决于业务对时效性和一致性的要求权重。

本文写于 2026 年,技术发展日新月异,如有更新以最新官方文档为准。

更多推荐