数据湖介绍
在介绍数据湖之前,我们先明确“数据库”和“数据仓库”的概念。
# 数据库
数据库是“按照数据结构来组织、存储和管理数据的仓库”。我们现在通常所说的数据库指的是关系型数据库,关系数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,具有结构化程度高,独立性强,冗余度低等优点。但凡是个业务系统,都需要关系型数据库的支持,主要用于 OLTP(联机事务处理),我们特别关心 QPS(每秒查询数)、TPS(每秒事务数)、IOPS(每秒读写数)等指标。
# 数据仓库
为解决企业的数据集成与分析问题,数据仓库之父比尔·恩门于 1990 年提出数据仓库(Data Warehouse)。数据仓库主要功能是将 OLTP 经年累月所累积的大量数据,通过数据仓库特有的数据储存架构进行 OLAP(联机分析处理),最终帮助决策者能快速有效地从大量数据中,分析出有价值的信息,提供决策支持。自从数据仓库出现之后,信息产业就开始从以关系型数据库为基础的运营式系统慢慢向决策支持系统发展。数据仓库擅长对来自不同来源的数据进行聚合和关联,从而发掘出数据中隐藏的商业价值。在企业的经营决策,商业信息分析等领域都起着至关重要的作用。
数据仓库相比数据库主要有以下两个特点:
- 数据仓库是面向主题集成的。数据仓库是为了支撑各种业务而建立的,数据来自于分散的操作型数据。因此需要将所需数据从多个异构的数据源中抽取出来,进行加工与集成,按照主题进行重组,最终进入数据仓库。
- 数据仓库主要用于支撑企业决策分析,所涉及的数据操作主要是数据查询。因此数据仓库通过表结构优化、存储方式优化等方式提高查询速度、降低开销。
# 数据湖
# 产生背景
随着企业的发展,产生的数据越来越多,数据的形式也越来越多样化,除了结构化数据,还有非结构化数据、图片、视频等等。虽然已经有了数据仓库,但数据仓库是面向主题集成的,并没有包含所有数据。一些在企业运作中产生的数据,在当前阶段可能是没有价值的、或者说暂时还没有很强的业务诉求去分析这部分数据,但是需要将其按照统一的规范先进行存储,等到日后需要的时候可以快速高效地使用它。数据湖就是在这样的背景下产生的。
# 概念
先来看看其它公司对数据湖的定义:
Aws:
数据湖是一个集中式存储库,允许你以任意规模存储所有结构化和非结构化数据。你可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。
阿里云:
数据湖是统一存储池,可对接多种数据输入方式,你可以存储任意规模的结构化、半结构化、非结构化数据。数据湖可无缝对接多种计算分析平台,直接进行数据处理与分析,打破孤岛,洞察业务价值。同时,数据湖提供冷热分层转换能力,覆盖数据全生命周期。
维基百科:
数据湖是指使用大型二进制对象或文件这样的自然格式储存数据的系统。它通常把所有的企业数据统一存储,既包括源系统中的原始副本,也包括转换后的数据,比如那些用于报表,可视化, 数据分析和机器学习的数据。数据湖可以包括关系数据库的结构化数据(行与列)、半结构化的数据(CSV,日志,XML,JSON),非结构化数据 (电子邮件、文件、PDF)和 二进制数据(图像、音频、视频)。
上面的定义还是比较抽象,这里有个更形象贴切的定义:数据湖就是自然状态下的巨大水体,汇聚不同数据源的溪流并存储,根据不同需求输出有价值的数据。既可以存储结构化数据,也可以存储非结构化数据;既可以接入离线批数据,也可以接入实时流数据;既可以支持流/批计算引擎,也可以支持交互式分析引擎和机器学习引擎。
从抽象概念来讲,数据湖是一中数据架构方法;从物理实现上来讲,数据湖是一个数据存储平台,可以集中存储结构化数据、半结构化数据(文档、PDF、XML)、非结构化数据和二进制数据(图像、音频、视频)。而且存储的是各种类型的原始数据,数据无需经过结构化处理,就可以进行存取、处理、分析和传输。所以,物理上的数据湖可以理解为是一个原始数据保护区。
数据湖的本质,是由“数据存储架构 + 数据处理工具”组成的解决方案。
- 数据存储架构:要有足够的扩展性和可靠性以满足任意类型的海量存储需求。
- 数据处理工具:数据处理工具主要分为两类:
- 数据移动和管理工具:主要解决的是数据入湖的问题。换句话说就是解决如何将数据搬入湖中,以及提供统一高效的方案来管理湖中的数据(包括定义数据源、数据同步策略、数据安全策略、访问策略、移动数据、编制数据等)。
- 数据分析工具:主要解决的是如何对湖中的数据进行分析、挖掘和利用的问题,让数据带来价值。
# 对数据湖的期望
- 数据湖需要提供足够的存储能力,该存储包含一个企业所有的数据;
- 数据湖可以存储任意类型的数据;
- 数据湖存储的是原始数据,未经任何处理的数据(业务数据的原始副本);
- 数据湖需要具备完善的数据管理能力(元数据管理);
- 数据湖需要具备多样化的分析能力,包括批处理、流处理以及机器学习;
- 数据湖需要具备完善的数据生命周期能力,在管理原始数据的同时还需要保存历史快照,以便帮助用户可以追溯到任意时刻的记录;
- 数据湖需要具备完善的数据获取和数据发布能力,数据湖需要支持对接多种数据源,并可以将数据分析的结果推送到下游,以满足不同应用的访问需求;
# 湖仓一体
# 数据仓库 VS 数据湖
对于数据仓库与数据湖的不同之处,可以类比为仓库和湖泊的区别:仓库存储着来自特定来源的货物;而湖泊的水来自河流、溪流和其它来源,并且是原始数据。
维度 | 数据仓库 | 数据湖 |
---|---|---|
设计初衷 | 面向主题高度集成,解决的是当下的业务分析需求 | 为将来做准备 |
目的 | 对已有结构化数据进行分析 | 探索性分析所有类型的数据 |
数据类型 | 业务系统中产生的结构化数据 | 所有类型的原始数据 |
Schema | 搭建数仓之前设计 | 数据入湖以后,分析时再指定 |
使用成本 | 起步成本高,后期成本低 | 起步成本低,后期成本高 |
数据质量 | 质量高,可以作为重要事实依据 | 包含大量原始数据,使用前需 ETL 处理 |
适用对象 | 业务分析师为主 | 数据科学家、数据开发人员为主 |