前言
联机事务处理OLTP(on-line transaction processing)和 联机分析处理OLAP(On-Line Analytical Processing)。
OLTP,主要是面向传统的“增删改查”事务系统,数据大都是以实体对象模型来存储数据,并满足3NF(数据库第三范式),追求高并发场景下的快速响应,满足ACID(原子性、一致性、隔离性、持久性)特性,适合电子商务、银行和金融交易等应用。OLTP处理的数据是实时的、明细的、实时性的、可变性数据,主要用于常规业务操作。
OLAP,主要是面向决策分析场景,采用维度建模思想构建模型,追求大规模聚合、分析和查询的性能表现。主要使用多维数据分析技术和聚合算法,将大量数据划分成各种不同的角度,从而方便分析数据。OLAP处理的数据通常来自于企业内部的数据仓库或者其他分散的信息资源。
OLAP的核心概念
(1)立方体(Cube):由维度构建出来的多维空间,包含了所有要分析的基础数据,所有的聚合数据操作都在立方体上进行。这里所说的立方其实就是多维模型中间的事实表(Fact Table),它会引用所有相关维的维主键作为自身的联合主键,加上度量(Measure)和计算度量(Calculated Measure)就组成了立方的结构。
(2)维度(Dimension): 维度是描述与业务主题相关的一组属性,单个属性或属性集合可以构成一个维。如时间、地理位置、年龄和性别等都是维度,维度可以理解为立方体的一个轴,要注意的是有一个特殊的维度,即度量值维度。
(3)维的层次(Level of Dimension): 一个维往往可以具有多个层次,例如时间维度分为年、季度、月和日等层次,地区维可以是国家、地区、省、市等层次。这里的层次表示数据细化程度,对应概念分层。上卷操作就是由低层概念映射到高层概念,概念分层除了可以根据概念的全序和偏序关系确定外,还可以通过对数据进行离散化和分组实现。
(4)维的成员(Member of Dimension): 构成维度的基本单位,若维是多层次的,则不同的层次的取值构成一个维成员,部分维层次同样可以构成维度成员,例如“某年某季度”、“某季某月”等都可以是时间维的成员。
(5)度量(Measure): 表示事实在某一个维成员上的取值。度量是用于描述事件的数字尺度,例如开发部门汉族男性有39人,就表示在部门、民族、性别三个维度上,企业人数的事实度量,计算度量是通过度量计算得到的。
(6)事实表(Fact Table): 存放度量值的表,同时存放了维表的外键,所有的分析用的数据最终都是来自与事实表。
(7)维表(Dimension table): 一个维度对应一个或者多个维表。一个维度对应一个维表时数据的组织方式就是采用的星型模式,对应多个维表时就是采用雪花模式,雪花模式是对星型模式的规范化。简言之,维表是对维度的描述。
OLAP的常见操作
差异