OLTP 与 OLAP 系统说明对比和大数据经典架构 Lambda 和 Kappa 说明对比——解读大数据架构(五)

news2024/10/6 12:19:46

文章目录

  • 前言
  • OLTP 和 OLAP
  • SMP 和 MPP
  • lambda 架构
  • Kappa 架构

前言

本文我们将研究不同类型的大数据架构设计,将讨论 OLTP 和 OLAP 的系统设计,以及有效处理数据的策略包括 SMP 和 MPP 等概念。然后我们将了解经典的 Lambda 架构和 Kappa 架构。

OLTP 和 OLAP

在线事务处理(Online transaction processing)是一种用于在实时环境中处理CRUD 事务的系统,旨在支持高并发,事务性以及低延迟请求,比如说电商网站等。
联机分析处理(online analytical processing)系统对查询性能做了优化,用户可以通过 OLAP 系统快速查询分析数据并生成报表,OLTP 可以与 OLAP 结合使用,作为 OLAP 的数据源,通过 ETL 加载源数据至数据仓库,如下图所示:

OLAP 数据集通常由多维数据组成,其中包含了事实表(Fact Table)和维度表(Dimension Table)。
事实表

  • 事实表包含了业务过程中发生的事实或事件的详细数据,通常是数值型数据,如销售额、数量、利润等。事实表通常是一个大表,其行代表了每个事实事件的记录,而列则代表了与该事件相关的度量指标。每行数据都包含了一个或多个外键,用于连接到维度表,以提供更多关于事实的上下文信息。

维度表

  • 维度表包含了描述事实表中数据的上下文信息,如时间、地点、产品、客户等。维度表是由唯一的、离散的值组成的,通常被用来对事实数据进行分类和分组。维度表的每一行代表一个维度的属性或值,而每一列代表一个特定的维度。维度表的关键属性是其主键,它与事实表中的外键相匹配,用于在事实表和维度表之间建立关联。

下表对比了 OLTP 与 OLAP:

OLTPOLAP
应用类型事务型分析型
数据性质运营数据合并数据
定位应用程序主题分析
目的处理正在进行的业务任务有助于决策
事务频率频繁偶尔
操作类型CRUD读取大量数据
数据设计三范式非三范式
常见用法用于零售销售和其他金融交易系统常用于数据挖掘、销售和营销
响应时间响应时间是即时的响应时间从几秒到几小时不等
查询复杂度简单即时的查询复杂查询
使用模式重复使用临时使用
事务性质事务时间短、简单复杂查询
数据库大小千兆字节数据库大小TB 数据库大小

OLAP 数据库提供了一种分析存储在 DW 中的数据的方法,这种方式比在包含大量数据的 DW 上执行传统的基于 SQL 的查询更加灵活和有交互性。

运营产生和用于分析的数据
运营产生的数据是公司业务线正常运行产生的数据,存储在 OLTP 系统中。
分析所用的数据来自运营数据的采集和转换后的数据,存储在数据仓库中,通过 OLAP 系统查询分析,生成报表。

SMP 和 MPP

在大数据领域中,对称多处理(Symmetric Multiprocessing,SMP)和大规模并行处理(Massively Parallel Processing,MPP)是两种常见的处理架构,用于处理和分析大规模数据集。
对称多处理(SMP)

  • 对称多处理是一种共享存储器的处理架构,其中包含多个处理器核心(通常是对称的),这些核心共享系统的内存和其他资源。在SMP系统中,所有处理器核心可以访问相同的存储器和数据,因此可以同时处理和操作相同的数据集。这种架构适用于对数据进行并发处理和分析,但可能会受到内存带宽和共享资源的限制。

大规模并行处理(MPP)

  • 大规模并行处理是一种分布式处理架构,其中包含多个处理节点(通常是非对称的),每个节点都具有自己的处理器、内存和存储器。在MPP系统中,数据被分割成多个部分,并分配到不同的处理节点上并行处理。每个节点独立地处理其分配的数据部分,然后将结果合并以生成最终的分析结果。MPP系统通常具有良好的可扩展性和性能,适用于处理大规模数据集和复杂的分析任务。

