Data Warehouse vs Data Lake - tenji/ks GitHub Wiki

Data Warehouse vs Data Lake

一、什么是数据湖?

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

二、为什么需要数据湖?

通过数据成功创造商业价值的组织将胜过同行。Aberdeen 的一项调查表明,实施数据湖的组织比同类公司在有机收入增长方面高出 9%。这些领导者能够进行新类型的分析,例如通过日志文件、来自点击流的数据、社交媒体以及存储在数据湖中的互联网连接设备等新来源的机器学习。这有助于他们通过吸引和留住客户、提高生产力、主动维护设备以及做出明智的决策来更快地识别和应对业务增长机会。

三、数据湖与数据仓库相比 – 两种不同的方法

根据要求,典型的组织将需要数据仓库和数据湖,因为它们可满足不同的需求和使用案例。

数据仓库是一个优化的数据库,用于分析来自事务系统和业务线应用程序的关系数据。事先定义数据结构和 Schema 以优化快速 SQL 查询,其中结果通常用于操作报告和分析。数据经过了清理、丰富和转换,因此可以充当用户可信任的“单一信息源”。

数据湖有所不同,因为它存储来自业务线应用程序的关系数据,以及来自移动应用程序、IoT 设备和社交媒体的非关系数据。捕获数据时,未定义数据结构或 Schema。这意味着您可以存储所有数据,而不需要精心设计也无需知道将来您可能需要哪些问题的答案。您可以对数据使用不同类型的分析(如 SQL 查询、大数据分析、全文搜索、实时分析和机器学习)来获得见解。

随着使用数据仓库的组织看到数据湖的优势,他们正在改进其仓库以包括数据湖,并启用各种查询功能、数据科学使用案例和用于发现新信息模型的高级功能。Gartner 将此演变称为“分析型数据管理解决方案”或“DMSA”。

特性 数据仓库 数据湖
数据 来自事务系统、运营数据库和业务线应用程序的关系数据 来自 IoT 设备、网站、移动应用程序、社交媒体和企业应用程序的非关系和关系数据
Schema 设计在数据仓库实施之前(写入型 Schema) 写入在分析时(读取型 Schema)
性价比 更快查询结果会带来较高存储成本 更快查询结果只需较低存储成本
数据质量 可作为重要事实依据的高度监管数据 任何可以或无法进行监管的数据(例如原始数据)
用户 业务分析师 数据科学家、数据开发人员和业务分析师(使用监管数据)
分析 批处理报告、BI 和可视化 机器学习、预测分析、数据发现和分析

通过上表,我们不难发现“数据湖”有着数据仓库无法比拟的优势:

首先,在数据处理和存储能力方面,数据湖可以处理结构化、半结构化、非结构化的所有数据结构的数据,而数据仓库只能处理结构化数据。

数据仓库在处理数据之前要先进行数据梳理、定义数据结构、进行数据清洗才进行入库操作,而数据湖是不管“三七二十一”连上数据源就能将原始数据“一锅端过来”,这就为后续数据湖的机器学习、数据挖掘带来了无限可能!

其次,在数据质量和安全方面,数据仓库作用范围有限,它只能用于收集、处理和分析特定业务问题所必需的数据,而数据湖却能对任何数据,甚至无法监管的原始数据实施数据治理,以提升数据质量和安全性。

最后,在灵活性上数据湖具备天然优势。传统的数仓,因为模型范式的要求,业务不能随便的变迁,这涉及到底层数据的各种变化,这导致了传统数仓无法支持业务的变化。对于数据湖来说,即使像互联网行业不断有新的应用,业务不断发生变化,数据模型也不断的变化,但数据依然可以非常容易的进入数据湖,对于数据的采集、清洗、规范化的处理,完全可以延迟到业务需求的时候再来处理。这跟早期的数仓思维就很不一样,数据湖相对于企业来说,灵活性比较强,能更快速的适应前端应用的变化。

四、AWS 数据湖架构

上图是 AWS 数据湖的一个典型架构,我们看到数据湖并不是一个产品、也不是一项技术,而是由多个大数据组件、云服务组成的一个解决方案

