你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:
- 了解大厂经验
- 拥有和大厂相匹配的技术等
希望看什么,评论或者私信告诉我!
一、背景
随着 Iceberg、Paimon等技术的快速普及,数据湖仓一体架构也映入眼帘。
但究竟什么是湖仓一体,为什么需要湖仓一体,似乎并没有广泛的提及。
工业界主要的目标是解决实际问题,湖仓一体的口号也就分享的时候喊喊,学术界已经共识了,但奈何发声的人偏少。
为了让更多的人更好的了解湖仓一体,有了本篇文档!
二、OLAP 数据库以及其限制
OLAP 全称为 Online Transaction Processing ,在线事务处理。
Online Transaction Processing(在线事务处理,简称OLTP)数据库主要用于处理日常业务操作中的事务,例如订单处理、库存管理、客户信息更新等,常见的比如:Mysql、Oracle 等。
OLAP database 明显的优势对事务处理上速度很快,但在复杂分析上却很容易遇到瓶颈,所以随着数据量增长,就需要更专业的解决方案。
三、Data Warehouses 和 OLAP Systems 出现
这里的 Data Warehouses 是指第一代数仓,即通过采用Oracle、DB2、Sybase IQ等关系型数据库作为存储核心,支持结构化数据的建模和查询。
专门针对查询和分析而设计的,处理GB级结构化数据,能够为分析型查询提供更优的性能表现。它们为数据提供了一个结构化的环境,在这里,数据可以被清洗、转换,并且存储起来,以便于用于商业智能。
数据同步常常在夜间运行,无法支持实时分析,另外也常常是本地存储,导致存储与计算耦合导致扩展性差,无法应对数据量增长;缺乏对非结构化数据的支持,且实时性不足
这期间建模理论也在不断地完善,比如维度建模

四、基于 Hive 的 Data WareHoure
伴随着 Google 的三篇论文问世,Hadoop等分布式技术的蓬勃发展,这也是大家所熟知的数仓。
-
数据集市优先 针对部门级需求快速构建独立数据集市,降低实施复杂性和周期。例如,市场部门可单独建立用户行为分析数据集市,无需等待企业级模型完成
-
维度建模方法 采用星型模型或雪花模型组织数据,以事实表为中心连接维度表。例如,销售事实表关联产品、客户、时间等维度表,支持高效的联机分析处理(OLAP)
-
维度标准化 通过一致性维度(Conformed Dimension)实现跨数据集市的整合。例如,不同部门的"客户"维度需统一编码和属性定义,避免数据孤岛
-
数据冗余与性能优化 允许适当的数据冗余(如预计算汇总指标)以提升查询效率,但需权衡存储成本与查询性能
随着互联网、物联网和社交媒体的发展,企业产生的数据量呈指数级增长,传统数据仓库的存储和处理能力逐渐难以满足需求( 基于MR,计算效率低,通常小时级 )。 另外企业需要处理的数据类型越来越丰富,包括结构化、半结构化和非结构化数据。Hive 在处理非结构化数据时存在局限性。