总的来说,SMP适用于对数据进行并发处理和分析,而MPP则适用于处理大规模数据集和复杂的分析任务,具有更好的可扩展性和性能。在选择处理架构时,需要考虑数据规模、处理需求、性能要求以及系统成本等因素。
下图是 SMP 和 MPP 数据库设计的对比:

lambda 架构

Lambda架构是一种大数据处理架构,旨在通过使用批处理和实时流处理方法来处理海量数据。其想法是通过使用批处理获得全面、准确的批量数据视图,并平衡延迟、吞吐量、扩展和容错能力,同时使用实时流处理提供在线数据的视图(例如物联网设备、 Twitter 源或计算机日志文件)。
该架构通过包含批处理和流处理来同时满足查询历史数据和实时数据的需求,架构设计的三个关键原则如下:
双数据模型

  • Lambda 架构使用一种模型进行批处理(批处理层),另一种模型进行实时处理(流层)。这使得系统能够处理批量和实时数据,并以可扩展和容错的方式执行这两种类型的处理。

单一统一视图

  • Lambda 架构使用单个统一视图(称为应用层)向最终用户呈现批处理和实时处理的结果。这使得用户可以看到完整且最新的数据视图,即使数据正在由两个不同的系统处理。

解耦处理层

  • Lambda 架构将批处理层和实时处理层解耦,使它们可以独立扩展、单独开发和维护,从而实现灵活性和易于开发。

下图是 lambda 架构的概述:

  • 数据消费层:接入多个数据源的数据,包括属实时流数据和批数据
  • 流处理层:增量更新流数据,该层的数据可能存在数据质量问题
  • 批处理层:批处理层的数据是真实可靠的,会对流处理层的数据进行校验,批处理层的数据会进行大量的 ETL 任务。
  • 应用层:可以同时对外提供实时的可能存在数据质量问题的流数据和准确的批处理数据,默认对外提供批数据。

lambda 架构的缺点

  • **复杂:**需要同时维护实时和批处理两套系统
  • 实时处理性能有限:对于大量数据的实时处理不如 Kappa 架构
  • 对状态处理的支持有限:Lambda 架构专为无状态处理而设计,可能不太适合需要跨多个事件维护状态的应用程序。例如,一家零售商店,其推荐系统根据客户的浏览和购买行为推荐产品。如果该系统使用 Lambda 架构,单独处理每个事件而不维护状态,则可能会错过客户的购物旅程和意图。如果客户浏览鞋子,然后浏览袜子,然后浏览鞋油,无状态系统可能无法正确推荐相关商品,因为它不考虑事件的顺序。它还可能会推荐客户购物车中已有的商品。

总的来说,如果需要构建一个既可以处理批量数据又可以处理实时数据但需要提供单一统一数据视图的分布式系统,应该考虑 Lambda 架构。如果需要有状态处理或处理大量实时数据,您可能需要考虑 Kappa 架构。

Kappa 架构

与旨在处理实时和批量数据的 Lambda 架构不同,Kappa 旨在仅处理实时数据,该架构的三个关键原则:
实时处理

  • Kappa 架构专为实时处理而设计,这意味着事件在收到后立即进行处理,而不是稍后进行批量处理。这减少了延迟并使系统能够快速响应不断变化的条件。

单一事件流

  • Kappa 架构使用单个事件流来存储流经系统的所有数据。这有很好的可扩展性和容错能力,因为数据可以轻松地分布在多个节点上。

无状态处理

  • 在Kappa架构中,所有处理都是无状态的。这意味着每个事件都是独立处理的,不依赖于先前事件的状态。这使得扩展系统变得更容易,因为不需要跨多个节点维护状态。

下图是对 Kappa 架构的一个概述:

Kappa 架构的缺点
复杂

  • Kappa 架构涉及单个事件流和无状态处理,这比其他架构的实现和维护更加复杂。