当然,最核心的组件是 Amazon S3,它可以存储二进位为基础的任何信息,包含结构化和非结构化的数据,例如:企业信息系统 ERP、CRM 等系统中的关系型数据,从手机、摄像机来的照片、音视频文件,从汽车上、风力发电机等各种设备来的数据文件等等。

数据源连接,AWS 提供了一个叫 AWS Glue 产品,Glue 是胶水的意思,支持不同的数据库服务之间的连接。Glue 主要有两个功能,一个是 ETL,即,数据的抽取、转换和加载。另一个功能,是数据目录服务的功能,因为把这些数据都存在数据湖里面,在这个过程中,要对这些数据打上标签,把它做分类的工作。Glue 就像爬虫一样对数据湖里的海量数据,进行自动爬取,生成数据目录的功能。

大数据处理,AWS 数据湖可以分为三个阶段对数据进行处理。第一阶段批处理:通过把各种类型的原始数据加载到 Amazon S3 上,然后通过 AWS Glue 对数据湖中的数据进行数据处理,也可以使用 Amazon EMR 进行数据的高级处理分析。第二阶段流处理和分析,这个任务是基于 Amazon EMR、Amazon Kinesis 来完成的。第三阶为机器学习,数据通过 Amazon Machine Learning、Amazon Lex、Amazon Rekognition 进行深度加工,形成可利用的数据服务。

数据服务:AWS 数据湖可为不同角色的用户提供不同的数据服务,数据科学家可以基于数据湖进行数据探索和数据挖掘,数据分析师可以基于数据进行数据建模、数据分析等;业务人员可以查询、浏览数据分析师的分析结果,也基于数据目录自助式进行数据分析。基于数据湖可以开发各类 SaaS 应用,同时数据湖提供数据开放能力,支持将数据以 API 接口的形式开放出去以供外部应用调用。

安全与运维:由于 AWS 数据湖运行在云端,数据安全人们关注的重点。亚马逊的 Amazon VPC 为云端数据湖提供了管理和监控功能, VPC 支持指定 IP 地址范围、添加子网、关联安全组以及配置路由表,AWS IAM、AWS KMS 为数据湖的安全保驾护航,为构建出一个安全的云数据湖提供支撑。

五、如何构建数据湖

数据湖从技术层面也是一个大数据平台,传统上搭建一个集数据存储、数据处理、机器学习、数据分析等应用为一体的大数据平台需要十几个甚至几十个大数据组件,同时还需要为相关组件构建集群,以满足大批量数据处理、计算和存储的需要。这个过程往往是非常复杂的,可能需要数月才能完成。

2018年,AWS 推出了 LakeFormation,可以帮助企业在几天内就能构建出安全的数据湖。

好了,下面我们谈一谈基于 AWS 数据服务组件,到底该如何构建出一个“数据湖”?AWS 官网中给出“数据湖”从创建到应用的五个步骤,如下图所示:

笔者将这五个步骤归纳为“建湖、聚数、治数、用数”八个字:建湖即初始化存储,聚数即迁移数据,治数即数据清洗、数据准备、元数据管理、数据安全和合规性管理,用数即数据分析、数据服务。

1、建湖 - 闲庭信步筑数湖

2、聚数 - 百条大川终归海

随着大数据时代的到来,企业数据量的明显激增,各种各样的数据铺天盖地而来。有来自企业内部信息系统的数据,例如:ERP 系统、CRM 系统等,经过多年的沉淀,企业积累的大量的历史数据,是企业数据分析的主要来源。有来自于各种 IoT 设备产生的实时数据,而且这些数据常以混合数据格式生成的,包括结构化数据、半结构化数据和非结构化数据。有来自企业的互联网数据,包括互联网业务产生的数据,以及通过网页爬虫采集的其他网站的数据,这些新的大规模的海量的数据,不仅量大、种类繁多,而且来的又非常猛,犹如“洪水猛兽”。

