1. 概念

1.1 数据仓库

数据仓库之父比尔·恩门(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。

数据仓库的主要功能如下:

  • 建立公司业务数据模型;
  • 整合公司数据源,让清洗和治理之后的数据成为业务数据的唯一事实;
  • 支持进行细粒度的、多维的分析,帮助高层管理者或者业务分析人员做出商业战略决策;
  • 为更高一层的数据服务、机器学习应用提供主要的历史数据来源。

1.2 数据湖

  • Google Cloud 中数据湖的概念

数据湖是一个集中存储区,用于存储、处理和保护大量结构化、半结构化和非结构化数据。它可以以原生格式存储数据,并处理任何转换格式,而无需考虑大小限制。

  • AWS 中数据湖的概念

数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。

  • Pentaho, Hadoop, and Data Lakes

“If you think of a datamart as a store of bottled water – cleansed and packaged and structured for easy consumption – the data lake is a large body of water in a more natural state. The contents of the data lake stream in from a source to fill the lake, and various users of the lake can come to examine, dive in, or take samples.”

从2010年开始,业界逐渐将 ODS、采集的日志以及其他存放在 Hadoop 上的非结构或者半结构化数据统称为数据湖。

综上,个人认为数据湖的出现主要是为了解决存储全域原始数据的问题,不需要考虑数据的格式,数据的大小,数据的类型,数据的来源,数据的存储周期等等,只要是数据,都可以存储在数据湖中。数据湖除了可以为数据仓库提供原始数据外,也可以直接为上层的数据应用提供服务。从根本上来讲,数据湖的最主要目标是尽可能保持业务的可还原度。

目前,数据湖常见的集群架构会将数据湖划分成不同的区域,而不同区域的数据治理级别也不同,这里简单介绍一下:

  • 原始区(landing):保存采集的数据,并且尽可能保留数据的初始形态。【最小治理】
  • 产品区(gold):保存清洗、处理过后的数据。【重治理】
  • 工作区(work):许多技术岗用户,例如数据科学家、数据工程师,都使用这个区域的数据进行工作。这个区域的数据可以按照用户、项目、主题或者其他方式组织。一旦在工作区的分析工作投产后,数据就会迁移至产品区。【最小治理】
  • 敏感区(sensitive):存放敏感数据。【重治理】

2. 联系

数据湖和数据仓库并没有直接的关系,他们属于两个并行的概念。数据仓库和数据湖不是互相替代,而是为了解决了不同的问题,适用于不同场景。数据湖是计算和存储的解耦。而数据仓库是将计算和存储重度耦合在一起。

数据仓库是比数据湖更早提出来的概念,数据仓库主要是用于处理结构化的数据,需要对放入数据仓库的数据进行预先的数据模型定义。数据湖对数据源没有特别的要求。数据湖是一个集中式的存储库,允许以任意规模存储所有结构化和非结构化的数据。可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析,以指导做出更好的决策,对于有大量非结构化或者半结构化数据的组织,应该优先考虑数据湖。

4. 总结

数据湖和数据仓库是两个不同的概念,两者之间是互补关系而非竞争关系,我们可以根据实际业务场景来选择使用数据湖还是数据仓库,或者两者都使用,但构建数据湖或者数据仓库的目的是一致的,都是为了更好的建设我们的大数据平台或者中台应用,为企业的业务提供更好的数据支撑。

5. 参考资料