批处理支持有限

  • Kappa架构是为实时处理而设计的,不容易支持历史数据的批量处理。如果需要执行批处理,可能需要考虑 Lambda 架构。

对即席查询的支持有限

  • 由于 Kappa 架构是为实时处理而设计的,因此它可能不太适合需要处理大量历史数据的即席查询。

总的来说,Kappa 架构是构建需要实时处理大量数据、需要可扩展、容错和低延迟的分布式系统的绝佳选择,比如说流媒体平台和金融交易系统。但是,如果需要执行批处理或支持即席查询,那么 Lambda 架构可能是更好的选择。

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

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

相关文章

微信小程序 发送消息 Token校验失败,请检查确认

如上图,文档中说的是 开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。…

bugku-web-decrypt

这里的提示解密后没有什么意义 这里下载文件包 得到一个index.php文件 得到代码 <?php function encrypt($data,$key) {$key md5(ISCC);$x 0;$len strlen($data);$klen strlen($key);for ($i0; $i < $len; $i) { if ($x $klen){$x 0;}$char . $key[$x];$x1;}for…

STM32之DHT11温湿度传感器

目录 一 DHT11温湿度传感器简介 1.1 传感器特点 1.2 传感器特性 1.3 传感器引脚说明 二 测量原理及方法 2.1 典型应用电路 2.2 单线制串行简介 2.2.1 串行接口 (单线双向) 2.2.2 数据示例 2.3 通信时序 三 单片机简介 3.1 STM32F103C8T6最小系统板 四 接线说明 …

【系统分析师】计算机网络

文章目录 1、TCP/IP协议族1.1 DHCP协议1.2 DNS协议1.3网络故障诊断 2、网路规划与设计2.1逻辑网络设计2.2物理网络设计2.3 分层设计 3、网络接入3.1 接入方式3.2 IPv6地址 4、综合布线技术5、物联网5.1物联网概念与分层5.2 物联网关键技术 6、云计算7、网络存储技术&#xff08…

Unity 中消息提醒框

Tooltip 用于ui布局 using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI;[ExecuteInEditMode()] // 可以在编辑模式下运行public class Tooltip : MonoBehaviour {public TMP_Text header; // 头部文本publi…

【opencv】示例-stiching_detailed.cpp 使用OpenCV进行图像拼接的整体流程

#include <iostream> // 引入输入输出流库 #include <fstream> // 引入文件流库&#xff0c;用于文件输入输出 #include <string> // 引入字符串库 #include "opencv2/opencv_modules.hpp" // 引入OpenCV模块 #include <opencv2/core/utility.h…

Spring Boot(二)— 自定义Spring Boot Starter

在Spring Boot中&#xff0c;自定义Spring Boot Starter是一个常见且强大的功能&#xff0c;它允许开发者为特定的功能或库创建自己的自动配置&#xff0c;从而简化集成过程。 1 前置知识 Spring Boot的事件为应用的启动和关闭提供了详细的上下文信息&#xff0c;使得开发者能…

【脚本】多功能Ubuntu临时授予用户sudo权限管理工具

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 设计原理和初衷可以看这里&#xff1a;【技巧】Ubuntu临时授予用户sudo权限&#xff0c;并在一定时间后自动撤销_ubuntu jianshao sudo-CSDN博客文章浏览阅读404次。非常实用_ubuntu jianshao sudohttps://blog.c…

mysql dll文件的缺失和Can‘t connect to MySQL server on ‘localhost‘ (10061)

个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔…

系统架构最佳实践 -- API网关架构设计

目录 1.什么是API网关&#xff1f; 2.API网关的核心功能 3.架构设计原则 4.API网关的实现方式 5.常见的API网关工具和框架 6.实际案例分析 API网关是现代微服务架构中的重要组件&#xff0c;它充当了前端和后端微服务之间的中介。本文将介绍API网关的架构设计原则和实现方…

Textarea的常用属性thymeleaf

文章目录 textareathymeleaf1.基础使用2.代码块的切换3.链接表达式1&#xff09;范例 4.前后端5.遍历1.th:each2.th:switch3.添加属性 组件替换 每周总结 textarea -webkit-scrollbar&#xff1a;width&#xff1a;0&#xff1b;让滚动条隐藏&#xff0c;宽度为0 resize&#x…

RUST语言字符串与字符数组操作

1.字符串转换为字符数组: //分配内存存储HellWorld并使用s指针指向该地址let mut s String::from("HelloWorld");println!("s> {}",s);//转换字符串为字符数组let bs.as_bytes(); 2.遍历字符数组 //遍历字符数组for c in b {println!("char of…

C语言简单的数据结构:单链表的有关算法题(2)

题目&#xff1a; 4. 单链表相关经典算法OJ题3&#xff1a;合并两个有序链表5. 循环链表经典应⽤-环形链表的约瑟夫问题6. 单链表相关经典算法OJ题5&#xff1a;分割链表 接着我们介绍后面的三道题&#xff0c;虽然代码变多了但我们的思路更加通顺了 4. 单链表相关经典算法OJ题…

DC-5渗透测试复现

DC-5渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-文件包含漏洞-弹shell- scren-4.0.5提权 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_3(192.168.85.134) 复现&#xff1a; 一.信息收集 nma…

MES生产管理系统:私有云、公有云与本地化部署的比较分析

随着信息技术的迅猛发展&#xff0c;云计算作为一种新兴的技术服务模式&#xff0c;已经深入渗透到企业的日常运营中。在众多部署方式中&#xff0c;私有云、公有云和本地化部署是三种最为常见的选择。它们各自具有独特的特点和适用场景&#xff0c;并在不同程度上影响着企业的…

EEG-GCNN 论文问题整理

auc是什么&#xff1f; AUC是指接收者操作特征曲线&#xff08;ROC曲线&#xff09;下的面积&#xff0c;用于评估分类模型的性能。AUC的取值范围在0到1之间&#xff0c;越接近1表示模型的性能越好&#xff0c;越接近0.5表示模型的性能越差。AUC的计算方法是通过计算ROC曲线下…

HiveQL练习(hive3.x)

零、准备工作 1. Hive环境安装 参见搭建Hive 3.x环境&#xff08;CentOS 9 Hadoop3.x&#xff09; 2. 准备数据 在虚拟机HOME目录创建如下文件内容&#xff1a; cd /root vi emp.csv内容如下&#xff1a; 7369,SMITH,CLERK,7902,1980/12/17,800,,20 7499,ALLEN,SALESMAN…

基于STM32的快递小车无人驾驶系统

目录 摘 要 一、绪论 1.1 背景和意义 1.1.1 背景 1.1.1 意义 1.2 国内外研究现状 二、小车设计方案 2.1 方案一 2.2 方案二 2.3 方案三 2.4 方案选择与论证 三、硬件设计方案 3.1 单片机最小系统 3.2 光耦隔离电路 3.3 电源模块电路 3.4 直流电机驱动电路 3.…

Lua脚本使用手册(Redis篇)

Lua脚本 **简介&#xff1a;**Lua是一种功能强大的&#xff0c;高效&#xff0c;轻量级&#xff0c;可嵌入的脚本语言。它是动态类型语言&#xff0c;通过使用基于寄存器的虚拟机解释字节码运行&#xff0c;并具有增量垃圾收集的自动内存管理&#xff0c;是配置&#xff0c;脚…

数据资产与数据要素的重要性及数据资产入表的实践指南

## 引言在当今快速发展的数字化时代&#xff0c;数据资产已经成为企业最宝贵的资源之一。数据资产不仅对企业的运营决策有着至关重要的影响&#xff0c;而且在企业的财务健康和市场竞争力方面扮演着核心角色。数据要素&#xff0c;作为构成数据资产的基本单元&#xff0c;其管理…