五、MPP架构和其他计算引擎( 严格来说是计算引擎方面的 )
为了解决大数据量 Hive 分析效率低的问题,一些基于 MPP 架构的OLAP出现了,比如 Doris、ClickHourse
还有计算引擎,比如: Presto、Spark、Storm
六、数据湖
数据湖用来存储半结构化和非结构化的数据。 数据湖并不是一个单一的技术产品,而是一个包含多种技术和组件的架构体系
数据湖(Data Lake)是一种存储大量原始数据的系统,它允许以各种格式(如结构化、半结构化和非结构化数据)存储数据。以下是数据湖的主要特点:
- 存储大量数据:数据湖可以存储海量的数据,无论是来自企业内部的业务系统,还是外部的传感器、日志、社交媒体等来源。
- 原始数据存储:数据湖中的数据通常是未经加工的原始数据,保留了数据的完整性和原始格式。这意味着数据在存储时不需要预先定义好结构或进行复杂的转换。
- 灵活性和多样性:数据湖可以存储各种类型的数据,包括结构化数据(如数据库中的表格数据)、半结构化数据(如JSON、XML文件)和 非结构化数据(如文本、图片、音频、视频等)。
- 成本效益:数据湖通常基于分布式存储技术(如Hadoop、云存储等),能够以较低的成本存储大量数据。
数据湖的分析挑战 虽然数据湖可以存储大量数据,但直接在数据湖中进行数据分析存在以下问题:
- 数据格式复杂:数据湖中的数据格式多样,可能包括文本文件、JSON、XML、二进制文件等,这使得数据的读取和处理变得复杂。
- 缺乏优化结构 :数据湖没有像数据仓库那样经过优化的存储结构(如索引、分区等),导致查询速度较慢。
- 处理能力不足:直接在数据湖中进行复杂的数据分析需要大量的计算资源,因为数据需要在查询时进行实时处理和转换。
总之,数据湖存储了大量未经加工的原始数据,格式多样且缺乏统一的结构。直接在数据湖中进行分析需要进行大量的数据预处理工作,如数据清洗、格式转换等,这使得分析过程变得繁琐和耗时
七、数据湖表格式
数据湖表格式的作用 为了解决数据湖在分析方面的复杂性,数据湖表格式(Data Lake Table Formats)应运而生。这些表格式是专门为数据湖设计的存储格式 ,旨在优化数据的存储和查询性能。常见的数据湖表格式包括Apache Iceberg、Apache Hudi、Apache Paimon等。
以下是数据湖表格式的主要作用:
- 优化存储结构:
列式存储 :许多数据湖表格式(如Parquet和ORC)采用列式存储,这意味着数据按列存储而不是按行存储。这种存储方式可以显著提高查询性能,因为查询时只需要读取相关的列,而不是整个数据行。 数据压缩 :这些表格式通常支持高效的数据压缩,可以减少存储空间的占用,同时提高数据读取速度。 数据分区:数据湖表格式支持数据分区,可以根据时间、地区或其他维度对数据进行分区,从而加快查询速度。
-
简化数据处理: 预处理数据 :数据湖表格式允许在数据写入时进行预处理,例如数据清洗、转换和格式化。这样可以减少查询时的实时处理需求,提高查询效率。 支持ACID事务:一些数据湖表格式(如Delta Lake)支持ACID事务,确保数据的一致性和完整性,这对于需要频繁更新和删除数据的场景非常有用。
-
提高查询性能:
优化的查询引擎 :数据湖表格式通常与高性能的查询引擎(如Apache Spark、Presto等)集成,这些引擎可以利用表格式的优化结构,快速执行复杂的查询。 索引和元数据管理:表格式支持索引和元数据管理,可以快速定位和访问数据,进一步提高查询性能。
-
数据湖表格式与数据湖的关系 数据湖表格式并不是简单地"解决"数据湖的复杂性,而是通过优化数据的存储和处理方式,使数据湖更适合进行分析。数据湖表格式可以看作是数据湖的"中间层",它在数据湖的原始数据和数据分析工具之间架起了一座桥梁,使得数据湖中的数据能够更高效地被分析工具使用。
-
总结 数据湖 :是一个存储大量原始数据的系统,适合存储各种格式的数据,但直接进行分析时存在复杂性和性能问题。 数据湖表格式 :通过优化存储结构、简化数据处理和提高查询性能,使数据湖更适合进行分析。 关系:数据湖表格式是数据湖的补充,而不是替代。它通过优化数据的存储和处理,使得数据湖能够更好地支持数据分析。
Data Lakehouse 数据湖仓
数据湖表格式(如 Delta Lake、Apache Iceberg 和 Apache Hudi)与数据湖仓(Lakehouse)存在紧密的联系,同时也有一些区别,以下是具体介绍:
-
联系 共同目标 :两者都致力于解决传统数据管理和分析架构中的痛点,如数据湖的管理混乱和数据仓库的灵活性不足等问题,旨在为企业提供更高效、灵活且可靠的数据存储与分析解决方案。 技术基础 :数据湖表格式是数据湖仓的重要技术支撑。数据湖仓通常会采用这些表格式来组织和管理数据,利用它们提供的事务性、ACID特性、数据版本控制等功能,提升数据湖的可靠性和可管理性,从而更好地实现数据湖仓的架构目标。 数据存储 :它们都基于分布式存储系统,如 HDFS 或云对象存储,能够以低成本、高扩展性的方式存储海量数据,支持多样化的数据类型,包括结构化、半结构化和非结构化数据。 生态兼容性:数据湖表格式和数据湖仓都强调开放性和生态兼容性,能够与多种计算引擎(如 Spark、Flink、Presto 等)无缝对接,支持不同的数据处理和分析场景,方便用户根据需求选择合适的工具和技术。
-
区别 -- 概念层面 : 数据湖表格式 :是一种用于数据湖的存储格式和数据管理技术,主要关注如何在数据湖中高效地组织、存储和管理数据,为数据湖提供类似数据库的表结构和事务性操作能力,是数据湖向数据湖仓演进过程中的关键技术之一。 数据湖仓 :是一种融合了数据湖和数据仓库 优势的新型数据架构 ,它不仅包含了数据湖的存储能力和灵活性,还具备数据仓库的高性能分析、数据管理和治理能力,是一个完整的数据管理和分析平台,能够支持从数据存储到数据分析的全流程操作。 -- 功能特性 : 数据湖表格式 :主要提供数据的事务性支持(如 ACID)、数据版本控制、时间旅行(查询历史版本数据)、分区管理等功能,这些功能使得数据湖中的数据操作更加可靠和灵活,但其本身并不具备数据仓库的复杂查询优化、多维分析、数据建模等高级分析功能。 数据湖仓 :除了具备数据湖表格式的功能外,还支持高性能的 SQL 查询、复杂的分析模型、数据仓库的多维分析(如 OLAP)、数据治理(如数据质量、数据安全、数据生命周期管理等)以及与传统数据仓库类似的报表和分析应用支持等功能,能够满足企业更广泛的业务需求。 -- 架构层次 : 数据湖表格式 :主要处于数据存储层,是对数据湖存储格式的改进和增强,是数据湖仓架构中的一个组成部分,为数据湖仓提供了底层的数据存储和管理基础。 数据湖仓 :是一个完整的架构体系,包括存储层、计算层、管理层等多个层次,涵盖了数据的存储、计算、管理、分析等多个环节,是一个综合性的数据平台,能够实现数据在不同层次之间的高效流动和协同工作。 -- 应用场景 : 数据湖表格式 :适用于需要在数据湖中进行高效数据管理和事务性操作的场景,如数据的实时更新、历史版本追溯、大规模数据的分区存储等,主要用于提升数据湖的可靠性和可维护性,为数据湖的应用开发提供更好的支持。 数据湖仓:适用于企业级的综合数据分析场景,包括实时监控、复杂数据分析、机器学习、商业智能、数据仓库替代等,能够满足企业对数据存储、管理和分析的全方位需求,支持从数据的原始存储到最终的业务洞察的全过程。
总之数据湖仓是在数据湖表格式的基础上建立起来的

