OLAP 和 OLTP

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


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工具和数据仓库的关系则是这样

在这里插入图片描述

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值