数据库,数据仓库,数据湖,湖仓一体到底是什么区别

昨天结束的一场面试,面试官问了下我对数据仓库和数据湖的理解,根据之前的理解我说了下数据湖是数据仓库某些时候的缓存,然后面试官反问说我确定这个用词对吗?没理解到位,所以去了解之后再整体输出下我自己的理解。

先说下上面的答案,数据仓库和数据湖可以是互相独立存在的,不存在谁是谁的缓存一说,但是如果涉及到湖仓一体的时候,数仓是结构化的数据访问入口,而底层的数据湖是可以作为数仓的底层的存储支持。

要了解各个概念,我们从对应的背景出发,然后我们自己再给出比较严谨的定义。

数据库顾名思义就是我们存储结构化数据的存储系统,面向事务分析的存储系统,我们常见的库存,金钱的存储都是用数据库来实现的,少了一笔钱,多了10件库存啥的;但是,如果你要让数据库去分析为什么最近一个月的库存少了,订单数少了,那他就显得无能为力了。这个时候就需要我们的数据仓库出手了。

数据仓库是面向分析的存储结构化数据的一个存储系统,本质上还是为分析服务的,把客户对应的日志数据和业务数据先存储起来,然后经过各种加工到ads层,供最终的决策分析使用,支持复杂的大规模的数据分析。

那么数据湖又是什么呢?刚刚我们说到的数仓只能存储大量的结构化数据,但是企业发展的时间越来越长,数据量越来越多的情况下,不只是有结构化的数据,对于半结构化和非结构化的数据又该如何存储呢?这个时候就该我们的数据湖隆重登场了,他就是为存储历史的所有结构化,半结构化以及非结构化数据,历史所有的离线的,实时的,外部的,内部的数据而生的,而且是以成本比较低的对象存储为底座去进行数据存储的,支持近乎无限的扩展;

所以从上述两个概念来说,数据湖存储的数据量级和种类比数据仓库更广泛和多样,这样来说,是不是在企业里面我们可以就是用数据湖,不需要数据仓库都可以了;这个是不太行的,因为数据湖存储的是企业的数据的原始形态,不支持即席的数据查询,如果要查询某些指标数据,必须依赖于数据仓库提供的已经计算好的结构化的数据

但是兄弟们可能又会说了,这个是不是数据仓库的最底层可以依赖于数据湖的存储,数据仓库和数据湖用统一的存储底座,让数据仓库专注于处理批数据,而数据湖更多地处理事实的数据,而且数据仓库和数据湖之间的数据可以来回流动,如下所示:

这个就是最简单的湖仓一体的模型,其实湖仓一体说白了就是一种新型的数据架构,它结合了数据湖(Data Lake)和数据仓库(Data Warehouse)的优势。传统上,数据湖和数据仓库是分离的系统,数据湖用于存储结构化、半结构化和非结构化数据以及一些实时的数据,数据仓库主要用于存储和分析高度结构化的数据

相关推荐
廿一夏6 小时前
MySql存储引擎与索引
数据库·sql·mysql
元拓数智8 小时前
智能分析落地卡壳?先补好「数据关系+语义治理」这层技术基建
大数据·分布式·ai·spark·数据关系·语义治理
lzhdim8 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室8 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)9 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
YOU OU10 小时前
Spring IoC&DI
java·数据库·spring
Muscleheng10 小时前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
罗超驿11 小时前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试
jran-11 小时前
Redis 命令
数据库·redis·缓存
小江的记录本12 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven