OLAP (Online analytical processing)[联机分析处理]

  1. 起源

    • 数据库概念最初源于1962年Kenneth Iverson发表的名为“A Programming Language” (APL)的著作,它第一次提出了处理操作和多维变量的的数学表达式,后来APL语言由IBM实现。
    • 随后数据库之父Edgar F. Codd提出了著名的关系数据模型理论《A Relational Model of Data for Large Shared Data Banks 》,为后面数据库发展奠定基础。
    • 第一款OLAP产品Express于1975年问世,随着被Oracle收购后繁荣发展了30余年,最后由继任者Oracle 9i替代。这么多年过去,基本的OLAP理念和数据模型仍然未变。
    • OLAP这个名词是数据库之父Edgar F. Codd于1993年在文章《Providing OLAP (On-Line Analytical Processing) to User-Analysts: An IT Mandate》提出,他总结了OLAP产品的12个原则,随后OLAP产品相继问世并逐渐形成今天的格局。
  2. 核心概念

      • 维(Dimension): 人们观察事物的视角, 如时间、地理位置、年龄和性别等, 是单一角度概念。
      • 维的层次(Lever of Dimension): 表示维度概念基础上进一步的细分, 如时间可以细分为年、季度、月三个层次。
      • 维成员(Member of Dimension): 表示维不可再细分的原子取值。
      • 度量(Measure): 表示在这个维成员上的取值。
    • 操作

      • 下探(Drill down): 维度是有层次的, 下探表示进入维度的下一层, 将汇总数据拆分到下一层所在细节数据信息, 如下图从第二急速下探到看4、5、6月的明细数据。

      • 上钻(Drill up): 下探的反向操作, 回到更高汇聚层的汇总数据。

      • 切片(Slice): 切片可以理解成把立体按某一个维度进行切分, 切块就是按一个范围(区间)来做切分。

      • 旋转(Pivot): 维的行列位置切换, 换一个视角分析数据。

  3. 分类

    • MOLAP (Multi-dimensional OLAP)

      • OLAP发源最初形态: 以多维数组(Multi-dimension Array) 存储模型的 OLAP, 某些方面也等同于OLAP。

      • 特点:

        • 数据需要预计算(pre-computation), 然后把预计算之后的结果 (cube) 存在多维数组里。
      • 优点:

        • cube 包含所有维度的聚合结果, 所有查询速度非常快。
        • 计算结果数据占用的磁盘空间相对关系型数据库更小。
      • 缺点:

        • 空间和时间开销大。

          • update cube 的时间跟计算程度(degree)相关, 计算时间随着维度增加↑而大幅↑, 此外预计算还会造成数据占用急剧膨胀。
        • 查询灵活度比较低。

          • 需要提前设计维度模型, 查询分析的内容仅限于这些指定维度, 增加维度需要重新计算。
    • ROLAP (Relational OLAP)

      • 基于关系模型存放数据, 一般要求事实表(fact table) 和 维度表(dimension table) 按一定关系设计, 它不需要预计算, 适用标准SQL就可以根据需要即时查询不同维度数据。
      • 优点
        • 扩展性强, 适用于维度数量多的模型, MOLAP对于维度多的模型预计算慢, 空间占用大。
        • 更适合处理non-aggregate事实, 如文本描述。
        • 基于row存储, 数据更容易做权限管理。
      • 缺点
        • 因为是即时计算,查询响应时间一般比预计算的MOLAP长。
    • HOLAP (Hybrid)

      • 业界还没有一致的定义,它是MOLAP和ROLAP类型的混合运用 。
      • 细节的数据以ROLAP的形式存放,更加方便灵活。
      • 高度聚合的数据以MOLAP的形式展现,更适合于高效的分析处理。
      • 公司使用HOLAP的目的是根据不同场景来利用不同OLAP的特性。
  4. 业界产品

    • MOLAP 产品有 Cognos Powerplay, Oracle Database OLAP Option, MicroStrategy, Microsoft Analysis Services, Essbase, TM1, Jedox ,icCube和kylin等
    • ROLAP产品有Vertica、Amazon Redshift、Google Dremel、Hulu Nesto、Presto、Druid、Impala、Greenplum、HAWQ和Doris等。
  5. 国内发展状态

    • 除BAT等大厂会自研OLAP产品外,其他中小互联网公司普遍拥抱开源,会使用Kylin、Presto、impala、Druid和Greenplum等开源技术来实现OLAP分析查询业务。

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

  • 描述

    • 表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主 。
    • 在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。
    • 典型的OLTP系统有电子商务系统、银行、证券等,如美国eBay的业务数据库,就是很典型的OLTP数据库。
  • 最容易出现瓶颈的地方

  • CPU

    • CPU出现瓶颈常表现在逻辑读总量与计算性函数或者是过程上,逻辑读总量等于单个语句的逻辑读乘以执行次数,如果单个语句执行速度虽然很快,但是执行次数非常多,那么,也可能会导致很大的逻辑读总量。

    • 设计的方法与优化的方法就是减少单个语句的逻辑读,或者是减少它们的执行次数。

    • 一些计算型的函数,如自定义函数、decode等的频繁使用,也会消耗大量的CPU时间,造成系统的负载升高

    • 正确的设计方法或者是优化方法,需要尽量避免计算过程,如保存计算结果到统计表就是一个好的方法。

  • 磁盘

    • 磁盘的承载能力一般取决于它的IOPS(Input/Output Operations Per Second)处理能力. 因为在OLTP环境中,磁盘物理读一般都是db file sequential read,也就是单块读,但是这个读的次数非常频繁。
    • 如果频繁到磁盘子系统都不能承载其IOPS的时候,就会出现大的性能问题。
  • 常用设计与优化方式:

    • Cache

      • Cache决定了很多语句不需要从磁盘子系统获得数据。
    • B-tree 索引技术

      • 在索引使用方面,语句越简单越好,这样执行计划也稳定,而且一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、MV技术、并行技术及位图索引。
      • 因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生。
    • OLTP 系统是一个数据块变化非常频繁,SQL 语句提交非常频繁的系统。

    • 对于数据块来说,应尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用变量绑定技术来达到SQL 重用,减少物理I/O 和重复的SQL 解析,从而极大的改善数据库的性能。

    • 影响性能除了绑定变量,还有可能是热快(hot block)

    • 当一个块被多个用户同时读取时,Oracle 为了维护数据的一致性,需要使用Latch来串行化用户的操作。
    • 当一个用户获得了latch后,其他用户就只能等待,获取这个数据块的用户越多,等待就越明显。
    • 这就是热快的问题。 这种热快可能是数据块,也可能是回滚端块。
    • 对于数据块来讲,通常是数据库的数据分布不均匀导致,如果是索引的数据块,可以考虑创建反向所以来达到重新分布数据的目的,对于回滚段数据块,可以适当多增加几个回滚段来避免这种争用。

