OLAP 和 OLTP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • OLTP与OLAP的介绍
    • OLTP(on-line transaction processing):联机事务处理
    • OLAP(On-Line Analytical Processing):联机分析处理
    • 对比
  • OLAP 联机分析处理
    • 1. 什么是OLAP
    • 2.OLAP的核心概念
    • 3. OLAP和基本操作
      • 1 钻取(Drill-down)
      • 2 上卷(Roll-up)
      • 3 切片(Slice)
      • 4 切块(Dice)
      • 5 旋转(Pivot)
    • 4.OLAP的分类
    • 5. 在OLAP系统中,常使用分区技术、并行技术
      • 分区技术
      • 并行技术
      • 分开设计与优化
    • 在这里插入图片描述 6.常见OLAP引擎对比
    • 7.OLAP vs BI工具


OLTP与OLAP的介绍

数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。

  • 通俗来讲的话就是:OLTP主要是面向传统的“增删改查”事务系统,数据大都是以实体对象模型来存储数据,并满足3NF(数据库第三范式),追求高并发场景下的快速响应。
  • 而OLAP是面向决策分析场景,采用维度建模思想构建模型,追求大规模聚合分析查询的性能表现。

在这里插入图片描述

OLTP(on-line transaction processing):联机事务处理

  • OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
  • OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
    在这里插入图片描述

OLAP(On-Line Analytical Processing):联机分析处理

  • OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
  • OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。

在这里插入图片描述
在这里插入图片描述

对比

在这里插入图片描述

在这里插入图片描述

OLAP 联机分析处理

1. 什么是OLAP

  • OLAP 是 OnLine Analytical Processing 的缩写,即联机分析处理。
  • OLAP 对业务数据执行多维分析,并提供复杂计算、趋势分析和复杂数据建模的能力
  • OLAP 主要用于支持企业决策管理分析,是许多商务智能(BI)应用程序背后的技术。
  • OLAP 使最终用户可以对多个维度的数据进行即席分析,从而获取他们所需知识,以便更好地制定决策。
  • OLAP 技术已被定义为实现 “ 快速访问共享的多维信息 ” 的能力。

2.OLAP的核心概念

  • 立方体(Cube):由维度构建出来的多维空间,包含了所有要分析的基础数据,所有的聚合数据操作都在立方体上进行。这里所说的立方其实就是多维模型中间的事实表(Fact Table),它会引用所有相关维的维主键作为自身的联合主键,加上度量(Measure)和计算度量(Calculated Measure)就组成了立方的结构。

  • 维度(Dimension): 维度是描述与业务主题相关的一组属性,单个属性或属性集合可以构成一个维。如时间、地理位置、年龄和性别等都是维度。维度可以理解为立方体的一个轴。要注意的是有一个特殊的维度,即度量值维度。

  • 维的层次(Level of Dimension): 一个维往往可以具有多个层次,例如时间维度分为年、季度、月和日等层次,地区维可以是国家、地区、省、市等层次。这里的层次表示数据细化程度,对应概念分层。后面介绍的上卷操作就是由低层概念映射到高层概念。概念分层除了可以根据概念的全序和偏序关系确定外,还可以通过对数据进行离散化和分组实现。

  • 维的成员(Member of Dimension): 构成维度的基本单位,若维是多层次的,则不同的层次的取值构成一个维成员。部分维层次同样可以构成维度成员,例如“某年某季度”、“某季某月”等都可以是时间维的成员。

  • 度量(Measure): 表示事实在某一个维成员上的取值。度量是用于描述事件的数字尺度,例如开发部门汉族男性有39人,就表示在部门、民族、性别三个维度上,企业人数的事实度量。计算度量是通过度量计算得到的。

  • 事实表(Fact Table): 存放度量值的表,同时存放了维表的外键。所有的分析用的数据最终都是来自与事实表。

  • 维表(Dimension table): 一个维度对应一个或者多个维表。一个维度对应一个维表时数据的组织方式就是采用的星型模式,对应多个维表时就是采用雪花模式。雪花模式是对星型模式的规范化。简言之,维表是对维度的描述。

3. OLAP和基本操作

OLAP的操作是查询,也就是数据库的 SELECT 操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG 等聚合函数。OLAP 正是基于多维模型定义了一些常见的面向分析的操作类型是这些操作显得更加直观。

  • OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot),下面还是以数据立方体为例来逐一解释下:
    在这里插入图片描述

1 钻取(Drill-down)

在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,

  • 比如通过对2010年第二季度的总销售数据进行钻取来查看第二季度4、5、6每个月的消费数据,
  • 如下图;当然也可以钻取北京市来查看朝阳区、海淀区、大兴……这些区的销售数据。

在这里插入图片描述

2 上卷(Roll-up)

钻取的逆操作,即从细粒度数据向高层的聚合,

  • 如将北京、上海和深圳的销售数据进行汇总来查看京沪深地区的销售数据,如下图。
    在这里插入图片描述

3 切片(Slice)

选择维中特定的值进行分析,比如只选择书籍产品的销售数据。

在这里插入图片描述

4 切块(Dice)

