数据仓库曾一直做为决策支持系统的支撑平台。数据仓库使用良好设计的模式规范数据,例如星形模型、雪花模型和正常范式等。
时至二十一世纪的头十年,在三个方面上发生了翻天覆地的变化:
- 数据的定义发生了改变。数据的类型更加多样化,可归为非结构化和半结构化数据。
- 云计算不断推陈出新。云技术的创新正产生经济影响,数据存储的成本得以降低。
- 处理能力得到了提升。付出以往的部分代价,就能处理更多的数据。
在所有进展中,称为“黄色小象”的 Hadoop 一定值得一提。Hadoop 是一种分布式计算框架,支持对非结构化数据的存储和处理。
Hadoop 生态系统迅速演进,进而出现了称为“数据湖”的非结构化数据存储和处理新范式。
事情总是两面的,数据仓库和数据湖的共存提出了一些挑战。数据仓库无法生成数据所需的洞察。另一方面,数据湖由于缺乏结构和治理,会迅速沦为“数据沼泽”。两种技术渐行渐远。
进入本世纪第二个十年,专家们提出了一种两全其美融合的新架构模式,称为“湖仓一体”(Data Lakehouse)架构模式。
下面介绍湖仓一体的各组件。
湖仓一体的定义
上图列出了数据湖和数据仓库各自的优缺点。
湖仓一体架构力图结合数据仓库的弹性和数据湖的灵活性。人们创建数据仓库来支持商业智能,主要用例包括编制报表、发布下游数据集市(Data Marts),以及支持自助式商业智能等。数据湖的概念来自于数据科学对数据的探索,主要用例包括通过快速实验创建和检验假设,以及利用半结构化和非结构化数据等。
如何结合数据仓库和数据湖的优点,同时最大程度地减少每种模式自身的弊端?由此提出了湖仓一体范式。
湖仓一体具有以下五个关键特性:
- 支持分析结构化和非结构化数据;
- 适用于分析师和数据科学家,不仅支持报表,而且支持机器学习和人工智能相关用例;
- 数据可治理,避免产生沼泽;
- 架构鲁棒安全,确保利益相关者能正确访问以数据为中心的安全架构;
- 以合理代价实现有效扩展。
湖仓一体的概念架构
为介绍湖仓一体范式,下面给出其概念架构。
上图给出的概念架构中,各核心组件通过有效的组织,形成了全新的湖仓一体范式。
- 支持结构化和非结构化数据。无论是类关系数据库那样静态存储,还是以实时数据流方式提供,数据均可转化为洞察。
- 数据抽取(Data ingestion)服务提供多种抽取方式,将数据抽取到数据湖中,既可以满足批处理需求,也可以满足流式加载需求。一条经验法则是,数据抽取中不做任何数据转换。
- 抽取的数据存储在数据湖的原始数据区域,该区域也称为“青铜层”(bronze layer)。数据依照源数据结构进行管理,实现源数据和下游分析的解耦。
- 数据处理(data processing)服务处理原始数据区域中的数据,执行清洗、归并、复杂业务逻辑等操作,并进一步准备好适用于人工智能、商业智能等下游分析的数据格式。
- 数据同时周期性地临时存放在已清洗数据区域,该区域也称为“白银层”(silver layer)。已清洗数据区域避免对数据重复做多次处理。处理完成的数据最终存储在已处理数据区域,该区域也称为“黄金层”(gold layer)。
- 至此,数据都存储在数据湖中,可用于即席分析、机器学习和报表等多种用例。但数据湖不利于结构化报表或自助式商业智能,而数据仓库在此类需求上表现出色。这需要数据存储同时提供数据仓库能力。
- 数据编目(Data cataloging)服务确保所有源数据、数据湖和数据仓库中的数据、数据处理流水线管道以及从湖仓一体中抽取的输出都做了适当的编目,防止湖仓一体变成数据沼泽。例如,对 Facebook 这样规模的数据做编目,可从中获取湖仓一体的所有数据内容、数据间的关联关系,以及数据转换的世系信息。
- 数据分析(Analytics)服务提供多种数据用途。数据科学家可创建分析沙箱,运行实验和假设测试。数据分析人员可创建沙箱,触发快速查询并对数据执行即席分析。人工智能和机器学习人员可运行和维护模型。商业智能为用户提供了具有丰富可视化效果的自助式商业智能。
五个架构原则
建立真实有效湖仓一体架构,应遵循如下五个关键原则:
- 计算和存储的解耦:首要原则是加入解耦和存储。存储便宜且持久,计算昂贵且短暂。计算和存储的解耦,可使系统灵活地按需升级并扩展计算服务。
- 目标驱动的存储层:数据以多种形态和形式呈现,因此数据的存储方式应具灵活性,以适应数据的不同形态和用途。灵活性包括根据数据的种类及提供方式不同,提供关系层、图数据层、文档层以及 Blob 等多模态存储层。
- 模块化的体系架构:该原则源自于 SOA,确保数据处于核心地位,以围绕数据开展所需服务为关键。基于数据开展数据抽取、处理、编目和分析等不同类型的服务,而不是借助流水线将数据提供给服务。
- 聚焦于功能,而非技术:该原则体现了灵活性。功能的变化缓慢,但技术的变革日新月异。因此一定要聚焦于组件所完成的功能,进而可轻易追随技术的发展而替换旧技术。
- 活动编目(Active cataloging):该项基本原则是避免数据湖沦为数据沼泽的关键。编目上需具有明确的治理原则,有助于确保数据充分记录到数据湖中。编目内容可遵循如下经验法则:
- 对所有需抽取到数据湖中的数据做编目;
- 对所有存储在数据湖和服务层的数据做编目;
- 对源数据转化到服务层的数据世系做编目。
总结
数据是复杂的,并且在不断地发展。业务也在迅速地变化,需求同样再不断地变化,架构必须具备能适应所有变化的灵活性,上述五个架构原则有助于建立切实有效的湖仓一体架构。谨记:
内核规范,边缘灵活。
扩展阅读:
作者简介
Pradeep Menon,微软数据和人工智能分析师。
原文链接: Making Data Lakehouse real yet effective