数据仓库是什么

首先我们复习一下什么是大数据的 4V 特性

大数据的 4V 特性:数据量极大、数据增长快、数据种类多、价值密度低。

大数据的定义其实很模糊,它并没有说明它所谓大的边界在哪里,广义上的大数据指的是围绕 Hadoop 的大数据组件生态圈,由 Hadoop 中 HDFS 组件提供分布式文件存储能力、Yarn 组件提供资源调度能力,MapReduce 组件提供大规模计算能力。在具备了这些能力之后大数据便有了实现的可能。在 Hadoop 诞生之后陆陆续续又出现了很多优秀的开源项目,比如较早的 Zookeeper 项目提供了集群高可用能力。Hive 项目提供了使用 SQL 读写 HDFS 上文件的能力,可以方便的在 HDFS 上构建数据仓库。HBase 项目提供了在 HDFS 上构建非关系型数据库的能力。

数据仓库之父兼计算机科学家 William Inmon 定义了数据仓库的 4 大特征,这 4 大特征为数据仓库的强大优势奠定了坚实基础。根据定义,数据仓库具有以下特点:

  • 面向主题:数据仓库可以高效分析关于特定主题或职能领域(例如销售)的数据。
  • 集成:数据仓库可在不同来源的不同数据类型之间建立一致性。
  • 相对稳定:进入数据仓库后,数据将保持稳定,不会发生改变。
  • 反映历史变化:数据仓库分析着眼于反映历史变化。

一个精心设计的数据仓库支持高速查询、高数据吞吐量,能够凭借出色的灵活性帮助用户细分数据或降低数据量,进而执行更加细致的数据检查,满足高层级和精细化数据管理等各种需求。同时,它还能为中间件 BI 环境(为最终用户提供报告、仪表盘和更多其他界面)提供一个坚实的功能性基础。

数据湖是什么

数据湖的就是原始数据保存区. 虽然这个概念国内谈的少,但绝大部分互联网公司都已经有了。国内一般把整个 HDFS 叫做数据仓库(广义),即存放所有数据的地方,而国外一般叫数据湖(data lake)

他们的异同

因为数仓是一个比较早的概念,出现在大数据技术成熟之前,所以数仓多指关系型数据库中搭建的数据仓库,数据湖是在大数据出现后出现的概念,由于大数据存储(HDFS、AWS 对象存储等)可以存放各种机构化或非结构化的数据,且随着技术的成熟,业界出现了 MPP(Massively Parallel Processing)架构数据库,因此有了下面的表格

数据仓库数据湖湖仓一体
存储数据类型适用于结构化数据适用于半结构化和非结构化数据可以处理结构化、半结构化和非结构化数据
目的最适合数据分析和商业智能 (BI) 用例适用于机器学习 (ML) 和人工智能 (AI) 工作负载适用于数据分析和机器学习工作负载
成本存储成本高且耗时存储具有成本效益、快速且灵活存储具有成本效益、快速且灵活
酸合规以符合 ACID 的方式记录数据,以确保最高级别的完整性非 ACID 合规性:更新和删除是复杂的操作符合 ACID 以确保多方同时读取或写入数据时的一致性

由于数据仓库指使用关系型数据库集中存储数据,所以存储数据类型为结构化数据,可以配合 Kettle、PowerBI 等工具实现数据分析、可视化、商业智能应用。由于像 Oracle、SQL Server 这类的关系型数据库对单节点硬件配置要求较高、且对于分布式部署支持有限,所以存储成本、运维成本都很高。

前面提到数据湖多基于 HDFS、AWS 对象存储等,由于这些存储架构对于节点配置要求不高,且原生支持分布式部署,能自适应的扩容节点,可以存储任意类型的数据,自然数据湖也就具备了这些特点。再搭配上 Mahout、QuickSight、SageMaker、FLink ML 等实现对数据的机器学习和预测分析等,下面放一张 Amazon 的数据湖架构图作为参考

amazon-lakehouse

数据湖的缺点也很明显,一方面大量松散数据存放在其中,需要有序的管理才能让数据湖不至于变成数据藻泽。另一方面数据湖的各项功能分散在不同的组件中,如果是使用云平台的话,每一个组件都需要学习如何使用;如果是自己搭建数据湖,这会需要巨大的运维成本。

数据湖也缺乏一些关键特性:它们不支持事务,它们不强制数据质量,并且它们缺乏一致性、隔离性,使得很难混合读写过程,以及批处理和流处理。