0


数据湖与数据仓库

介绍

近几年大数据概念太多了,数据库和数据仓库还没搞清楚,就又出了数据湖,现在又说什么“湖仓一体”。乙方公司拼命造概念,甲方公司不管三七二十一,吭哧吭哧花钱搞数据建设。到头来发现,钱也花了,人力也投入了,但最基本的业务需求都解决不了。

仓库和湖泊
仓库是人为提前建造好的,有货架,还有过道,并且还可以进一步为放置到货架的物品指定位置。

而湖泊是液态的,是不断变化的、没有固定形态的,基本上是没有结构的,湖泊可以是由河流 、小溪和其他未被任何处理的水源维持。湖泊是不需要预先指定结构的。

当企业的数据越来越多,开始希望基于业务数据进行决策分析时,便有了 数据仓库 的出现。数据库等原始数据经过 ETL(Extract, Transform, Load)加工后,被装进数据仓库。数据仓库主要用于联机分析业务,通常处理大数据量的读取。

企业希望把生产经营中的所有相关数据,历史的、实时的,在线的、离线的,内部的、外部的,结构化的、非结构化的,都能完整保存下来,方便“沙中淘金”。

什么是数据湖?
数据湖(Data Lake)和数据库、数据仓库一样,都是数据存储的设计模式。数据库和数据仓库会以关系型的方式来设计存储、处理数据。但数据湖的设计理念是相反的,数据仓库是为了保障数据的质量、数据的一致性、数据的重用性等对数据进行结构化处理。

数据湖是一个数据存储库,可以使用数据湖来存储大量的原始数据。现在企业的数据仓库都会通过分层的方式将数据存储在文件夹、文件中,而数据湖使用的是平面架构来存储数据。我们需要做的只是给每个数据元素分配一个唯一的标识符,并通过元数据标签来进行标注。当企业中出现业务问题时,可以从数据湖中查询数据,然后分析业务对应的那一小部分数据集来解决业务问题。

了解过Hadoop的同学知道,基于Hadoop可以存储任意形式的数据。所以,很多时候数据湖会和Hadoop关联到一起。例如:把数据加载Hadoop中,然后将数据分析、和数据挖掘的工具基于Hadoop进行处理。数据湖越来越多的用于描述任何的大型数据池,数据都是以原始数据方式存储,知道需要查询应用数据的时候才会开始分析数据需求和应用架构。

数据湖是描述数据存储策略的方式,并不与具体的某个技术框架关联。数据库、数据仓库也一样。它们都是数据的管理策略。

数据湖是专注于原始数据保真以及低成本长期存储的存储设计模式,它相当于是对数据仓库的补充。数据湖是用于长期存储数据容器的集合,通过数据湖可以大规模的捕获、加工、探索任何形式的原始数据。通过使用一些低成本的技术,可以让下游设施可以更好地利用,下游设施包括像数据集市、数据仓库或者是机器学习模型。

数据仓库和数据湖的定义

数据仓库是传统的数据存储方式,其核心概念是将不同来源的数据抽取、转化和加载到一个中心化的存储系统中,供企业进行决策分析使用。数据仓库通过预定义的模式和结构化的数据模型,使得数据易于理解和查询分析。

数据仓库”一词最早是在1990年,由数据仓库之父比尔·恩门在1990年提出,其描述如下:数据仓库是为支持企业决策而特别设计和建立的数据集合。数据仓库,英文名称为Data Warehouse,可简写为DW或DWH,是一个集成了多维度的数据,具备主题性、集成性、稳定性和动态性等特点的系

如果企业有明确的分析要求,并且数据结构稳定易于理解数据仓库是一个不错的选择。数据仓库是从广泛的运营和外部数据源中积累的组织数据的大型存储库。数据经过结构化、过滤并已针对特定目的进行处理。数据仓库会定期从各种内部应用程序和外部合作伙伴系统中提取处理过的数据,以进行高级查询和分析。

**举个例子: **在电子商务公司中,数据仓库可能包含从数据库中提取的销售数据、用户行为数据(订单状态的过程信息)和市场营销数据这些信息。这些数据经过处理和转换后,帮助企业做商业决策和分析。

大中型企业使用数据仓库是基于跨部门特定的数据库共享数据和内容。数据仓库的目的可以是存储有关产品、订单、客户、库存、员工等的信息。数据仓库的最终用户是企业家和商业用户。

数据湖

就像你不舍得丢掉塑料袋想着“万一以后有用呢?”,老板也不舍得放过任何数据,万一这里面就有能够让营业额一飞冲天的利器呢?

所以,企业就造了一个湖,把生产经营中产生的所有数据都能够全部放进去,方便后面要用的时候直接从这里面拿。

数据湖的核心是开放性,里面是无序的数据。想要用好数据湖,一个是存储的架构要足够强大,另一个是数据处理足够牛逼。

