到底什么是湖仓一体?
本文发表于: &{ new Date(1745337600000).toLocaleDateString() }
随着信息时代的兴起,数据已成为推动业务决策和创新的核心要素;结构化、半结构化等多种类型的数据呈现爆炸式增长,如何高效处理和分析海量数据已经成为关键挑战。当前业界构建数据分析的技术栈,有两条典型的路线,一个是数仓路线,一个是数据湖的路线。
数据仓库的路线,数据先通过 ETL 统一写入到数仓进行管理,然后构建数据集市来满足 BI 分析的各种需求;优势是数据质量高、查询性能高、具备实时分析的能力、数据治理功能完善等。
而数据湖的路线,通常是未经加工的数据先统一存储在数据湖,作为企业数据的 single sourth of truth,然后按需的使用数据,构建数据应用;优势是通开放生态、扩展性强,性价比高。
数据仓库
数据仓库是一种将来自不同源的数据聚合到单个集中式一致数据存储中的系统,以支持企业报表、数据分析、数据挖掘、人工智能和机器学习等应用。数据仓库技术经过几十年的发展,产品架构已经经过了多轮的迭代:
- 早期分析场景比较简单,业务采用 Oracle/MySQL 为代表的关系型数据库,在线处理与数据分析在一套系统里完成;但随着数据分析场景的越来越复杂多样化,这种方案的挑战非常大,一是两种负载会相互影响,同时数据分析的性能也不能满足需求。
- 以 Teradata 、Oracle EDW 为代表的商用数据仓库应运而生,专门针对大规模数据的管理与价值挖掘,这类数仓产品功能强大,但其商业成本太高,导致技术无法普及使用。
- 以 Hadoop( Hive) 为代表的开源数仓,基于开源组件构建大数据平台;Hadoop 生态让大数据变成普惠技术,企业能够低成本的基于开源 Hadoop 生态,构建企业级数仓平台。
- Hadoop 生态使用门槛低,但因为组件繁多,维护代价非常高,随着新技术的发展,Hadoop 生态各组件的技术竞争力也在持续下降,以 Snowflake、Redshift、Bigquery 为代表云原生数仓,帮助企业构建一体化的数据处理与分析平台。
数据湖
数据湖是以原始格式存储数据的存储库或系统,它按原样存储数据,无需事先对数据进行结构化处理。
- 数据湖通常采用 S3 对象存储或 HDFS 分布式文件系统作为底层统一存储,并作为 Single source of truth。
- 数据湖通常采用开放的数据格式,同时满足结构化、半结构化等数据等存储需求,并 ACID、Upsert、Time travle 等高级特性,满足企业数据管理方面的各种诉求。
- 业界常见的数据湖包括 Apache Iceberg、Apache Hudi、Delta、Apache Paimon 等,业务采用 Trino、Presto、Impala 等引擎按需分析数据湖上的数据。
湖仓融合
未来数据架构应该是建仓,还是建湖?用户之所以有现在的纠结,是因为数据仓库和数据湖各有优劣,如果能将优势兼具,用户也不必关注到底是湖还是仓。目前在业界,企业正在不断探索湖仓融合的路径。
- 湖上建仓:用户的数据先进入到数据湖统一存储,湖上直接性能不足,此时可以采用湖上建仓的方案,将查询性能要求高的部分通过 ETL 导入到新的数据仓库提供服务。
- 仓外挂湖:部分数据仓库产品,例如 Redshift、Bigquery等,开始扩展查询外部数据湖(Hive、Iceberg 等)的能力,实现计算层的统一。
不管是湖上建仓、还是仓外挂湖的方案,本质上数据都是分开存储,可能还会通过不同的引擎服务不同场景的查询,更好的方案是实现湖仓一体化,让数据分析的架构更加简单。那到底什么是湖仓一体?
湖仓一体
湖仓一体是通过一套架构,满足所有的分析需求,抽象化的描述,要能实现 One Data、All Analytics 的业务价值。
- 统一数据存储:在湖仓一体架构下,数据要统一存储管理,一份数据作为 Single source of truth,避免导来导去,造成数据冗余,分析口径不一致等问题;存储层通常采用 S3/HDFS 作为数据存储底层,并采用开放数据湖 或者 私有的数据格式去管理数据。
- 极速查询引擎:基于统一的数据存储,湖仓一体架构要能满足所有的业务分析场景的诉求,包括 BI 报表、交互式分析、实时分析、ETL 数据加工等场景,这就要求必须要有一个足够强大的分析引擎,能同时满足这些场景的查询需求。
- 按需查询加速:对于部分业务场景特别复杂的查询,数据源数据组织未针对分析优化,直接分析不一定能满足查询延时的需求,湖仓一体架构要具备通用的数据查询加速的能力,并且不破坏 Single source of truth 的原则。
StarRocks 3.x 版本推出了存算分离、湖仓分析、物化视图等重量级特性,能够很好的帮助企业基于 StarRocks 构建湖仓一体平台,微信、携程、小红书等数十家大型企业已经进行了实践,极大的简化数据平台的技术栈,同时提升的服务性能。如何基于 StarRocks 构建湖仓一体平台?

用户可以将 StarRocks 当作一站式湖仓,数据统一导入到 StarRocks,借助 StarRocks 存算分离的架构,实现低成本的数据存储,然后利用 StarRocks 查询引擎来服务全场景的数据分析应用;如果用户的数据已经在开放在开放数据湖(Hive、Hudi、Iceberg、Paimon),则可以通过 StarRocks 直接分析数据湖,同样能获得极高的查询性能。不管数据统一存储在 StarRocks 里还是开放数据湖里,当查询性能不足时,可以利用 StarRocks 的物化视图加速查询性能。基于此,用户可以方便的基于 StarRocks 构建湖仓一体平台,实现 One Data、All Analytics 的业务价值。