数仓架构:离线数仓、实时数仓Lambda和Kappa、湖仓一体数据湖

news2024/9/24 15:28:17

往期推荐

大数据HBase图文简介-CSDN博客

数仓分层ODS、DWD、DWM、DWS、DIM、DM、ADS-CSDN博客

数仓常见名词解析和名词之间的关系-CSDN博客

=========================================================================

目录

往期推荐

1. 数仓架构

1.1 离线数仓架构

1.1.1 数据集市架构

1.1.1.2 独立数据集市

1.1.1.2 从属数据集市

1.1.2 Inmon企业信息工厂架构

1.1.3 Kimball数据仓库架构

1.1.4 混合型数据仓库架构

1.2 实时数仓架构 

1.2.1 Lambda架构

1.2.1.1 传统的Lambda实时开发

1.2.1.2 升级的Lambda实时开发

1.2.1.3 为什么Lambda架构同时存在流处理和批处理?

1.2.1.4 Lambda架构缺点

1.2.2 Kappa架构

1.2.2.1 Kappa架构缺点 

1.2.3 Kappa和Lambda对比

1.2.4 湖仓一体—数据湖 

=========================================================================

1. 数仓架构

数仓架构大致分为离线数仓架构和实时数仓架构,数仓架构可以简单理解为构成数仓的各层关系,如ODS、DWM、DWD、DWS,具体分层这里不赘述。 

1.1 离线数仓架构

显而易见,这种架构不能处理实时数据,那么必然会有数据的流失。

任何事物都是随着时间的演进变得越来越完善,当然也是越来越复杂,数仓也不例外。

离线数仓架构包括数据集市架构、Inmon企业信息工厂架构、Kimball数据仓库架构、混合型数据仓库架构,接下来就详细说说这几种架构。

1.1.1 数据集市架构

数据集市架构重点在于集市二字,数据集市是按主题域组织的数据集合,用于支持部门级的决策。有两种类型的数据集市:独立数据集市 和 从属数据集市。

1.1.1.2 独立数据集市

独立数据集市集中于部门所关心的单一主题域数据以部门为基础,例如制造部门、人力资源部门和其他部门都各自有他们自己的数据集市。

  • 优点:因为一个部门的业务相对于整个企业要简单,数据量也小得多,所以部门的独立数据集市周期短、见效快
  • 缺点:独立数据集市各自为政。从业务角度看,当部门的分析需求扩展或者跨部门跨主题域分析时,独立数据市场会力不从心。 当数据存在歧义,比如同一个产品在A部门和B部门的定义不同,将无法在部门间进行信息比较。 每个部门使用不同的技术,建立不同的ETL的过程,处理不同的事务系统,而在多个独立的数据集市之间还会存在数据的交叉与重叠,甚至会有数据不一致的情况!

1.1.1.2 从属数据集市

从属数据集市的数据来源于数据仓库,即从属于数据仓库。

优点:

  • 性能:当数据仓库的查询性能出现问题,可以考虑建立几个从属数据集市,将查询从数据仓库移出到数据集市。
  • 安全:每个部门可以完全控制他们自己的数据。
  • 数据一致:因为每个数据集市的数据来源都是同一个数据仓库,有效消除了数据不一致的情况。

1.1.2 Inmon企业信息工厂架构

  • Inmon架构是范式建模
  • 企业级数据仓库是企业级别的,正如Inmon数据仓库所定义的,企业级数据仓库是一个细节数据的集成资源库。其中的数据以最低粒度级别被捕获,存储在满足三范式设计的关系数据库中。
  • 部门级数据集市是企业中部门级别的,是面向主题数据的部门级视图,数据从企业级数据仓库获取。数据在进入部门数据集市时可能进行聚合。数据集市使用多维模型设计,用于数据分析。重要的一点是,所有的报表工具、BI 工具或其他数据分析应用都应该从数据集市查询数据,而不是直接查询企业级数据仓库