与切片类似,只是将单个特定值变成多个特定值,比如选择书籍和服装的销售数据。

在这里插入图片描述

5 旋转(Pivot)

即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。

在这里插入图片描述

4.OLAP的分类

按数据存储方式(建模类型)分类,可分为 MOLAP、ROLAP、HOLAP等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 在OLAP系统中,常使用分区技术、并行技术

分区技术

在OLAP系统中的重要性主要体现在数据库管理上,比如数据库加载,可以通过分区交换的方式实现,备份可以通过备份分区表空间实现,删除数据可以通过分区进行删除,至于分区在性能上的影响,它可以使得一些大表的扫描变得很快(只扫描单个分区)。另外,如果分区结合并行的话,也可以使得整个表的扫描会变得很快。总之,分区主要的功能是管理上的方便性,它并不能绝对保证查询性能的提高,有时候分区会带来性能上的提高,有时候会降低。

并行技术

除了与分区技术结合外,在Oracle 10g中,与RAC结合实现多节点的同时扫描,效果也非常不错,可把一个任务,如select的全表扫描,平均地分派到多个RAC的节点上去。
在OLAP系统中,不需要使用绑定(BIND)变量,因为整个系统的执行量很小,分析时间对于执行时间来说,可以忽略,而且可避免出现错误的执行计划。但是OLAP中可以大量使用位图索引,物化视图,对于大的事务,尽量寻求速度上的优化,没有必要像OLTP要求快速提交,甚至要刻意减慢执行的速度。
绑定变量真正的用途是在OLTP系统中,这个系统通常有这样的特点,用户并发数很大,用户的请求十分密集,并且这些请求的SQL 大多数是可以重复使用的。
对于OLAP系统来说,绝大多数时候数据库上运行着的是报表作业,执行基本上是聚合类的SQL 操作,比如group by,这时候,把优化器模式设置为all_rows是恰当的。 而对于一些分页操作比较多的网站类数据库,设置为first_rows会更好一些。 但有时候对于OLAP 系统,我们又有分页的情况下,我们可以考虑在每条SQL 中用hint。 如:
Select a.* from table a;

分开设计与优化

在设计上要特别注意,如在高可用的OLTP环境中,不要盲目地把OLAP的技术拿过来用。
如分区技术,假设不是大范围地使用分区关键字,而采用其它的字段作为where条件,那么,如果是本地索引,将不得不扫描多个索引,而性能变得更为低下。如果是全局索引,又失去分区的意义。
并行技术也是如此,一般在完成大型任务时才使用,如在实际生活中,翻译一本书,可以先安排多个人,每个人翻译不同的章节,这样可以提高翻译速度。如果只是翻译一页书,也去分配不同的人翻译不同的行,再组合起来,就没必要了,因为在分配工作的时间里,一个人或许早就翻译完了。
位图索引也是一样,如果用在OLTP环境中,很容易造成阻塞与死锁。但是,在OLAP环境中,可能会因为其特有的特性,提高OLAP的查询速度。MV也是基本一样,包括触发器等,在DML频繁的OLTP系统上,很容易成为瓶颈,甚至是Library Cache等待,而在OLAP环境上,则可能会因为使用恰当而提高查询速度。

在这里插入图片描述 6.常见OLAP引擎对比

在这里插入图片描述

7.OLAP vs BI工具

BI是Business Intelligence的英文缩写,中文解释为商务智能,是利用数据提高决策质量的技术集合,是从大量的数据中钻取信息与知识的过程。

OLAP和BI常常在一起出现,OLAP是BI工具的一种底层技术。BI工具通常可以对接OLAP系统,但不限于此,也可以直接与其他数据库、存储系统对接。在维度建模数据仓库中,OLAP/BI工具和数据仓库的关系则是这样

在这里插入图片描述

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

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

相关文章

SOLIDWORKS在教育领域的应用

随着科技的飞速发展和数字化浪潮的推进,SOLIDWORKS作为一款强大的三维设计软件,其应用领域已经不仅局限于工程设计和制造行业,还逐渐渗透到教育领域中,成为培养学生实践能力和创新思维的重要工具。本文将探讨SOLIDWORKS在教育领域…

MySQL基础学习内容指南

MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),对于数据库初学者来说,掌握MySQL的基础知识是非常重要的。本文将为您介绍MySQL基础学习的核心内容,帮助您快速入门并提升数据库操作能力。 一、MySQL概述 在开…

【JavaEE】_Spring MVC项目获取Cookie

目录 1. Cookie与Session基础知识 1.1 Cookie与Session的区别 2. 使用servlet原生方法获取Cookie 2.2 关于λ表达式遍历法的空指针问题 2.3 Cookie的伪造 3. 使用Spring注解获取Cookie 3.1 获取单个Cookie 3.2 获取多个Cookie 1. Cookie与Session基础知识 在本专栏HTT…

AcWing785. 快速排序

题目 给定你一个长度为 n 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示…

CICD流水线 发布公用jar到maven私仓

