一、概念
1.数据仓库
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化的(Time Variant)数据集合,用于支持管理决策和信息的全局共享。其主要功能是将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料,透过数据仓库理论所特有的资料储存架构,作一有系统的分析整理,以利各种分析方法如联机分析处理(OLAP)、数据挖掘(Data Mining)之进行,并进而支持如决策支持系统(DSS)、主管资讯系统(EIS)之创建,帮助决策者能快速有效的自大量资料中,分析出有价值的资讯,以利决策拟定及快速回应外在环境变动,帮助建构商业智能(BI)。
主题:是指用户使用数据仓库进行决策时所关心的重点方面,如:收入、客户、销售渠道等;所谓面向主题,是指数据仓库内的信息是按主题进行组织的,而不是像业务支撑系统那样是按照业务功能进行组织的。
集成:是指数据仓库中的信息不是从各个业务系统中简单抽取出来的,而是经过一系列加工、整理和汇总的过程,因此数据仓库中的信息是关于整个企业的一致的全局信息。
随时间变化:是指数据仓库内的信息并不只是反映企业当前的状态,而是记录了从过去某一时点到当前各个阶段的信息。通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
2.数据湖
数据湖(Data Lake)是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。数据湖是以其自然格式存储的数据的系统或存储库,通常是对象blob或文件。数据湖通常是企业所有数据的单一存储,包括源系统数据的原始副本,以及用于报告、可视化、分析和机器学习等任务的转换数据。数据湖可以包括来自关系数据库(行和列)的结构化数据,半结构化数据(CSV,日志,XML,JSON),非结构化数据(电子邮件,文档,PDF)和二进制数据(图像,音频,视频)。
目前,Hadoop是最常用的部署数据湖的技术,所以很多人会觉得数据湖就是Hadoop集群。但其实数据湖是一个概念,而Hadoop是用于实现这个概念的技术。
3.湖仓一体
近年来,业界开始提出湖仓一体(Data Lakehouse)的概念,旨在为企业提供一个统一的、可共享的数据底座,避免传统的数据湖、数据仓库之间的数据移动,将原始数据、加工清洗数据、模型化数据,共同存储于一体化的“湖仓”中,既能面向业务实现高并发、精准化、高性能的历史数据、实时数据的查询服务,又能承载分析报表、批处理、数据挖掘等分析型业务。
湖仓一体方案的出现,帮助企业构建起全新的、融合的数据平台,打破了数据湖与数据仓库割裂的体系,在架构上将数据湖的灵活性、数据多样性以及丰富的生态,与数据仓库的企业级数据分析能力进行融合。
通过对机器学习和AI算法的支持,实现数据湖+数据仓库的闭环,极大地提升业务的效率。数据湖和数据仓库的能力充分结合,形成互补,同时对接上层多样化的计算生态。
毫无疑问,湖仓一体将会更好地服务于企业,帮助企业实现大数据能力的提升,如降低成本、提升运营效率、业务模式探索等。
二、特点
1、数据仓库特点
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。它具有以下典型的特点:
(1)高执行效率:数据仓库处理的数据量巨大,且分析周期一般以天为单位,因此对分析的时效性要求相对较高,这就需要它具有高效率的数据存储和处理能力。
(2)高数据质量:进入数据仓库的数据一般会经过数据清洗的环节,因此可能导致数据失真的脏数据会被清除,从而保证数据仓库提供的信息是准确的。
(3)高扩展性:数据仓库的设计和建设一般会考虑未来3-5年的情况。
(4)面向主题:数据仓库中的数据是按照一定的主题域进行组织的。主题是指在较高层次上将企业信息系统中的数据综合、归类并进行分析利用的抽象。
2、数据湖特点
数据湖是一类存储数据原始格式的系统。它通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习。数据湖中包括来自于关系型数据库中的结构化数据、半结构化数据、非结构化数据和二进制数据等。相比数据仓库,数据湖具有以下特征:
(1)保真性:数据湖中必须要保存一份原始数据,无论是数据格式、数据模式、数据内容都不应该被修改。
(2)灵活性:在假设没办法预估业务变化的前提下,直接保持数据的原始状态,一旦需要时,再根据需求对数据进行加工处理。
(3)可管理:数据湖中的数据会不断的积累、演化。因此,对于数据管理能力要求也很高。它至少应该包含的数据管理能力包括:数据源、数据连接、数据格式、数据模式,数据权限等。
(4)可追溯:数据湖是一个企业中全量数据的存储场所,需要对数据的全生命周期进行管理,包括数据的定义、接入、存储、处理、分析、应用的全过程。它需要能做到对其间的任意一条数据的接入、存储、处理、消费过程是可追溯的,能够清楚的重现数据完整的产生过程和流动过程。
3、湖仓一体特点
湖仓一体指的是结合了数据仓库和数据湖的元素而形成的数据解决方案。它实现了数据仓库的数据结构和数据湖的可管理特性。通常既可以用来做机器学习,也可以用来做BI分析。湖仓一体的特点包括:
(1)统一的数据管理:湖仓一体提供完善的数据管理能力。数据湖中会存在两类数据:原始数据和处理后的数据。数据湖中的数据会不断的积累、演化,因此包含以下数据管理能力:数据源、数据连接、数据格式、数据schema(库/表/列/行)。同时,数据湖是单个企业中统一的数据存放场所,因此,还具有一定的权限管理能力。
(2)多模态的存储引擎:湖仓一体本身内置多模态的存储引擎,以满足不同的应用对于数据访问需求(综合考虑响应时间/并发/访问频次/成本等因素)。但是,在实际的使用过程中,为了达到可接受的性价比,湖仓一体解决方案提供可插拔式存储框架,支持的类型有HDFS/S3等, 并且在必要时还可以与外置存储引擎协同工作,满足多样化的应用需求。
(3)丰富的计算引擎:提供从批处理、流式计算、交互式分析到机器学习等各类计算引擎。一般情况下,数据的加载、转换、处理会使用批处理计算引擎;需要实时计算的部分,会使用流式计算引擎;对于一些探索式的分析场景,可能又需要引入交互式分析引擎。随着大数据技术与人工智能技术的结合越来越紧密,各类机器学习/深度学习算法也被不断引入,可以支持从HDFS/S3上读取样本数据进行训练。因此,湖仓一体解决方案提供计算引擎的可扩展/可插拔。
(4)数据全生命周期管理:湖仓一体提供一个企业中全量数据的存储场所,需要对数据的全生命周期进行管理,包括数据的定义、接入、存储、处理、分析、应用的全过程。一个强大的数据湖实现,需要能做到对其间的任意一条数据的接入、存储、处理、消费过程是可追溯的,能够清楚的重现数据完整的产生过程和流动过程。
三、区别
数据湖是近几年热度比较高的一个数据域的一个概念,热度和认知度几乎超过了前些年的数据仓库。其实数据湖和数据仓库不完全一个层面的概念。数据湖和数据仓库代表了数据架构设计的两种取向。我们先来看看数据湖和数据仓库的区别。
1、数据仓库和数据湖
综上,数据仓库和数据湖,是大数据架构的两种设计取向。两者在设计的根本分歧点是对包括存储系统访问、权限管理、建模要求等方面的把控。
数据湖优先的设计,通过开放底层文件存储,给数据入湖带来了最大的灵活性。进入数据湖的数据可以是结构化的,也可以是半结构化的,甚至可以是完全非结构化的原始日志。另外,开放存储给上层的引擎也带来了更多的灵活度,各种引擎可以根据自己针对的场景随意读写数据湖中存储的数据,而只需要遵循相当宽松的兼容性约定(这样的松散约定当然会有隐患,后文会提到)。但同时,文件系统直接访问使得很多更高阶的功能很难实现,例如,细粒度(小于文件粒度)的权限管理、统一化的文件管理和读写接口升级也十分困难(需要完成每一个访问文件的引擎升级,才算升级完毕)。
而数据仓库优先的设计,更加关注的是数据使用效率、大规模下的数据管理、安全 / 合规这样的企业级成长性需求。数据经过统一但开放的服务接口进入数据仓库,数据通常预先定义 schema,用户通过数据服务接口或者计算引擎访问分布式存储系统中的文件。数据仓库优先的设计通过抽象数据访问接口 / 权限管理 / 数据本身,来换取更高的性能(无论是存储还是计算)、闭环的安全体系、数据治理的能力等,这些能力对于企业长远的大数据使用都至关重要,我们称之为成长性。
2、从数据仓库、数据湖到湖仓一体
近几年,数据湖和数据仓库的应用场景和分界还是很清晰的。数据仓库擅长的BI、数据洞察离业务更近、价值更大,而数据湖里的数据,更多的是为了远景。但是随着数据处理技术的发展以及AI的广泛应用,原来为画饼准备的数据湖里的数据得以重见天日,其价值被重新定义。这就是湖仓一体化。
如今对数据价值的深度挖掘成了行业客户普遍关注的热点,所以很多人就想能不能把数据仓库和数据湖的价值进行叠加,让数据流动起来,减少重复建设。比如,让“数仓”在进行数据分析的时候,可以直接访问数据湖里的数据。再比如,让数据湖在架构设计上,就“原生”支持数仓能力。
正是这些想法和需求,推动了数仓和数据湖的打通和融合,也就是当下炙手可热的概念:Lake House,现在也叫智慧湖仓。智慧湖仓架构最重要的一点,是实现“湖里”和“仓里”的数据/元数据能够无缝打通,并且“自由”流动。湖里的“新鲜”数据可以流到仓里,甚至可以直接被数仓使用,而仓里的“不新鲜”数据,也可以流到湖里,低成本长久保存,供未来的数据挖掘使用。
在湖仓一体化架构下,以下场景得以实现:
- 可以将数据湖中最近几个月的“热数据”抽取到数仓中;
- 可以轻松将大量冷门历史数据从数仓转移至成本更低廉的数据湖内,同时这些移到湖里的数据,仍然可以被数仓查询使用;
- 处理数仓内的热数据与数据湖中的历史数据,生成丰富的数据集,全程无需执行任何数据移动操作;
- 生成的新数据集可以插入到数仓中的表内,或者直接插入由数据湖托管的外部表中。
在实际业务场景中,数据的移动不只是存在于数据湖和数据仓库之间,可以简单归纳为三种,一种是由外向内的数据入湖,第二种是由内向外的数据出湖,第三种是围绕数据湖数据在数据服务组件之间流动。数据越多,管理和治理起来就越困难,就会形成所谓的“数据重力”现象。湖仓一体化不仅需要把数仓和数据湖集成起来,还要克服数据重力,让数据在服务之间按需流动。
湖仓一体化也好,智能湖仓也好,并非单一产品,它描述的是一种架构。这套架构,以数据湖为中心,把数据湖作为中央存储库,再围绕数据湖建立专用“数据服务环”,环上的服务包括了数仓、机器学习、大数据处理、日志分析,甚至RDS和NOSQL服务等等。
3、PetaBase、数据工厂与湖仓一体的架构关系
PetaBase:是一个分布式、高性能、支持SQL的大数据计算和存储的基础设施平台。
数据工厂(EDF):是一个提供数据的采集、集中处理、分发、加载、传输功能的一站式开发平台。