构建可扩展的数据湖需要一套特定的结构设计选择,这与传统关系型数据库管理系统有显著区别。数据库通常将存储和处理能力捆绑在一起,而数据湖架构则通过分离这些组件来优先考虑灵活性和成本效益。本章为这些系统如何运行奠定技术基础,从文件的物理布局到表的逻辑组织。我们首先分析计算与存储的分离。这种设计使得你可以独立于处理能力来扩展数据保留,从而优化成本,$Cost_{total} = Cost_{storage} + Cost_{compute}$。你将审视这种分离的机制,以及它为何成为云端分析的标准。在了解组件结构之后,我们将介绍Amazon S3、Azure Blob Storage和Google Cloud Storage等对象存储系统的特定行为。这些系统不像本地磁盘上的POSIX文件系统那样运行。我们将讨论最终一致性和对象不变性的影响,解释为何在云环境进行目录重命名等操作会消耗大量资源。接下来,讨论转向逻辑数据组织。我们将介绍Medallion架构,这是一种分层方法,将数据质量分为三个不同阶段:**Bronze:**用于原始、摄入数据的着陆区,它保留了源数据的精确副本。**Silver:**经过精炼的层,数据在此去重、清洗和结构化。**Gold:**聚合层,用于提供业务级指标和报告。最后,我们将比较Lambda和Kappa处理架构。你将评估在维护单独的批处理层和速度层与实现单一流处理路径之间的权衡取舍。学完本章,你将能够为特定的数据工程需求选择合适的结构模式。