3.1 发布公用jar到Maven私仓 1.选择流水线 2.新建流水线 3.选择模版 4.选择代码仓库 5. 调整构建命令 6.新增一个新阶段为 ”发送通知“,这里以邮件通知为例,保存之后,运行该流水线,对应jar就会自动发到我们私仓,并之…

【计算机网络】会话层

负责维护两个会话主机之间链接的建立、管理和终止,以及数据的交换。 会话控制:决策该由谁来传递数据 令牌管理:禁止双方同时执行一个关键动作 同步功能:在一个长的传输过程中设置一些断点,以便系统崩溃后能恢复至崩…

中药配方颗粒备案信息数据库<2.5W+备案>

中药配方颗粒备案信息是指中药配方颗粒生产企业向国家药品监督管理局申报备案的相关信息。备案信息包括中药配方颗粒的名称、备案号、备案时间、备案状态、生产企业、生产地址、规格、包装、执行标准、保质期、不良反应检测、备案省局等信息。 通过对中药配方颗粒备案信息的查…

【Linux】正则表达式实验操作实例

正则表达式是一种强大的工具,用于在文本中查找、匹配和替换特定的字符串模式。 实验目的 掌握正则表达式的表达方式掌握grep/egrep命令的用法掌握sed 命令的用法掌握awk命令的用法 正则表达式 实验目的实验内容实验过程创建grep文件来进行如下操作用sed命令完成下列…

春招-实战项目冲刺直播课

春招-实战项目冲刺直播课 CCtalk 丰富多元的综合内容平台-专业的知识分享与在线教育平台https://www.cctalk.com/m/group/91161801

蓝桥杯刷题-13-子矩阵-二维滑动窗口 ಥ_ಥ

给定一个 n m (n 行 m 列)的矩阵。 设一个矩阵的价值为其所有数中的最大值和最小值的乘积。求给定矩阵的所有大小为 a b (a 行 b 列)的子矩阵的价值的和。 答案可能很大,你只需要输出答案对 998244353 取模后的结果。…

Redis 常见面试题

目录 1. Redis是什么?2. Redis优缺点?3. Redis为什么这么快?4. 既然Redis那么快,为什么不用它做主数据库,只用它做缓存?5. Redis的线程模型?6. Redis 采用单线程为什么还这么快?7. R…

Linux——静态库 共享库

1.库文件 1).库文件 库是一组预先编译好的方法的集合; Linux系统存储库的位置一般在/lib 和 /usr/lib (64位系统/usr/lib64) 库的头文件放在/usr/include 2).库的分类 静态库:libxxx.a(命名规则) 共享库:libxxx.so(命名规则) 3).准备文件: //add.c int add(int x,int y) { re…

localStorage封装代码

localStorage封装 JSON.stringfy()和JSON.parse() JSON.stringfy(): 将 JS 对象转化为 JSON 字符串。 const obj { name: John, age: 30 }; const jsonString JSON.stringify(obj); console.log(jsonString); // {"name":"John","age":30}J…

consul: 集群搭建和数据中心通信

基于 docker-compose.yml 搭建 1 )docker-compose.yml 的配置 version: 3 services:server1:image: consul:latestcommand: "agent -server -config-file/consul/config/consul.json -nodeconsul-server1 -bootstrap-expect5"volumes:- ./data/server1:/…

vue结合Elempent-Plus/UI穿梭框更改宽度以及悬浮文本显示

由于分辨率不同会导致文本内容显示不全,如下所示: 因此需要 1、悬浮到对应行上出现悬浮信息 实现代码如下所示: 这里只演示Vue3版本代码,Vue2版本不再演示 区别就在插槽使用上Vue3使用:#default“”;Vu…

vitepress系列-04-规整sideBar左侧菜单导航

规整左侧菜单导航 新建navConfig.ts 文件用来管理左侧导航菜单: 将于其他的配置分开,避免config.mts太大 在config目录下,新建 sidebarModules文件目录用来左侧导航菜单 按模块进行分类: 在config下新建sidebarConfig.ts文件&…

【随笔】Git 高级篇 -- 整理提交记录(上)cherry-pick(十五)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Android 如何通过屏幕大小来适配不同大小的图片

可以使用Android中的dp(密度无关像素)单位来设置不同屏幕密度下的图片大小。dp是Android中的一种尺寸单位,它与屏幕密度无关,只与字体大小有关。在开发过程中,可以使用dp来设置布局和控件的大小,以便在不同的屏幕密度下保持一致的…

阻塞/非阻塞IO、同步/异步IO的区别

阻塞/非阻塞IO、同步/异步IO的区别 阻塞/非阻塞IO和同步/异步IO是描述IO操作(输入/输出操作)的两种不同方式,它们在处理IO操作时具有不同的特性和应用场景。 阻塞/非阻塞IO 阻塞IO和非阻塞IO主要关注的是程序在等待IO操作完成时的行为。 阻…

Python爬虫入门指南

随着大数据时代的到来,网络爬虫技术变得越来越重要。Python作为一种功能强大的编程语言,非常适合用来编写爬虫程序。本文将带领大家入门Python爬虫,从基础知识讲起,逐步深入实践。 一、爬虫基础知识 网络爬虫,又称为…