1. 认识数据湖与数据仓库
1.1 数据湖
数据湖是近些年提出来比较热的一种数据存储理念,在系统或存储库中以自然/原始格式存储数据的方法 。数据湖一般是企业中全量数据(系统产生全部的数据 [关系型数据库中的数据,非关系型数据(CSV、日志、XML、JSON),二进制文件(文档、图像、视频)...] )的单一存储。
1.2 数据仓库
数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。数据仓库本身不“生产”任何数据,同时也不“消费”任何的数据,数据源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。
2 数据湖与数据仓库的关系
数据湖与数据仓库本质上是两种数据架构,取舍不同。
2.1 数据湖
数据湖关注于原始数据。通过开放底层文件存储,给数据入湖带来了很大的灵活性。进入数据湖的数据可以是结构化的,也可以是半结构化的,甚至可以是完全非结构化的原始日志、二进制文件。另外,开放存储给上层的引擎也带来了更多的灵活度,各种引擎可以根据自己针对的场景随意读写数据湖中存储的数据,而只需要遵循相当宽松的兼容性约定。但同时,文件系统直接访问使得很多更高阶的功能很难实现,如,细粒度(小于文件粒度)的权限管理、统一化的文件管理和读写接口升级也十分困难。
2.2 数据仓库
数据仓库关注于存储面向主题的、集成的、相对稳定的、反映历史变化的数据集合。
数据仓库主要应用有报表展示、即席查询、数据分析、数据挖掘...。
数据仓库更加关注的是数据使用效率、大规模下的数据管理、安全 / 合规这样的企业级成长性需求。数据经过统一但开放的服务接口进入数据仓库,数据通常预先定义 schema,用户通过数据服务接口或者计算引擎访问分布式存储系统中的文件。数据仓库优先的设计通过抽象数据访问接口 / 权限管理 / 数据本身,来换取更高的性能(无论是存储还是计算)、闭环的安全体系、数据治理的能力等,这些能力对于企业长远的数据使用都起到至关重要的作用,所以说数仓是具有成长性。
2.3 取舍
数据湖和数据仓库,是在如今大数据发展下构建分布式系统的两种数据架构的设计方案,各有特点,我们在选择数据湖还是数据仓库时要看平衡的方向是更偏向灵活性还是成本、性能、安全、治理等特性。随着技术的迭代更新,数据湖和数据仓库的边界正在慢慢模糊,数据湖自身的治理能力、数据仓库延伸到外部存储的能力都在加强。湖仓一体化方案的提出,更是让我们看到鱼和熊掌可以得兼,这才是我们最应该优先考虑的,也是未来发展的方向。
3 什么是湖仓一体
湖仓一体是一种新型的数据管理架构,将数据湖和数据仓库的优势充分结合,它构建在数据湖低成本的数据存储架构之上,又继承了数据仓库的数据处理和管理功能。
湖仓一体特征:
- 事物支持
- BI支持
支持直接在源数据上使用BI工具,这样可以加快分析效率,降低数据延时。另外相比于在数据湖和数据仓库中分别操作两个副本的方式,更具成本优势。
- 数据的模型化和数据治理
支持各类数据模型的实现和转变,支持DW模式架构,例如星型模型、雪花模型等。该系统应当保证数据完整性,并且具有健全的治理和审计机制。
- 存算分离
存算分离的架构,也使得系统能够扩展到更大规模的并发能力和数据容量。
- 开放性
采用开放、标准化的存储格式(例如Parquet等),提供丰富的API支持
- 支持多种数据类型(结构化、非结构化)
- 支持各种工作负载
支持包括数据科学、机器学习、SQL查询、分析等多种负载类型。
- 支持流
实现了对流的支持后,不再像以往一样,为实时数据服务构建专用的系统,例如实时报表。