理解湖仓一体(Lakehouse)
很多人第一次听到“湖仓一体”,会先把它理解成一句市场概念:既有数据湖的灵活性,又有数据仓库的分析能力。这句话本身没有错,而且放在今天的市场环境里,客户对这一层价值主张其实已经基本接受了。对多数企业来说,Lakehouse 的吸引力已经很明确:希望同时拿到数据湖的低成本、可扩展,也希望拿到数据仓库的可靠性、性能和治理能力,不想再长期维护“湖 + 仓”两套割裂系统。
也就是说,很多客户现在讨论的重点,已经不是“Lakehouse 要不要做”,而是选哪家、怎么落地、怎么和自己现有数据栈衔接。但这里也有几层很常见的认知惯性:有人会把 Lakehouse 理解成“数据湖升级版”或“换一个存储格式”,低估它对治理体系和协作方式的改造要求;也有人会把 Lakehouse 直接等同于某个厂商产品,而忽略开放表格式和开放生态本身的长期价值。
这篇文档更关注的是:
在云器 Lakehouse 里,所谓”湖仓一体”到底是怎么实现的?湖里的数据怎么进入平台、怎么被管理、怎么被仓的引擎分析、怎么继续流向数仓分层、BI、AI 和 Agent?
只有把这条链路讲清楚,Lakehouse 才不是一个抽象名词,而是一套可以落地的数据工作方式。
理解云器 Lakehouse,还有一个前提不能忽略
如果只把 Lakehouse 理解成“底层支持 Iceberg”,很容易忽略它在对象模型、工程工作流和平台边界上的实现差异。
对云器 Lakehouse 来说,有一个前提非常重要:
云器 Lakehouse 从 Day 1 就是基于 Iceberg 构建的。
这和很多“先有仓、再补 Iceberg 兼容”的路径并不一样。它意味着:
- Iceberg 不是后加适配层,而是平台底座的一部分
- Iceberg 表不是外围对象,而是核心对象体系的一部分
- 围绕 Iceberg 表展开的 SQL、增量计算、治理、同步、AI 消费,都是在同一条主链路里演进出来的
同时,云器也是 Apache Iceberg C++ 版本的核心贡献者。这说明:
- 云器不是把 Iceberg 当成一个可替换的外部依赖在用
- 而是深度参与了底层开放格式生态本身的建设
这也是为什么云器 Lakehouse 对开放 Iceberg 表对象的支持,不是外围兼容能力,而是底座能力建设的一部分。
所以在理解云器 Lakehouse 时,除了把它看成一套完整的 Lakehouse 产品,也可以把它放到开放格式和开放生态的演进路径里一起看。
为什么“基于 Iceberg 构建”与“支持 Iceberg”不是一回事
这两个说法看上去很像,但落到产品实现上,差别很大。
“支持 Iceberg”通常意味着:平台原本有自己更中心的一套表对象或存储体系,后来增加了对 Iceberg 表的读取、写入或兼容能力。Iceberg 在这种架构里可以很重要,但它仍然更像一个被接入、被适配、被兼容的对象类型。
“基于 Iceberg 构建”则意味着另一件事:Iceberg 不是外围兼容层,而是平台底座的一部分。表对象、元数据管理、增量计算、数据新鲜度、外部目录接入、数仓分层加工、查询分析和后续 BI / AI 消费,都是围绕这类开放 Iceberg 表对象往前展开的。
对云器 Lakehouse 来说,这个差别的实际意义在于:
- Iceberg 不是后补支持项,而是核心生产表体系的一部分
- Iceberg 表不是平台外围对象,而是主链路对象
- External Catalog、Volume、Dynamic Table、Studio 数据同步任务、Pipe 这些能力,不是各自孤立存在,而是围绕同一套数据底座和数据流转链路衔接起来
- 长期价值不只体现在“现在能不能查 Iceberg”,也体现在平台是否从一开始就沿着开放格式和开放生态来建设
先抓住核心:Lakehouse 不是“湖旁边再放一个仓”
很多传统架构的问题,不是没有湖,也不是没有仓,而是湖和仓之间隔着很多层:
- 原始文件在对象存储里
- Iceberg 表在外部目录里
- 数仓表在另一个系统里
- 同步任务在外围工具里
- 开发调度在另一套工作台里
- BI、语义层、AI 检索又各自围绕不同副本工作
这时“湖”和“仓”虽然都在,但数据真正流起来时,往往要跨多套系统:
- 数据先进入对象存储或外部系统
- 通过同步工具复制进数仓
- 再通过调度系统做分层加工
- 再提供给 BI、应用或 AI
问题不在于某一个环节做不到,而在于:
- 数据副本多
- 元数据分散
- 权限边界不统一
- 接入、开发、调度、治理、消费不在一条链路里
云器 Lakehouse 的实现重点,不是把”湖能力”和”仓能力”并排摆出来,而是把这些原本分散的对象重新组织到一套统一底座里。
云器 Lakehouse 的“一体”,首先体现在哪些对象上
在云器 Lakehouse 里,最先要抓住的不是某一个菜单,而是几个核心对象:
WorkspaceSchemaLakehouse Iceberg TableVolumeExternal CatalogVCluster
这几个对象合在一起,才构成“湖仓一体”的基础。
Workspace:不是附属概念,而是平台边界
在云器 Lakehouse 里,
Workspace 不是一个轻量文件夹概念,而是整个平台最重要的边界之一。
它同时承担两层职责:
-
Lakehouse 层的数据对象边界
三层命名是workspace.schema.table -
Studio 层的开发协作边界
工作空间之下承载用户、角色、VCluster、任务调度、数据集成、运维监控等开发与治理能力
这意味着在云器 Lakehouse 里,“数据放在哪”“谁在这个边界里开发、调度、治理”并不是两套分离的问题,而是围绕同一个
Workspace 组织起来的。
这和很多平台只把
database / catalog 作为一层命名空间来用是不同的,Workspace 在这里同时承担了表命名空间和开发协作边界两重身份。Workspace 在这里是更重的概念。
Iceberg 表:湖和仓围绕核心生产表体系工作
云器 Lakehouse 的核心生产表体系建立在
Iceberg 表 之上。
这点很重要,因为它决定了“湖里的数据”和“仓里的分析对象”不需要天然分裂成两套主体系。
这类表同时具备几层能力:
- 以开放 Iceberg 表格式组织数据
- 可以被标准 SQL 直接分析
- 具备 MVCC、多版本管理、Time Travel 等仓侧常见能力
- 可以作为 Dynamic Table、物化视图、BI、AI 检索和 Agent 的上游或下游对象
也就是说,在传统架构里你可能会区分:
- 湖里的文件
- 外部目录中的 Iceberg 表
- 仓里的分析表
在云器 Lakehouse 里,这些对象不再天然分裂成两套主体系,而是尽量围绕
Iceberg 表 这一核心生产表体系收拢。
换句话说,
Iceberg 表 主要解决的是:数据一旦进入平台主链路,后续怎样被持续加工、分析、治理和消费。
Volume:承接文件入口,而不是替代表对象体系
Volume 是云器 Lakehouse 访问文件的入口。
它不是一个边角功能,而是湖能力进入平台对象模型的重要入口。因为很多数据栈里的“湖”,并不是先表现为表,而是先表现为:
- OSS / S3 / COS 上的文件
- 原始日志
- CSV / JSON / Parquet 文件
- 文档和半结构化数据
云器 Lakehouse 通过
Volume 把这部分文件对象纳入平台:
:挂载用户自有对象存储,数据留在原位External Volume
:平台托管的内部存储Managed Volume
:用户文件空间User Volume
:每张表关联的文件空间Table Volume
这意味着“湖里的文件”不是只存在于平台之外。它们可以先通过
Volume 被管理,再进入后续 SQL、导入、加工和分析链路。
更重要的是,
Volume 和表不是彼此断开的两套世界,但两者负责的对象并不一样:
负责文件入口和文件访问Volume
负责结构化数据的持续加工和分析Iceberg 表- 两者通过
、Pipe、导入链路相连COPY INTO
这就是“湖”的一端是怎样被拉进平台底座的。
这里要和
External Catalog 区分开来看:文件对象通常通过 Volume 进入平台;已经成型的外部目录,以及其中管理的 Iceberg 表,通常通过 External Catalog 接入平台。
换句话说,
Volume 主要解决的是:文件怎么进入平台主链路。
External Catalog:接的是外部目录中的 Iceberg 表,不是文件入口
很多团队已经有自己的 Iceberg 表目录体系,比如:
- Hive Metastore
- Databricks Unity Catalog
- Iceberg REST Catalog
- Snowflake Open Catalog
如果每次都要求“先全部迁入再使用”,Lakehouse 就很难成为现实迁移路径。
云器 Lakehouse 通过
External Catalog 解决的是这个问题:
- 外部数据保留在原系统中
- 云器 Lakehouse 读取外部目录中的元数据,以及查询所需的数据文件
- 用户可以通过标准 SQL 直接查询外部目录中的表
它的意义不只在于“联邦查询”,还在于:
先把现有目录体系和查询路径接进来,再决定哪些链路要逐步迁入云器 Lakehouse。
所以从实现上看,
External Catalog 是云器 Lakehouse 让“平台外已有的 Iceberg 表体系”和“平台内的 SQL 分析与后续加工链路”接起来的重要机制之一。
换句话说,
External Catalog 主要解决的是:已经存在于外部系统中的表体系,怎么先接住、先查起来、再逐步决定是否迁入平台主链路。
湖里的数据,如何流向仓的分析链路
理解 Lakehouse,最重要的一条主线就是:数据怎么流动。
在云器 Lakehouse 里,这条流动路径通常有几种典型方式。
路径一:文件先进入 Volume,再进入 Iceberg 表
这是最典型的“从文件湖进入仓式分析”的路径。
链路是这样的:
- 原始文件保留在对象存储里
- 通过
或其他 Volume 方式纳入平台访问范围External Volume - 通过
或相关导入路径写入COPY INTOIceberg 表 - 之后用标准 SQL、Dynamic Table、Studio 任务做后续加工
这条路径的关键不是“导入文件”本身,而是导入之后,数据已经进入了统一表对象体系。之后的加工、调度、权限、AI 都围绕同一类表继续进行。
路径二:通过同步任务和 Pipe 把数据持续带进来
现实里大量数据不是一次性导入,而是持续到达。
云器 Lakehouse 为这件事提供的平台级能力,不是外围补丁,而是主干能力:
- Studio 数据集成
- 离线同步任务
- 实时同步任务
- 多表实时同步
- Pipe
这里也要把几类能力的边界分开看:
主要承接数据库、SaaS、文件等来源的持续接入Studio 数据同步任务
主要处理批量、定时、周期性进入的数据离线同步任务
主要处理 CDC 持续入湖实时同步任务 / 多表实时同步
主要承接 Kafka 或对象存储这类持续数据入口Pipe
这意味着:
- 关系型数据库的离线或 CDC 入湖,不必完全依赖外围同步工具
- 批量同步、实时同步、Pipe 入口都在同一工作空间和 Studio 体系里管理
- 数据进入之后,可以直接流向后续开发、调度、治理和消费链路
这点对“湖仓一体”很重要。因为如果同步任务仍然完全在平台外,Lakehouse 接住的更多只是存储和查询,还没有把数据流真正纳入平台主线。
如果继续往下看增量链路,还需要把
Table Stream 放进来理解:同步任务和 Pipe 负责把数据持续带进表,Table Stream 负责把表的变化继续传给下游增量加工对象。
路径三:不先搬数据,先查外部目录中的 Iceberg 表
当数据已经在别的外部目录体系里时,可以先走
External Catalog:
- 把外部目录接入云器 Lakehouse
- 通过标准 SQL 查询外部目录中的 Iceberg 表
- 与本地
做关联分析Iceberg 表 - 再决定是否将结果沉淀回本地表
这条路径最像“先把平台内的 SQL 分析能力作用到平台外已有的表体系上”。
它说明云器 Lakehouse 并不是要求所有数据先搬成内部表,才能开始分析;它允许先在统一 SQL 层面把外部目录中的 Iceberg 表与本地表一起纳入分析。
仓的引擎,怎么分析湖的数据
Lakehouse 最容易被说空的地方,往往就在这里。
如果只是说“支持 Iceberg”,并没有回答“分析是怎么发生的”。
在云器 Lakehouse 里,更准确的说法是:
云器 Lakehouse 把 SQL 分析、持续加工和治理能力建立在统一表对象和统一元数据之上,使进入平台主链路的数据可以直接进入标准 SQL、数仓分层和 BI 分析链路。
具体体现为几件事:
1. 用标准 SQL 直接分析 Iceberg 表
一旦数据进入
Iceberg 表,后续不需要再切到另一套“专门给仓使用的表模型”。
可以直接:
- 查询明细
- 做 JOIN、聚合、窗口计算
- 继续分层建模
- 为 BI 提供查询对象
- 作为 Dynamic Table 的上游
也就是说,进入平台主链路的 Iceberg 表不是“只能存,不能好用地分析”;SQL 分析和后续分层加工可以直接作用于这些表对象。
2. 用 MVCC 和 Time Travel 保持仓侧常见的数据管理能力
传统数据仓库之所以适合分析,不只因为能跑 SQL,也因为它通常有更稳定的数据管理语义。
云器 Lakehouse 在这一类开放 Iceberg 表之上保留了这类能力:
- MVCC 多版本并发控制
- Time Travel 历史版本查询
- UNDROP / RESTORE 等恢复能力
这意味着:
- Iceberg 表不只是“文件集合”
- 它同时具备更接近仓侧的数据可管理性
这一点决定了 Lakehouse 不只是“能查湖里的数据”,也能把湖里的数据作为正式生产分析对象来使用。
3. 用 Dynamic Table 把分析型加工持续化
当数据进入表之后,下一步通常不是手工跑一遍 SQL,而是持续生成下游分层结果。
云器 Lakehouse 这里的关键对象是
Dynamic Table。
它的意义不是一个“会自动刷新”的便利功能,而是:
- 用标准 SQL 定义下游表
- 系统基于增量计算模型持续刷新
- 下游结果仍然是正式表对象,可以继续被查询、联接、消费
这就把“湖里的明细数据”到“仓里的分层结果”这条链路统一了。
在很多传统架构里,这条路可能需要:
- 外部同步工具
- 外部调度系统
- 单独流计算引擎
- 独立数仓加工层
在云器 Lakehouse 里,这条路尽量收敛到:
- 数据同步任务 / Pipe
- Iceberg 表
- Table Stream
- Dynamic Table
- Studio 调度与治理
Dynamic Table 在湖仓一体里的角色,不止于“自动刷新”
这一点如果写轻了,整篇文档就会重新退回概念层。
如果只把 Dynamic Table 理解成“定时刷新表”,就低估了它在 Lakehouse 里的角色。
它承接的是:
- 让湖里的数据进入稳定的分层加工链路
- 让标准 SQL 能覆盖更多以往需要流处理或复杂增量管道的场景
- 让数据新鲜度成为可以被声明和管理的目标
它背后的关键实现是 GIC(Generic Incremental Computation):
- 把 SQL 查询分解为算子级增量计划
- 每个算子处理自己的 Delta
- 基于数据统计和代价选择增量或全量计划
- 保证结果与全量重算语义一致
这意味着云器 Lakehouse 不是“先把数据落湖,再靠另一套引擎做持续加工”,而是直接在 Lakehouse 表体系上把持续加工能力做进去。
在云器 Lakehouse 里,理解 Lakehouse 也需要把
Dynamic Table、GIC 和数据新鲜度一起放进来。
Studio 为什么也是湖仓一体的一部分
很多人会把 Lakehouse 只理解成底层存储和 SQL 引擎。
这还不够。
如果:
- 数据对象在 Lakehouse
- 但同步在外面
- 开发在外面
- 调度在外面
- 运维在外面
那它依然不是完整的一体化平台。
云器 Lakehouse 的做法是把
Studio 放进这条主线里:
- 数据集成
- 任务开发
- 调度依赖
- 运行监控
- 补数
- 质量治理
这意味着 Lakehouse 不只是“一个存储和查询底座”,也和数据工程工作流直接连起来。
在云器 Lakehouse 里,“湖仓一体”不只体现为数据格式层的一体,也包括:
数据对象、同步链路、开发调度、治理运维的一体。
Lakehouse 落地时,治理与权限为什么总会被先问到
很多团队并不质疑 Lakehouse 的方向,真正让项目推进变慢的,往往是另一个更现实的问题:当文件、表、同步任务、开发任务和外部目录逐步收敛到同一平台之后,权限边界要怎么继续保持清楚。
这类顾虑非常具体:
- 原来分散在不同系统里的授权关系,迁到同一平台后怎么管理
- 外部目录中的表、本地
、同步任务和开发任务,是否会互相放大访问范围Iceberg 表 - 不同团队共用同一平台时,谁能看、谁能改、谁能发布,边界怎么划分
- 统一之后,审计、恢复、数据保护是不是也要一起跟上
所以对 Lakehouse 来说,治理与权限不是上线之后再补的附属工作,而是和对象模型、数据流转路径一起出现的基础能力。
云器 Lakehouse 的权限边界,先从 Workspace 开始
从产品对象上看,
Workspace 本身就是第一层边界。
在 基本概念 和 Studio 对象关系与生命周期 里,
Workspace 不只是 SQL 命名空间,也承载 Studio 层的开发环境隔离,包括用户、角色、VCluster、Studio 任务调度等能力。也就是说,数据对象放在哪个工作空间、谁在这个工作空间里开发和运维、哪些任务在这里发布和运行,天然就在同一个边界里被组织起来。
这件事的价值很直接。很多团队原来需要分别在数据库、调度平台、同步工具和分析平台里理解权限;到了云器 Lakehouse 里,数据对象边界和开发协作边界是对齐的,治理不再只是事后把几套系统硬拼起来。
访问控制不是单点功能,而是一套完整体系
从权限机制上看,云器 Lakehouse 支持两种访问控制模型:
- ACL:直接把权限授予用户
- RBAC:先把权限授予角色,再把角色授予用户
官方文档明确更推荐 RBAC,因为当团队规模扩大、对象变多之后,角色会比逐个用户直授更容易维护。与此同时,平台也没有可以绕过鉴权的超级用户概念,所有访问都需要显式授权,这一点对生产环境很重要。
这套权限体系并不只覆盖单一表对象。按照权限文档的定义,工作空间、Schema、表、视图、Dynamic Table、Volume、Virtual Cluster 等元数据对象都可以成为权限边界;Studio 中的任务、脚本、任务组、数据源、数据质量等开发运维对象,也有对应的角色能力和操作边界。换句话说,云器 Lakehouse 不是只把“查表权限”统一起来,而是把“数据对象权限”和“开发对象权限”一起纳入平台治理范围。
为什么这会降低 Lakehouse 的治理阻力
当权限边界和对象边界对齐之后,Lakehouse 的很多治理问题会变得更容易讲清楚。
第一,平台内对象和外部接入对象不再需要分别建立完全不同的管理心智。
External Catalog 接入的外部目录表、通过 Volume 进入的文件、通过同步任务进入的平台内表,最终都围绕工作空间和平台对象体系来组织访问路径。
第二,数据开发、任务调度和运行运维不再漂在数据对象之外。谁能建任务、谁能提交、谁能运行、谁能使用 VCluster、谁能管理数据源,这些都可以通过内置工作空间角色或自定义授权体系来约束,而不是等任务上线后再用外围制度补救。
第三,统一平台并不意味着放松控制。除了 RBAC 和细粒度
GRANT / REVOKE,云器 Lakehouse 还把身份认证、网络隔离、数据保护和恢复能力放在同一套安全体系里,包括 MFA、SSO、IP 白名单、Private Link、私有存储 BYOS、动态脱敏、存储加密、Time Travel、RESTORE TABLE 和 UNDROP TABLE。这意味着企业在把更多链路迁入 Lakehouse 时,不需要额外再搭一套和平台脱节的安全底座。
第四,治理不只是“防越权”,也包括“出了问题能不能追”。安全与合规文档里把操作日志、作业历史、恢复能力一起纳入审计与追踪范畴。对于统一平台来说,这意味着当同步、开发、查询和消费都收敛到一处时,问题排查也有统一的观察面。
为什么这会影响 Lakehouse 是否能进入生产主线
很多团队最终决定是否把生产链路迁入 Lakehouse,看重的不只是查询性能或存储格式,也包括统一之后能否继续保持可控。
如果统一意味着权限关系更难解释、团队边界更难划分、任务与数据对象之间的责任更难追踪,那么平台即使技术能力完整,也很难承接真正的生产主线。相应地,如果
Workspace 边界、角色体系、对象授权、安全能力和审计恢复能力能够一起工作,Lakehouse 才更像一套可以长期运行的企业数据平台,而不只是一个把数据放到一起的新底座。
Lakehouse 为什么又会自然延伸到 AI
当湖和仓已经围绕同一套表对象、元数据和开发工作流组织起来之后,AI 自然就不应该再外挂成另一套孤立系统。
云器 Lakehouse 在这一层继续往前走:
Semantic ViewAI GatewayAI FunctionsAnalytics AgentData Engineering AgentMCP Server
这不是偏题,而是 Lakehouse 在现代数据栈里的自然延伸。
因为一旦:
- BI 用一份数据
- 数仓加工用一份数据
- AI 检索和 Agent 也围绕同一份数据上下文工作
数据平台才真正从“存储和分析平台”变成“统一的数据工作平台”。
云器 Lakehouse 在做什么
如果把前面这些能力收在一起看,云器 Lakehouse 做的并不是单独提供一个查询引擎、一个数据湖接入层,或者一套孤立的 Studio 工具,而是尽量把企业数据平台里原本分散的几类核心工作放进同一套系统里:
- 用
组织数据对象、文件对象、外部目录对象和计算资源Workspace / Schema / Table / Volume / External Catalog / VCluster - 用
、Studio 数据集成、离线同步、实时同步、多表实时同步、COPY INTO
把文件、数据库、消息流和对象存储中的数据持续接入平台Pipe - 用标准 SQL、
、Table Stream
、Studio 任务开发与调度,把明细数据加工成可以持续更新的数仓分层结果Dynamic Table - 用统一的权限体系、安全能力、审计与恢复能力,把数据对象和开发对象放在同一套治理边界里
- 用 JDBC、MySQL 协议、Python / Java SDK、ZettaPark、dbt、Spark、BI 工具和外部 AI 框架,把平台能力接到企业现有技术栈里
- 在这套数据底座之上继续提供
、Semantic View
、AI Gateway
、AI Functions
、Analytics Agent
、Data Engineering Agent
这些 AI 能力MCP Server
换句话说,云器 Lakehouse 试图收拢的不是某一个技术点,而是一整条数据工作主线:数据从哪里来,如何进入平台,怎样被持续加工,怎样被权限和审计约束,怎样被 BI、应用、分析人员和 Agent 继续使用。
这也是为什么它既不是“只有湖”,也不是“只有仓”,更不是把两套系统简单并排放在一起。它更接近一套统一的数据工作平台:原始文件、外部目录中的 Iceberg 表、平台内表、同步链路、数仓加工、开发调度、治理运维、生态接入和 AI 消费,尽量围绕同一套对象模型和同一条平台链路协同工作。
当企业建设数据平台时,通常会连续遇到这样几类问题:
- 已有数据湖、数据库和消息流,怎样低成本接进来
- 接进来的数据,怎样用 SQL 和增量机制稳定加工
- 加工后的数据,怎样在同一平台里被治理、被共享、被分析
- 现有 BI、dbt、Spark、Python 和 AI 工具,怎样继续复用
- 当企业开始把 AI 和 Agent 引入生产流程时,怎样让它们直接工作在同一份数据和同一套权限边界之上
这就是“湖仓一体”在云器 Lakehouse 里的具体含义,也是这套产品相对于只解决单一环节的平台,更完整的地方。