1.1.3 Kimball数据仓库架构

  • 对比上一张图可以看到,Kimball与Inmon两种架构的主要区别在于数据仓库的设计和建立。 Kimball的数据仓库包含高粒度的企业数据,使用多维模型设计,是维度建模,这也意味着数据仓库由星型模式的维度表和事实表构成。分析系统或报表工具可以直接访问多维数据仓库里的数据。
  • 在此架构中的数据集市也与Inmon中的不同。这里的数据集市是一个逻辑概念,只是多维数据仓库中的主题域划分,并没有自己的物理存储,也可以说是虚拟的数据集市

1.1.4 混合型数据仓库架构

  • 所谓的混合型结构,指的是在一个数据仓库环境中,联合使用Inmon和Kimball两种架构。
  • 从架构图可以看到,这种架构将Inmon方法中的数据集市替换成了一个多维数据仓库,而数据集市则是多维数据仓库上的逻辑视图
  • 使用这种架构的好处是:既可以利用规范化设计消除数据冗余,保证数据的粒度足够细;又可以利用多维结构更灵活地在企业级实现报表和分析。

1.2 实时数仓架构 

在某些场景中,数据的价值随着时间的推移而逐渐减少。所以在传统大数据离线数仓的基础上,逐渐对 数据的实时性提出了更高的要求。

1.2.1 Lambda架构

1.2.1.1 传统的Lambda实时开发

上述架构,在实时计算链路中,如果存在多个实时业务,每个业务都要对自己的数据进行数据清洗等操作,而数据清洗这操作是重复的。所以对其进行了如下优化,提高数据复用

1.2.1.2 升级的Lambda实时开发

对实时链路进行数据分层,改成实时数仓,解决了数据复用的问题,可以对数据进行统一清洗等操作。

1.2.1.3 为什么Lambda架构同时存在流处理和批处理?
  • 假如整个系统只有一个批处理层,会导致用户必须等待很久才能获取计算结果,一般有时间延迟。电商数据分析部门只能查看前一天的统计分析结果,无法获取当前的结果,这对于实时决策来说有 一个巨大的时间鸿沟,很可能导致管理者错过最佳决策时机。
  • Lambda架构属于较早的一种架构方式,早期的流处理不如现在这样成熟,在准确性、扩展性和容错性 上,流处理层无法直接取代批处理层,只能给用户提供一个近似结果,还不能为用户提供一个一致准确的结果。因此Lambda架构中,出现了批处理和流处理并存的现象。 

1.2.1.4 Lambda架构缺点

不管是传统的还是升级后的Lambda架构,严格来说并不是纯正的实时数仓,而是离线+实时!这就导致Lambda有如下缺点:

  • 同样的需求要开发两套一样的代码,比如批处理要统计昨天一天的人数,流处理要统计实时在线人数,都是统计人数,却要开发两套代码。
  • 跑两套相同的代码,集群资源使用增多
  • 离线结果和实时结果可能不一致,当然以离线为主
  • 离线批量计算T+1可能算不完,数据量大
  • 服务器存储压力大

既然离线数仓占用计算压力大,存储压力大,那就不使用离线,使用纯实时的kappa架构

1.2.2 Kappa架构

1.2.2.1 Kappa架构缺点 
  • 只支持流处理,没有批处理
  •  使用kafka进行消息缓存,kafka不支撑海量数据存储,数据存储也有时间限制
  • kafka不支持OLAP,即无法用SQL语句进行简单的数据校验
  • 无法复用数据血缘管理体系(数据治理),因为kafka没有schema那种字段
  • kafka中的数据是append追加,不支持数据的更新、插入

1.2.3 Kappa和Lambda对比

1.2.4 湖仓一体—数据湖 

基于Lambda和Kappa架构的缺点,出现了批流一体

  • 从架构角度来看类似Lambda架构,批流一体既可以处理批数据,又可以处理流数据;
  • 从计算框架角度来看,就是flink、spark框架,既支持批处理,又支持流处理;
  • 从SQL角度来看,就是数仓各层统一支持SQL,这就弥补了kappa中kafka不支持SQL的缺点;
  • 从存储层面来看,能做到海量数据的存储,而不是像kappa一样存储在kafka缓存中;

