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

文章目录

  • 前言
  • 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 架构可能是更好的选择。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

杰发科技AC7840——CAN通信简介(5)_可变波特率设置

0. 简介 设置可变波特率时候,遇到2个坑,在此记录下来 使用该函数即可 can_time_segment_t bitrate2 s_canBitrate[CAN_BITRATE_250K]; CAN_DRV_SetBitrate(instance, &bitrate2); 1. 波特率指针注意不要空 查看设置波特率的接口,发现…

Pytest精通指南(09)利用Fixture给函数设置别名

文章目录 前言测试用例默认显示传递一个参数传递多个参数 利用Fixture修改测试函数名称传递一个参数传递多个参数 验证ids和params长度不一致修改Fixture函数名称 前言 在 pytest 中,pytest.fixture 装饰器用于定义可以在多个测试函数中重用的设置和清理代码。 name…

C/C++基础----内存相关

malloc分配内存 用法 参数为要开辟内存的大小&#xff08;字节为单位&#xff09;返回值为void*,所以要强转一下语法&#xff1a;malloc()动态开辟20个字节的内存&#xff0c;代码&#xff1a;#include <iostream>using namespace std;int main() {int *a (int *) mal…

安全加速SCDN带的态势感知能为网站安全带来哪些帮助

随着安全加速SCDN被越来越多的用户使用&#xff0c;很多用户都不知道安全加速SCDN的态势感知是用于做什么的&#xff0c;德迅云安全今天就带大家来了解下什么是态势感知&#xff0c;态势感知顾名思义就是对未发生的事件进行预知&#xff0c;并提前进行防范措施的布置&#xff0…

内网渗透-Earthworm的简单使用(内网穿透工具)

Earthworm的简单介绍&#xff08;一&#xff09; 文章目录 EarthWorm下载地址1. 普通网络 1.1 跳板机存在公网IP 1.1.1 网络环境1.1.2 使用方法1.1.3 流量走向 1.2 跳板机不存在公网IP&#xff0c;可出网 1.2.1 网络环境1.2.2 使用方法1.2.3 流量走向 2. 二级网络 2.1 一级跳…

系统架构最佳实践 -- 金融企业的资损问题介绍

什么是资损 资损通常来讲是指支付场景下的资金损失&#xff0c;这里可以从两个维度看 用户角度&#xff1a;多扣用户款导致用户资金损失&#xff0c;此问题一般需要通过客服等渠道反馈&#xff0c;可以把多的钱退给用户&#xff0c;但是很大程度上损失了用户体验&#xff1b; …

ESP32 S3音频开发

1. 音频硬件框架 Codec&#xff1a;音频编解码芯片&#xff0c;一种低功耗单声道音频编解码器&#xff0c;包含单通道 ADC、单通道 DAC、低噪声前置放大器、耳机驱动器、数字音效、模拟混音和增益功能。它通过 I2S 和 I2C 总线与 ESP32-S3-WROOM-1 模组连接&#xff0c;以提供独…

计算机视觉实验五——图像分割

计算机视觉实验五——图像分割 一、实验目标二、实验内容1.了解图割操作&#xff0c;实现用户交互式分割&#xff0c;通过在一幅图像上为前景和背景提供一些标记或利用边界框选择一个包含前景的区域&#xff0c;实现分割①图片准备②代码③运行结果④代码说明 2.采用聚类法实现…

64B/66B GT Transceiver 配置

一、前言 前一篇文章已经讲述了64B/66B的编码原理&#xff0c;此篇文章来配置一下7系列GT的64B/66B编码。并讲述所对应的例子工程的架构&#xff0c;以及部分代码的含义。 二、IP核配置 1、打开7 Series FPGAs Transceiver Wizards&#xff0c;选择将共享逻辑放置在example …

全局代理导致JetBrains IDE CPU占用高,jdk.internal.net.http.common

GoLand版本&#xff1a;2022.3.4 解决办法&#xff1a; 使用SOCKS代理代替HTTP代理 禁用Space和Code With Me插件 禁用 TLS V1.3&#xff0c;参考&#xff1a;https://stackoverflow.com/questions/54485755/java-11-httpclient-leads-to-endless-ssl-loop 参考 https://…

强大的压缩和解压缩工具 Keka for Mac

Keka for Mac是一款功能强大的压缩和解压缩工具&#xff0c;专为Mac用户设计。它支持多种压缩格式&#xff0c;包括7z、Zip、Tar、Gzip和Bzip2等&#xff0c;无论是发送电子邮件、备份文件还是节省磁盘空间&#xff0c;Keka都能轻松满足用户需求。 这款软件的操作简单直观&…

【OpenHarmony】XTS环境配置

零、参考 1、xts测试环境配置&#xff1a;https://www.yuque.com/u25440504/ehvzki/ik2fso 2、Windows安装Python、pip、easy_install的方法&#xff1a;https://pythonjishu.com/bmxqeisbkzgrpnn/ 3、Python中easy_install 和 pip 的安装及使用&#xff1a; https://blog.c…

C语言之offsetof实现分析(九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

做一个后台项目的架构

后台架构的11个维度 架构1&#xff1a;团队协助基础工具链的选型和培训架构2&#xff1a;搭建微服务开发基础设施架构3&#xff1a;选择合适的RPC框架架构4&#xff1a;选择和搭建高可用的注册中心架构5&#xff1a;选择和搭建高可用的配置中心架构6&#xff1a;选择和搭建高性…

React 19 的新增功能:Action Hooks

React 是前端开发领域最流行的框架之一。我喜欢 React 是因为它背后的团队和社区对它的热情。当社区提出新功能和改进的需求时&#xff0c;团队会倾听&#xff0c;React 的未来是令人兴奋和有趣的。 让我们来看一下 React 19 中令开发人员提升开发效率的新特性。对于每个钩子&…

STL--list双向链表

功能 将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据元素的数据域&#xff0…

FJSP:袋鼠群优化(Kangaroo Swarm Optimization ,KSO)算法求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

传统图机器学习的特征工程-连接

概念及应用场景 通过已知连接补全未知连接 将link编码成为向量输入到机器学习模型中&#xff1a; 1.直接提取link的特征&#xff0c;构建D维向量 2.把link两段节点的D维向量拼在一起&#xff08;丢失了link本身的连接结构信息&#xff09; 应用&#xff1a; 1.客观静态图…

webrtc中的Track,MediaChannel,MediaStream

文章目录 Track,MediaChannel,MediaStream的关系MediaStream的创建流程创建VideoChannel的堆栈创建VideoStream的堆栈 sdp中媒体参数信息的映射sdp中媒体信息参数设置体系参数设置流程参数映射体系 Track,MediaChannel,MediaStream的关系 Audio/Video track&#xff0c;MediaC…

Spring Boot | Spring Boot中进行 “文件上传” 和 “文件下载”

目录: 一、SpringBoot中进行 " 文件上传" :1.编写 "文件上传" 的 “表单页面”2.在全局配置文件中添加文件上传的相关配置3.进行文件上传处理&#xff0c;实现 "文件上传" 功能4.效果测试 二、SpringBoot中进行 "文件下载" :“英文名称…