刚刚过去的软考高级系统架构设计师考试的四个论文之一就是湖仓一体架构,我正好做过类似的项目,大概写了2300字左右,这个湖仓一体架构,阿里官方有很好的产品和架构设计,我也是结合阿里的项目来写的。
1.什么是数据仓库、数据集市和数据湖?
1.1 数据仓库 早期系统采用数据库存放管理数据,但是随着大数据技术的兴起,大家想要通过大数据技术来找到数据之间可能存在的关系,所以大家设计了一套新的数据存储管理系统,把所有的数据全部存储到数据仓库,然后统一对数据处理,这个系统叫做数据仓库。而数据库缺少灵活和强大的处理能力。 在计算机领域,数据仓库(英语:data warehouse,也称为企业数据仓库)是用于报告和数据分析的系统,被认为是商业智能的核心组件。数据仓库是来自一个或多个不同源的集成数据的中央存储库。数据仓库将当前和历史数据存储在一起,以利各种分析方法如在线分析处理(OLAP)、数据挖掘(Data Mining),帮助决策者能快速从大量数据中,分析出有价值的信息,帮助建构商业智能(BI)。 尽管仓库非常适合结构化数据,但是许多现代企业必须处理非结构化数据,半结构化数据以及具有高多样性、高速度和高容量的数据。数据仓库不适用于许多此类场景,并且成本效益并非最佳。
1.2 数据集市 每个部门自身也有对业务数据进行处理分析统计的需求,但不涉及到和其他数据,不希望在数据量大的数据仓库进行操作(因为操作慢,而且可能影响到其他人处理数据),所以建立一个新的存储系统,把数据仓库里关联自己的数据存储到这个系统,本质上算是数据仓库的一个子集。这个系统叫做数据集市。
1.3 数据湖 随着当前大量信息化发展和电子设备产品普及,产生大量的照片、视频、文档等非结构化数据,人们也想通过大数据技术找到这些数据的关系,所以设计了一个比数据仓库还要大的系统,可以把非结构化和结构化数据共同存储和做一些处理,这个系统叫做数据湖。 数据仓库的成长性很好,而数据湖更灵活。数据仓库支持的数据结构种类比较单一,数据湖的种类比较丰富,可以包罗万象。数据仓库更加适合成熟的数据当中的分析和处理,数据湖更加适合在异构数据上的价值的挖掘。 数据湖虽然适合存储数据,但缺少一些关键功能:它们不支持事务处理,不保证数据质量,并且缺乏一致性/隔离性,从而几乎无法实现混合追加和读取数据,以及完成批处理和流式作业。由于这些原因,数据湖的许多功能尚未实现,并且在很多时候丧失了数据湖的优势。
2.湖仓一体化为什么诞生?
2.1 打通数据的存储与计算 很多公司对各类数据应用包括 SQL 分析、实时监控、数据科学和机器学习的灵活性、高性能系统的需求并未减少。AI 的大部分最新进展是基于更好地处理非结构化数据(如 text、images、video、audio )的模型,完全纯数据仓库的二维关系表已经无法承接半 / 非结构化数据的处理,AI 引擎不可能只跑在纯数据仓库模型上。一种常见的解决方案是结合数据湖和数据仓库优势,建立湖仓一体化,进而解决了数据湖的局限性:直接在用于数据湖的低成本存储上实现与数据仓库中类似的数据结构和数据管理功能。 之前的微博基于大数据的需求发展了数据仓库平台,基于AI的需求,发展了数据湖平台,这两套大数据平台在集群层面完全是割裂的,数据和计算无法在两个平台间自由流动。而使用湖仓一体,就能实现数据湖和数仓之间的无缝流转,打通了数据存储和计算的不同的层面。
2.2 灵活性与成长性兼得
当企业处于初创阶段,数据从产生到消费还需要一个创新探索的阶段才能逐渐沉淀下来,那么用于支撑这类业务的大数据系统,灵活性就更加重要,数据湖的架构更适用。 当企业逐渐成熟起来,已经沉淀为一系列数据处理流程,问题开始转化为数据规模不断增长,处理数据的成本不断增加,参与数据流程的人员、部门不断增多,那么用于支撑这类业务的大数据系统,成长性的好坏就决定了业务能够发展多远。数据仓库的架构更适用。
经过对数据湖和数据仓库的深入阐述和比较,可以发现:数据湖和数据仓库一个面向初创用户友好,一个成长性更佳。对企业来说,数据湖和数据仓库是否必须是一个二选一的选择题?是否能有一种方案同时兼顾数据湖的灵活性和云数据仓库的成长性,将二者有效结合起来为用户实现更低的总体拥有成本?那么湖仓一体化就是答案!
3.湖仓一体化是什么?
随着当前大数据技术应用趋势,企业对单一的数据湖和数仓架构并不满意。越来越多的企业开始融合数据湖和数据仓库的平台,不仅可以实现数据仓库的功能,同时还实现了不同类型数据的处理功能、数据科学、用于发现新模型的高级功能。 湖仓一体是一种新型开放式架构,将数据湖和数据仓库的优势充分结合,它构建在数据湖低成本的数据存储架构之上,又继承了数据仓库的数据处理和管理功能,打通数据湖和数据仓库两套体系,让数据和计算在湖和仓之间自由流动。作为新一代大数据技术架构,将逐渐取代单一数据湖和数据仓库架构。 有人把“湖仓一体”做了形象的比喻,就好像湖边搭建了很多小房子,有的可以负责数据分析,有的来运转机器学习,有的来检索音视频等等,而这些数据源流,都可以从数据湖里轻松取得。
4.湖仓一体化的好处是什么?
湖仓一体能发挥出数据湖的灵活性与生态丰富性,以及数据仓库的成长性与企业级能力。帮助企业建立数据资产、实现数据业务化、进而推进全线业务智能化,实现数据驱动下的企业数据智能创新,全面支撑企业未来大规模业务智能落地。其主要优势主要有以下几个方面: 数据重复性:如果一个组织同时维护了一个数据湖和多个数据仓库,这无疑会带来数据冗余。在最好的情况下,这仅仅只会带来数据处理的不高效,但是在最差的情况下,它会导致数据不一致的情况出现。湖仓一体的结合,能够去除数据的重复性,真正做到了唯一。 高存储成本:数据仓库和数据湖都是为了降低数据存储的成本。数据仓库往往是通过降低冗余,以及整合异构的数据源来做到降低成本。而数据湖则往往使用大数据文件系统和Spark在廉价的硬件上存储计算数据。湖仓一体架构的目标就是结合这些技术来最大力度降低成本。 报表和分析应用之间的差异:数据科学倾向于与数据湖打交道,使用各种分析技术来处理未经加工的数据。而报表分析师们则倾向于使用整合后的数据,比如数据仓库或是数据集市。而在一个组织内,往往这两个团队之间没有太多的交集,但实际上他们之间的工作又有一定的重复和矛盾。而当使用湖仓一体架构后,两个团队可以在同一数据架构上进行工作,避免不必要的重复。 数据停滞:在数据湖中,数据停滞是一个最为严重的问题,如果数据一直无人治理,那将很快变为数据沼泽。我们往往轻易的将数据丢入湖中,但缺乏有效的治理,长此以往,数据的时效性变得越来越难追溯。湖仓一体的引入,对于海量数据进行治理,能够更有效地帮助提升分析数据的时效性。 潜在不兼容性带来的风险:数据分析仍是一门兴起的技术,新的工具和技术每年仍在不停地出现中。一些技术可能只和数据湖兼容,而另一些则又可能只和数据仓库兼容。湖仓一体的架构意味着为两方面做准备。 Lakehouse 是一种新的数据管理体系结构,在机器学习覆盖各行各业的时代,它可以从根本上简化企业数据基础架构并加速创新。过去,公司产品或决策中涉及的大多数数据都是来自操作系统的结构化数据。而如今,许多产品都以计算机视觉和语音模型,文本挖掘等形式集成了AI。为什么要使用 Lakehouse 而不是数据湖来进行AI?Lakehouse 可为您提供数据版本控制、治理、安全性和 ACID 属性,即使对于非结构化数据也是如此。