Kafka 换成了 Iceberg,IceBerg就是数据湖技术的一种,介于上层计算引擎和底层存储格式之间的一个中间层,我们可以把它定义成一种“数据组织格式”,底层存储还是 HDFS。除此之外数据湖还有Hudi(发展最完善)这里不具体阐述。

数据湖支持SQL查询,解决了如下问题:

  • 存储统一
  • 底层存储是HDFS,解决了kafka存储量小,数据有时间限制的问题
  • 任意分层都可以OLAP(支持SQL查询)
  • Iceberg有Schema概念,可以追踪数据的血缘关系(数据治理)
  • 支持数据实时更新,数据可以update/insert

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java的线程池简述

线程池的工作原理 线程池是为了减少频繁的创建线程和销毁线程带来的性能损耗,线程池的工作原理如下图: 线程池分为核心线程池,线程池的最大容量,还有等待任务的队列,提交一个任务,如果核心线程没有满&…

基于SpringBoot+Vue+MySQL的宠物寄养服务管理系统

系统背景 互联网社会的到来,让各行各业通过互联网实现了浴火重生的可能,每个行业都发现了完全可以使用互联网技术用来提高信息在内部的传递效率,提高管理水准。通过本次对宠物寄养服务系统的设计和开发,不仅能巩固已经学到的知识&…

代码随想录 刷题记录-22 动态规划(6)习题

1.300.最长递增子序列 子序列问题是动态规划解决的经典问题,当前下标i的递增子序列长度,其实和i之前的下标j的子序列长度有关系. 动规五部曲: 1.dp数组及下标含义 dp[i] : 从任意位置开始,以nums[i]元素作为结尾的所有 递增子…

Unity编辑器开发 Immediate Mode GUI (IMGUI)

1. 简介: IMGUI是代码驱动gui系统,由 OnGUI 函数驱动: void OnGUI() {if (GUILayout.Button("Press Me")){ Debug.Log("Hello!");} } IMGUI常用于: 创建 in-game debugging displays and tools&#xff1b…

Redis基础命令和事务,redis持久化和主从复制

目录 第一章、Redis数据库的下载和安装1.1)nosql数据库和 Redis 介绍1.2)Windows中下载安装Redis数据库1.3)Linux中安装Redis数据库1.4)Linux中启动redis1.5)Linux中关闭redis 第二章、三种Redis客户端连接Redis数据库…

AI安全立法:加州新法案的争议与未来影响

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

版本管理工具 Git 的下载安装及使用

1 基本介绍 Git 是目前最流行的分布式版本控制软件 什么是分布式版本控制软件? 所有版本信息仓库全部同步到本地的每个用户可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时 push 到相应的服务器或其他用户那里。每个用户那里…

一键翻译全球:2024年跨文化交流的得力助手

翻译工具作为沟通不不同语言桥梁上的重要使者,正在从古老的字典查阅到现代的机器翻译软件发展。今天,让我们一同探索与搜狗翻译工具相似的翻译工具们怎么带我们走进奇妙世界。 1.福晰翻译 链接直达>>https://www.foxitsoftware.cn/fanyi/ 这款多…

数字芯片中I/O单元及电源domain布局中SIPI的考虑

芯片设计的物理实施过程通常也简称为布局布线(P&R,Place-and-Route),布局一般被分为布局规划(Floorplan)和标准单元摆放(Place)两个过程。而其中的布局规划是芯片后端物理实现过…

用Starbound星际边界服务器开服联机

1、登录服务器(百度莱卡云游戏面板) 进入控制面板后会出现正在安装的界面,安装大约10分钟(如长时间处于安装中请联系我们的客服人员) 2、连接游戏 开机后等待服务器地址下方正常运行时间的表由黄色变成灰色并且在计时…

