zoukankan      html  css  js  c++  java
  • 大数据-浅谈OLTP与OLAP

    两者定义

    当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。
    OLTP:Online Transaction Processing联机事务处理,强调实时处理、快速响应,应用于各类交易系统、管理系统。
    OLAP:Online Analytical Processing联机分析处理,强调理解数据,面向于决策分析。OLAP委员会对联机分析处理的定义为:使分析人员、管理人员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业维特性的信息进行快速、一致、交互的存取,从而获得对数据更深入了解的一类软件技术。经典应用譬如著名的啤酒与尿布案例。

    基本差别

    OLTP与OLAP面向不同的应用场景和处理需求,对各项指标都有不同的要求。简言之,OLTP主要进行操作型处理,OLAP主要进行分析型处理。
    当我们去设计并实现一个业务系统时,通常会对系统的响应时间、吞吐量、并发量提出较高的要求。对于数据的各级缓存、读写分离是常见的设计。
    而OLAP强调对数据的分析挖掘,从多维的视角观察数据、分析数据并做出决策。OLAP的基本多维分析操作有钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。

    数据库与数据仓库

    数据库:是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里面有很多字段。字段一字排开,对数据就一行一行的写入表中。数据库的表,在于能够用二维表现多维的关系。如:oracle、DB2、MySQL、Sybase、MSSQL Server等。
    数据仓库:是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现存放数据的地方。和数据库相比,数据仓库要比数据库更加庞大,主要存储历史数据,且不可更新、经常冗余,所涉及的操作主要是数据的查询。
    数据仓库并不能取代数据库,两者面向不同的应用场景,是相辅相成的关系。

    典型的业务数据库设计——RABC

    计算机相关专业学生在初步学习数据库时,想必都读过《数据库系统概论》这本书。当我们对业务系统进行数据库设计时,主要运用实体-关系(E-R)模型(这种设计理念,是不是也能归类为面向对象设计?)。我们从具体业务中抽象出实体,以其相互之间的关系,建立E-R模型,反馈到数据库软件。设计业务数据库时,会相对注重规范性。《数据库系统概论》提到的范式概念既是对数据库设计的规范。因为只有足够规范、抽象,才能保证实时操作数据库的准确、安全、灵活关联。虽然有时,为了数据的快速读取,也会牺牲一点规范。

    上图是一个基于RABC的权限系统数据库E-R模型图。其中抽象出用户、角色、权限、操作、资源5个实体。可以建立表为:用户表、角色表、权限表、操作表、资源表、用户-权限表、用户-角色表、角色-权限表。
    为了增加这个权限系统的响应速度,我们可以针对具体的业务查询语句,在对应表上建立索引。《MySQL45讲》这本书中给出了很好的数据库优化示例。
    另外,根据传统的权限系统设计,通常会在鉴权中加一步缓存,若能从缓存中读取到缓存结果,则不需要再从业务数据库中查询,加快鉴权速度。

    关于数据仓库的几点问题

    宽表or窄表?

    宽表就是字段比较多的表,包含的维度层次比较多,造成冗余也比较多,毁范式设计,但是利于取数统计,而窄表往往对于OLTP比较合适,符合范式设计原则。窄表对于增删改查很方便,宽表则有利于数据统计。

    雪花模型、星型模型

    星型模是一种多维的数据关系,它由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。
    当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。雪花模型更加符合数据库范式,减少数据冗余,但是在分析数据的时候,操作比较复杂,需要join的表比较多所以其性能并不一定比星型模型高。
    两者对比

    看到这里,其实也很明显了,星型模型是数据仓库建模的宠儿。

    参考链接

    https://baike.baidu.com/item/%E8%81%94%E6%9C%BA%E5%88%86%E6%9E%90%E5%A4%84%E7%90%86/423874?fr=aladdin

    https://baike.baidu.com/item/OLTP/5019563?fr=aladdin

    https://blog.csdn.net/maiduiyizu/article/details/80371410

    https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/381916?fr=aladdin

    https://www.cnblogs.com/Leo_wl/p/8515794.html

    https://msd.misuland.com/pd/3094725972029604104

  • 相关阅读:
    格式化数字,将字符串格式的数字,如:1000000 改为 1 000 000 这种展示方式
    jquery图片裁剪插件
    前端开发采坑之安卓和ios的兼容问题
    页面消息提示,上下滚动
    可以使用css的方式让input不能输入文字吗?
    智慧农村“三网合一”云平台测绘 大数据 农业 信息平台 应急
    三维虚拟城市平台测绘 大数据 规划 三维 信息平台 智慧城市
    农业大数据“一张图”平台测绘 大数据 房产 国土 农业 信息平台
    应急管理管理局安全生产预警平台应急管理系统不动产登记 测绘 大数据 规划 科教 三维 信息平台
    地下综合管廊管理平台测绘 大数据 地下管线 三维 信息平台
  • 原文地址:https://www.cnblogs.com/StrayLesley/p/12125777.html
Copyright © 2011-2022 走看看