数字化转型实践:构建云原生大数据平台
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 数据湖

2010年,Pentaho公司的创始人兼首席技术官James Dixon在大数据理论的基础上提出了数据湖的概念。狭义的数据湖是一个大型的数据存储库,数据以原始格式进行保存以供后期处理、分析和传输,无须事先对数据进行处理。可以看到,数据湖在大数据理论的基础上强调了对原始数据的保存,即无论数据价值如何,先将其保存再考虑后续分析。广义上的数据湖则代表了更为宏大的数据栈,是一种企业数据的架构方法,不仅包括存储本身,也包括业务系统中数据集成和数据处理的完整体系,其目的是将企业内海量、多来源、多种类的数据,以原始状态保存到存储介质中,通过对数据进行快速加工和分析,提供机器学习和商业智能的能力。

以开源Hadoop体系为代表的开放式HDFS存储、开放的文件格式、元数据服务及多种引擎协同工作的模式形成了数据湖的雏形。但Hadoop并不等同于数据湖,更多是作为数据湖的部分技术实现而存在的。

尽管数据湖与数据仓库都具有提供商业智能的能力,但也存在明显的不同,数据湖的特点如下。

1.保存所有数据

在建立数据仓库时,用户一般会花大量的时间分析数据源、理解业务逻辑、做数据切片,然后生成高度结构化的数据模型。在这个过程中,为了简化模型、降低存储成本、提高性能,可能还会花大量时间去筛选哪些数据需要进入数据仓库。与之相比,数据湖保留所有历史数据,甚至包括可能永远不会被使用的数据,以便能够及时回溯到任何时间点进行分析。

2.支持所有数据类型

数据仓库一般从事务系统中提取数据,而服务器日志、传感器数据、社交网络活动、文本和图像等其他数据源一般会被数据仓库忽略。虽然这些非结构化数据的用途正在不断被发现,但消费和存储它们相对比较昂贵和困难。数据湖最初就被设计为天然支持非结构化的数据源,它以原始形式保留所有数据,只有在准备使用它们时才会对其进行处理。

3.适应变化

数据仓库价格昂贵且需要大量时间来搭建和维护,虽然设计良好的数据仓库可以适应变化,但数据加载过程的复杂性,以及为简化分析和报告所做的前期工作仍然会大大消耗开发资源,使得数据仓库难以满足快速获得商业分析结果的需求。而在数据湖中,所有数据都以其原始形式存储并且不会被删除,用户能够根据不同需求,随时以各种分析方式探索数据。如果发现分析结果对决策没有帮助,则可以丢弃该结果,但不会对原始数据进行任何更改,也不会消耗过多的开发资源。

近年来,数据仓库不断被行业中的新事物、新需求冲击,给人留下了数据仓库在企业中优先级下降的印象,甚至有人认为数据仓库已经是“过去时”,可以被数据湖完全代替了,但事实并非如此。

技术上,数据湖与数据仓库的根本区别是对存储系统和建模要求的把控。数据湖通过开放底层文件存储,给用户带来了极大的灵活性,也给上层的引擎带来了更多的扩展性,各类引擎可以根据不同场景随意读写数据湖中的数据,只需要遵循相对宽松的兼容约定。所以当企业处于初创阶段时,从产生到消费,还需要不断探索才能使数据逐渐沉淀下来,那么用于支撑这类业务的数据系统的灵活性就更加重要,数据湖会更适用。而数据仓库更加关注数据使用效率、大规模的数据管理、安全合规等企业级需求,提供闭环的安全体系和数据治理能力。数据仓库里的数据通常预先定义结构和类型,经过统一开放的服务接口进入数据仓库,用户则通过数据服务接口或者计算引擎进行查询。由于企业在成熟后处理数据的成本不断增加,参与数据流程的人员、部门不断增多,所以数据系统的稳定性和成长性决定了业务的发展前景,数据仓库的架构更适合这种场景。事实上,相当一部分企业(特别是新兴的互联网企业)在从零开始架构数据湖技术栈,伴随开源Hadoop体系的流行,经历了从探索创新到成熟建模的过程。在这个过程中,数据湖架构太过灵活而缺少对数据的监管、控制和必要的治理手段,导致运维成本不断增加且数据治理效率降低,最后只有把数据湖与数据仓库不断融合,才能解决运维、成本、数据治理等问题。

也就是说,对企业而言,数据湖和数据仓库并不是“单选题”。企业需要同时兼顾数据湖的灵活性和数据仓库的成长性,将二者有效结合起来。如今,数据湖和数据仓库的边界正在慢慢变模糊,数据湖自身的治理能力、数据仓库延伸到外部存储的能力都在加强。数据仓库正在发展为数据湖的一部分,或者说,数据湖正在迅速发展为下一代数据仓库,而这一切都与云计算的发展息息相关。