Centos7.x安装grafana11

第一步:yum安装 sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0-1.x86_64.rpm 第二步:改成中文 vim /etc/grafana/grafana.ini 第三步:启动 systemctl start grafana-server 第四步&#x…

linux文件——文件系统——学习、理解、应用软硬件链接

前言:本篇内容主要讲解文件系统的软硬件链接。 经过前两篇文件系统的文章——讲解硬件(磁盘)、讲解文件系统底层, inode, 我们本节内容可以很好的理解我们要讲解的内容。 并且本节内容较少, 友友们学习本节的时候将会比…

Linux(CentOS 7)

Linux(CentOS 7) super space : 切换输入法 ctrl alt : 级别三(大黑屏)呼出鼠标 Fn Ctrl Alt F1 : 进入图形化界面 Fn Ctrl Alt F2 : 进入控制台界面 第 1 章 Linux 入门 1.1 概述 Linux是一个操作系统(OS) 1.2 Linux 和 Windows 区别 第 2 章 VM 与 Linux 的安装…

Apache Paimon:开启实时湖仓存储新时代

Apache Paimon:开启实时湖仓存储新时代 前言Apache Paimon 前言 在当今数字化浪潮汹涌澎湃的时代,数据已成为企业最为宝贵的资产之一。如何高效地处理、存储和利用这些海量数据,成为了企业在激烈竞争中脱颖而出的关键。而在数据处理的广阔领…

rsyslog交叉编译(armv7、armv8、aarch64、arm32平台通用)

文章目录 1、依赖库列表2、编译建议3、编译3.1、编译libestr3.2、编译libfastjson3.3、编译zlib3.4、编译libuuid3.5、编译libgpg-error3.6、编译libgcrypt3.7、编译openssl3.8、编译curl3.9、编译rsyslog该文档描述了如何交叉编译rsyslog到arm64嵌入式平台。 1、依赖库列表 li…

openjudge- 4.6算法之贪心_8469:特殊密码锁

题目 8469:特殊密码锁 总时间限制: 1000ms 内存限制: 1024kB 描述 有一种特殊的二进制密码锁&#xff0c;由n个相连的按钮组成&#xff08;n<30&#xff09;&#xff0c;按钮有凹/凸两种状态&#xff0c;用手按按钮会改变其状态。 然而让人头疼的是&#xff0c;当你按一个…

c++140namespace和ioterm

c语言只有一个全局定义域 那么可能会调错函数&#xff0c;调 错定义域 #include"iostream" using namespace std;//iostream 没有引入标准的std,需要手工写 //如果不写using namespace 需要引入std void main() {std::cout << "using test" <<…

【web开发】Spring Boot 快速搭建Web项目(二)

Date: 2024.08.31 18:01:20 author: lijianzhan 简述&#xff1a;根据上篇原文Spring Boot 快速搭建Web项目&#xff0c;由于搭建好项目后仍然无法使用, 我们还需要先配置一下项目。 操作如下&#xff1a; 找到src/main/resources文件夹&#xff0c;在该文件夹下点击右键创建…

【我的Android进阶之旅】使用TabLayout自定义一个TitleTabView

文章目录 零、效果图一、自定义一个TitleTabView1.1 自定义属性(attrs.xml 中)1.2 自定义TitleTabView1.3 TabItem的子布局1.4 颜色值二、在 XML 中使用 `TitleTabView`2.1 布局文件(XML)2.1.1属性说明三、在 Kotlin 中使用 `TitleTabView`:零、效果图 其中Tab 2是选中的效果…

【电子数据取证】Linux软件包管理器yum和编辑器vim

文章关键词&#xff1a;电子数据取证、手机取证、安卓取证、云取证 在Linux系统中&#xff0c;我们会进行一些软件的安装以及对一些服务或软件的配置&#xff0c;这时就需要用到Linux的yum以及编辑器&#xff0c;下面我们就来看一下这两个功能。 Linux软件包管理器yum 一、什…