细说 OLAP 与 OLTP的更多相关文章

  1. OLAP vs OLTP: what makes the difference

    OLAP vs OLTP: what makes the difference OLPT and OLAP are complementingtechnologies. You can't live ...

  2. OLAP、OLTP的介绍和比较 via csdn

    OLAP.OLTP的介绍和比较 数据处理大致可以分成两大类: OLTP(On-Line Transaction Processing)联机事务处理 也称为面向交易的处理系统,其基本特征是顾客的原始数据 ...

  3. OLAP和OLTP的区别(基础知识) 【转】

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 ( ...

  4. OLAP和OLTP的区别

    OLAP(On-Line Analytical Processing)联机分析处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果 ...

  5. day 59 MySQL之锁、事务、优化、OLAP、OLTP

    MySQL之锁.事务.优化.OLAP.OLTP   本节目录 一 锁的分类及特性 二 表级锁定(MyISAM举例) 三 行级锁定 四 查看死锁.解除锁 五 事务 六 慢日志.执行计划.sql优化 七 ...

  6. olap和Oltp(转)

    OLAP和OLTP的区别(基础知识) 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响, ...

  7. OLAP、OLTP的介绍和比较

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  8. Oracle OLAP 与 OLTP 介绍

    文章出处:http://blog.csdn.net/tianlesoftware/article/details/5794844 感谢原作者的分享. 数据处理大致可以分成两大类:联机事务处理OLTP( ...

  9. OLAP和OLTP基础知识

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

随机推荐

  1. Serializable的理解和使用 -----转载

    1.定义 这是一个接口,当一个类实现这个接口后,这个类就变成了一个可序列化的类,它就可以被写入流,保存起来,然后也可以用流读取,反序列化. 一般情况下,一个对象会随着程序的执行完成而消失,而有时我们需 ...

  2. 【剑指Offer面试编程题】题目1510:替换空格--九度OJ

    题目描述: 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 输入: 每个 ...

  3. android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

    这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...

  4. Caused by: java.net.ConnectException: Connection timed out: connect

    发生这种情况的原因是:连接的路径发生错误

  5. 前端面试题CSS一(题目来源网络)

    一.什么是html5语义化? 使用合理,正确的html标签格式化文档. 二.CSS样式优先级? 就近原则,行内>内联>外联 三 什么是盒模型? 主要分为两种,w3c标准盒模型,IE标准模型 ...

  6. 071、Java面向对象之使用private封装属性

    01.代码如下: package TIANPAN; class Book { // 定义一个新的类 private String title; // 书的名字 private double price ...

  7. Redis使用守护进程启动sentinel并指定其日志目录

    正常redis-server可以通过配置文件来指定守护进程启动以及指定日志路径,但sentinel就不一样了.正常启动redis的sentinel时,进程会直接在前台跑,一退出sentinel进程就关 ...

  8. VS 右键属性闪一下啥也打不开问题

    unity项目,从vs项目右键属性闪一下啥也打不开的问题这个是因为工程是unity管理的,里面有个插件默认设定不可查看修改属性修改:vs中打开“工程”->"选项"中(修改后这 ...

  9. python内置函数二

    issubclass(a,b)   判断a类是否属于b的子类    返回为布尔值 locals()   显示局部变量 max()   取最大值 min()   取最小值 zip()    拉链方法  ...

  10. Lesson 45 Of men and galaxies

    In man's early days, competition with other creatures must have been critical. But this phase of our ...