数据湖用来存储各种结构化数据(二维表数据)和非结构化的原始数据(视频、音频、图像、文本),核心是开放性,模式和格式都无所谓,把生产经营的数据一股脑得放进去,方便之后直接从里面拿。

想象一下,数据湖就像是一个巨大的水库,里面装满了各种各样的数据,有结构化的,也有非结构化的,就像是湖里的水,有各种各样的鱼和植物。这些数据可以是来自公司的销售记录、用户日志、社交媒体信息等等。而在这个数据湖里,你可以不受限制地存储和管理这些数据,就像是在湖里游泳一样自由。

存储架构强大指得是存得下、放得久。业务数据是实时变化的,要做到跟随业务系统数据实时变化的技术就复杂了,比如数据写入数据湖的时候要保证ACID,要高效支持upsert /delete历史数据,要能容忍数据频繁导入文件系统上产生的大量的小文件(显然HDFS就不行了)。Delta、iceberg和hudi等开源数据湖就是一些特定技术解决方案,但很多企业连hadoop生态还没搞通搞透呢,又搞出这么多技术,而且还没有统一标准,很让人头大。

数据处理足够牛逼是指数据放进去的时候,存放在里面的时候,以及用的时候拿出来的时候都要足够顺滑。如果放进去的时候就没有进行合理地约束,那时间久了就和垃圾堆没区别,更别说用了。关于数据湖的使用,其实更多是在互联网行业,比如机器学习、探索式分析之类的。

是近年来兴起的一种新兴数据存储模式,它以原始、未处理的大量数据为基础,存储在云端或本地存储系统中。数据湖无需事先定义数据结构,可以灵活存储各种类型的数据,包括结构化、半结构化和非结构化数据。数据湖定义将其解释为高度可扩展的数据存储区域,以原始格式存储大量原始数据,直到需要使用为止。数据湖可以存储所有类型的数据,对帐户大小或文件没有固定限制,也没有定义特定用途。数据来自不同的来源,可以是结构化的、半结构化的,甚至是非结构化的,数据可按需查询。

数据湖的核心概念是允许收集和存储大量数据而无需立即处理或分析所有数据。 数据湖的最终用户是数据科学家和工程师。

目前,Hadoop是最常用的部署数据湖的技术,所以很多人会觉得数据湖就是Hadoop集群。但其实数据湖是一个概念,而Hadoop是用于实现这个概念的技术。

依旧看图,数据仓库可以认为是在原有数据库的基础上,对数据进行加工(抽取、转化、加载),得出能够被业务人员直接进行分析的业务数据包。

这也很好理解,不同的业务部门使用不同的业务系统,系统之间数据不共通,指标混乱。但实际业务进行分析的时候通常涉及多个业务系统数据,取数、整理数据非常耗费时间。这时候就需要用到数据仓库,先把不同业务系统中的数据预先处理好,以业务数据包的形式存放在数据仓库里,业务需要分析的时候直接就能使用

通常来说,数据仓库里都是结构化的数据,它的价值也在于帮助企业把运营数据转化成为高价值的可以获取的信息,并且在恰当的时间通过恰当的方式把恰当的信息传递给恰当的人。一般来说,数据仓库基本和BI一起搭配使用,前者把数据处理好,后者进行前端数据分析展示。

数据仓库和数据湖的区别

数据湖和数据仓库的区别是不同的数据存储和管理方式,区别如下:

1.数据结构

数据仓库通常采用预定义的模式和结构来存储数据,而数据湖则不需要预定义的结构,可以存储各种类型和格式的原始数据。

数据仓库的主要类型

(1)企业数据仓库 (EDW) :这种类型的数据仓库充当帮助企业内决策支持服务的主数据库。EDW 提供对跨组织信息的访问,一种数据表示的集成方法,并且可以运行复杂的查询。

(2)操作数据存储 (ODS):ODS 实时刷新并用于运行例行任务,包括存储员工记录。存储在这里的数据可以被清理,冗余检查和解决。它还可以用于整合来自不同来源的对比数据,以便业务运营、分析和报告能够顺利运行。

(3)数据集市:数据集市是数据仓库的子集,因为它存储特定部门、地区或业务单位的数据。数据集市有助于增加用户响应并减少分析数据量。此处的数据存储在 ODS 中,然后ODS将其发送到 EDW,并在其中存储和使用。

数据湖的类型可以是结构化、非结构化、半结构化和二进制等。

(1)结构化:包含来自关系数据库的结构化数据,即行和列

(2)非结构化:包含来自电子邮件、文档、PDF 的非结构化数据

(3)半结构化:包含半结构化数据,如 CSV、日志、XML、JSON

(4)二进制:包含图像、音频、视频

2.数据处理