AWS 为实现不同数据类型数据的数据采集、处理提供了多种工具,例如:AWS Glue、Database Migration、Kinesis、Internet of Things 等,支持将各种类型的数据轻松迁移至 Amazon S3 中进行统一管理。这个过程,就正好像就像“数据湖”字面含义,我们就找一大片湿地(S3),然后这些像洪水一样来自“四面八方”的数据先蓄在这个湖里面,形成数据“百川归海”之势,然后在利用一些工具来对它进行治理、查询和分析。

3、治数 - 疏川导滞按需流

数据湖有着卓越的数据存储能力,支持大量的、多种类型的大数据统一存储。然而,企业的业务是实时在变化的,这代表着沉积在数据湖中的数据定义、数据格式实时都在发生着转变,如果不加以治理,企业的“数据湖”就有可能变成“垃圾”堆积的“数据沼泽”,而无法支撑企业的数据分析和使用。

“流水不腐,户枢不蠹”,我们只有让“数据湖”中的“水”流动起来,才可以让“数据湖”不变成“数据沼泽”。AWS Glue 提供 ETL 和数据目录能力,让数据从数据源迁移过来的时候就能做一定的数据转换,并形成清晰的数据目录。Amazon EMR、Amazon Glue 支持对数据湖中的数据分区域、分阶段的进行清洗和处理,进一步净化湖中的“水源”。之后,数据通过 Amazon Machine Learning、Amazon Lex、Amazon Rekognition 进行深度加工,形成可利用的数据服务,这样循环往复,持续提升数据湖中的“水质”。

同时,Amazon S3、DynamoDB、Redshift 具备很好的数据安全机制,数据的传输和存储都是加密的,加密密钥只有客户自己掌握,防止数据泄露带来的风险。另外,还有 Amazon VPC 安全策略、AWS IAM、AWS KMS 等安全组件为 AWS 数据湖保驾护航,为企业数据的存储、处理、使用提供一个安全、合规的数据环境。

总之,通过在数据湖的设计、加载和维护过程中加入强大的数据处理、元数据管理、数据质量检核和数据安全的相关组件,并由所有这些领域的经验丰富的专业人员积极参与,可显著提高数据湖的价值。否则,你的数据湖可能会变成数据沼泽。

4、用数 - 水到渠成价值增

数据湖的出现,最初就是为了补充数据仓库的缺陷和不足,为了解决数据仓库漫长的开发周期,高昂的开发成本,细节数据丢失、信息孤岛无法彻底解决、出现问题无法真正溯源等问题。但是随着大数据技术的发展,数据湖不断演变,汇集了各种技术,包括数据仓库、实时和高速数据流技术、机器学习、分布式存储和其他技术。数据湖逐渐发展成为一个可以存储所有结构化、非结构化数据,对数据进行大数据处理、实时分析和机器学习等操作的统一数据管理平台,为企业提供数据“采集、存储、治理、分析、挖掘、服务”的完整解决方案,从而实现“水到渠成”的数据价值洞察。

AWS 提供了在数据湖上运行的最广泛、最具成本效益的分析服务集合,每项分析服务都专门为广泛的分析用例而构建:

  • 利用 AmazonAthena,使用标准 SQL 直接查询存储在 S3 中的数据,实现交互式分析;
  • 利用 AmazonEMR 满足对使用 Spark 和 Hadoop 框架的大数据处理,Amazon EMR 提供了一种托管服务,可以轻松、快速且经济高效地处理海量数据;
  • 利用 AmazonRedshift 可快速构建 PB 级结构化数据运行、复杂分析查询功能的数据仓库;
  • 利用 AmazonKinesis,轻松收集、处理和分析实时的流数据,如 IoT 遥测数据、应用程序日志和网站点击流;
  • 利用 AmazonQuickSight 轻松构建可从任何浏览器或移动设备访问的精致可视化效果和内容丰富的控制面板;
  • 同时,AWS 提供了一系列广泛的机器学习服务和工具,支持在 AWS 数据湖上运行机器学习算法,深度挖掘数据价值。

这些工具和服务,能够为不同角色的用户,例如数据科学家、数据分析师、业务人员、数据管理员等提供强大的功能支持,从而帮助企业实现以“数据为驱动”的数字化转型。

六、总结

参考链接