八、上云
将数据仓库和数据湖迁移到云端是一个重大的进步。云部署提供了存储和计算资源的解耦。
将它们迁移到云端,意味着将这些数据存储和处理的基础设施从本地数据中心转移到云服务提供商的数据中心或者自建的云数据中心。
在传统的本地数据中心环境中,数据仓库和数据湖的存储和计算资源通常是紧密耦合的,即存储和计算能力是固定搭配的,难以独立扩展。而迁移到云端后,这种局面得到了改变。
九、关于上云的优势 存储和计算资源的解耦:在云环境中,存储和计算资源可以独立配置和扩展。这意味着可以根据实际需求,灵活地调整存储容量和计算能力,而不需要像在本地环境中那样,购买和配置固定搭配的硬件设备。
例如,当数据量增加时,可以单独增加存储容量,而不需要同时增加计算能力;反之,当需要进行大规模的数据处理时,可以单独增加计算能力,而不需要增加存储容量。
带来的好处:这种解耦带来了诸多好处,包括提高了灵活性和成本效益。 可以根据业务需求的变化,快速调整资源配置,而不需要进行大规模的硬件升级或更换。同时,由于可以根据实际使用情况灵活付费,避免了资源的浪费,从而降低了成本。

十、总结
文章详细讲解了数据湖仓一体架构的演变过程,从传统的OLAP数据库到数据湖仓的出现,每一步都是为了解决前一阶段的限制和问题。数据湖仓在云环境中的应用进一步提升了其优势,使其成为一种高效、灵活且可靠的数据存储与分析解决方案。