在数据仓库中,数据通常经过清洗、转换和整合等处理后再进行存储,而在数据湖中,原始数据可以直接存储,在需要时进行处理。数据湖通常采用廉价数据存储硬件柜,集中式地完成数据存储、处理、计算等操作,可以节省成本,提高数据处理效率。数据仓库则通常采用关系型数据库,对数据进行规范化处理,以符合数据仓库的架构要求。

3.数据访问

在数据仓库中,用户通常需要使用SQL等查询语言来访问和分析数据,而在数据湖中,则可以使用多种工具和技术来访问和分析原始数据。

4.数据安全性

数据仓库中的数据已经经过处理和转换,因此其安全性相对较高。而在数据湖中,原始数据没有经过处理或转换,因此其安全性相对较低。数据湖通常采用廉价数据存储硬件柜,因此可能会存在数据丢失或损坏的风险。为了提高数据的安全性和可靠性,需要采用一些备份和恢复措施。数据仓库则通常采用关系型数据库,可以提供较高的安全性和可靠性保障。

5.应用场景不同

数据湖主要用于机器学习和数据分析等场景,可以在数据湖上进行数据预处理、特征工程、模型训练等操作,支持大规模数据处理和机器学习应用。数据仓库则主要用于管理和决策支持等场景,可以从数据仓库中获取和分析数据,为决策提供支持。

虽然两者都是用于存储、管理、分析企业级大量数据的解决方案,但是数据仓库和数据湖的区别在于数据结构、处理方式、访问方式和安全性等方面。企业需要根据自身需求和实际情况来选择合适的解决方案管理数据。

湖仓一体

数据仓库和数据湖的结合就是湖仓一体,湖仓一体可以理解为把数据湖这个大杂间分了很多的区,每个区是一个应用站点,有的站点做BI,有的站点做大数据处理。

湖仓一体就是把数据仓库和数据湖结合起来用的一套方法,就像是把一个大仓库(数据湖)划分成很多小区域,每个区域都有自己的用途。

整个湖仓一体的构架就是以数据湖为核心,然后在它周围建立不同用途的站点,比如数据仓库,用来做业务分析和BI接入,还有用来做机器学习和大数据处理的站点,目的就是为了让大家更方便地利用数据湖里的数据。

举个例子,湖仓一体就好像是一个大型综合商场,里面有各种各样的功能区,比如商业区、娱乐区、运动区等等。在这个商场里,你可以找到各种服务站点,比如超市、健身房、影院等等。而这些服务站点之间都是相互联系的,彼此共享资源,比如交通便利、人流信息等等。

近年来,业界开始提出湖仓一体(Data Lakehouse)的概念,旨在为企业提供一个统一的、可共享的数据底座,避免传统的数据湖、数据仓库之间的数据移动,将原始数据、加工清洗数据、模型化数据,共同存储于一体化的“湖仓”中,既能面向业务实现高并发、精准化、高性能的历史数据、实时数据的查询服务,又能承载分析报表、批处理、数据挖掘等分析型业务。

湖仓一体方案的出现,帮助企业构建起全新的、融合的数据平台,打破了数据湖与数据仓库割裂的体系,在架构上将数据湖的灵活性、数据多样性以及丰富的生态,与数据仓库的企业级数据分析能力进行融合。

湖仓一体的架构,最终想要实现的,就是通过把数据湖作为中央存储库,围绕数据湖建立各种提供服务的站点,比如数据仓库,供业务分析和接入BI使用;再比如供机器学习用的站点;供大数据处理的站点等等,最终实现随心所欲地使用数据湖中的数据。

通过对机器学习和AI算法的支持,实现数据湖+数据仓库的闭环,极大地提升业务的效率。数据湖和数据仓库的能力充分结合,形成互补,同时对接上层多样化的计算生态。

毫无疑问,湖仓一体将会更好地服务于企业,帮助企业实现大数据能力的提升,如降低成本、提升运营效率、业务模式探索等。

数据处理工具:分三类

第一类工具

解决的问题是:如何将数据“搬到”湖里,即 ETL(Extract, Transform, Load)。

第二类工具

解决的问题是:数据管理。如果元数据缺失,数据湖中的数据质量将无法保证,各种数据无序堆积,最终会导致数据湖变成 数据沼泽

第三类工具

解决的问题是:从湖中的海量数据中“淘金”。数据存储在数据湖中并不是终点,还需要对数据进行分析、挖掘和利用。例如,对湖中的数据进行查询,同时将数据提供给机器学习和数据科学类的业务,以便实现“点石成金”。

标签: 系统架构

本文转载自: https://blog.csdn.net/sadfasdfsafadsa/article/details/143139361
版权归原作者 薛定谔的猫1981 所有, 如有侵权,请联系我们删除。

“数据湖与数据仓库”的评论:

还没有评论