编程知识 cdmana.com

大数据OLAP系统(1)——概念篇

1.1 什么是OLAP?

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

1.2 为什么要多维分析?

业务其实是一个多维活动。企业通过考虑许多变量来跟踪其业务活动,在电子表格上跟踪这些变量时,将它们设置在轴(x和y)上。例如,可以在一年的时间内按月跟踪销售额,其中可以在y轴上显示销售指标,而在x轴上可以显示月份。而要分析业务的健康状况并计划未来的活动,必须连续跟踪许多变量组或参数。例如,一个业务至少要考虑以下方面:客户,地点,期间,销售人员和产品。这些维度构成了公司计划,分析和报告活动的基础。它们共同代表了“整个”业务状况,为所有业务计划、分析和报告活动奠定了基础。

1.3 OLAP的起源

OLAP这个名词最早是在1993年,由被称为“关系数据库之父”的Edgar F. Codd在他的白皮书《Providing OLAP to User-Analysts: An IT Mandate》中首次提出的。在这个白皮书中,他为OLAP产品建立了12条评估规则:

  1. Multidimensional Conceptual View(多维概念视图):在用户分析师看来,企业天然是多维的。例如,可以按地区,产品,时间段或方案(例如实际,预算或预测)查看利润。多维数据模型使用户能够更直接,更直观地处理数据,包括“分片和分块”。

  1. Transparency(透明性准则):OLAP应该是开放系统体系结构的一部分,该体系结构可以嵌入到用户期望的任何位置,而不会影响宿主工具的功能。不应把OLAP工具的数据源暴露给用户,数据源可能是同构的或异构的。

  1. Accessibility(存取能力推测):OLAP工具应该能够应用自己的逻辑结构来访问异构数据源,并执行向用户呈现连贯视图所需的任何转换。工具(而不是用户)应关注物理数据的来源。

  1. Consistent Reporting Performance(稳定的报表性能):随着维度数量的增加,OLAP工具的性能不会受到显著影响。

  1. Client-Server Architecture(客户/服务器架构):OLAP工具的服务器组件应该足够智能,各种客户端可以轻松地连接它。服务器应该能够在不同的数据库之间映射和合并数据。

  1. Generic Dimensionalityc(维的等同性准则):每个数据维度的结构和操作能力都应相同。

  1. Dynamic Sparse Matrix Handling(动态的稀疏矩阵处理准则):OLAP服务器的物理结构应具有最佳的稀疏矩阵处理。

  1. Multi-User Support(多用户支持能力准则):OLAP工具必须提供并发检索和更新访问,完整性和安全性。

  1. Unrestricted Cross-dimensional Operations(非受限的跨维操作):计算设施必须允许跨任意数量的数据维度进行计算和数据处理,并且不得限制数据单元之间的任何关系。

  1. Intuitive Data Manipulation(直观的数据操作):合并路径中固有的数据操作,例如向下钻取或缩小,应通过对分析模型单元的直接操作来完成,而不需要使用菜单或跨用户界面多次行程。

  1. Flexible Reporting(灵活的报告生成):报告工具应以用户想要查看的任何方式显示信息。

  1. Unlimited Dimensions and Aggregation Levels(不受限的维度和聚合层次)。

1.4 OLAP的发展历史

虽然OLAP的概念是在1993年才提出来的,但是支持OLAP相关产品的发展历史,最早可追溯到1975年:

  1. 第一款OLAP产品Express于1975年问世,随着被Oracle收购后繁荣发展了30余年,最后由继任者Oracle 9i替代。

  1. 1979年,第一个电子表格应用程序VisiCalc投放市场。VisiCalc具有当今大多数电子表格应用程序中标准的基本行和列结构。

  1. 1982年,Comshare开发了一种新的决策支持系统软件(System W),这是第一个金融领域的OLAP工具,也是第一个在其多维建模中应用hypercube方法的工具。

  1. 1983年,IBM推出了Lotus 1-2-3。它的结构类似于Visicalc,并迅速取代了Visicalc。Lotus 1-2-3成为Windows之前的主流电子表格应用程序。

  1. 1984年,第一款ROLAP产品Metaphor发布。该多维产品建立了新概念,例如客户/服务器计算,关系数据的多维处理,工作组处理,面向对象的开发等。

  1. 1985年,Excel 1.0诞生。微软在Excel中集成了数据透视表功能可能是Excel产品最重要的增强功能之一,因为数据透视表已成为多维分析中最流行和使用最广泛的工具。

1989年,SQL语言标准诞生,它可以从关系数据库中提取和处理业务数据。这可能是个转折点。在1980‘s年代,电子表格在OLAP应用中占绝对主导地位;而1990’s年代以后,越来越多的基于数据库的OLAP应用开始出现:

  1. 1992年:Hyperion Solution发布Essbase(扩展电子表格数据库),在1997年成为市场上主要的OLAP服务器产品。

  1. 1997年:PARIS Technologies推出PowerOLAP:集成电子表格和事务数据库,以便在电子表格应用程序(例如Excel)中即时更新数据。

  1. 1999年:Microsoft OLAP服务发布,并于2000年成为Microsoft Analysis Services

  1. 2012年:PARIS Technologies发布了OLATION,它将关系和多维数据库技术(在SQL Server,SAP HANA,Oracle等中)融合在一起,确保对实际数据和计划数据进行“真正的在线”数据更新。

1.5 OLAP的核心概念和基本操作

1.5.1 核心概念

维度(Dimension):维度是描述与业务主题相关的一组属性,单个属性或属性集合可以构成一个维。如时间、地理位置、年龄和性别等都是维度。

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

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

度量(Measure):表示事实在某一个维成员上的取值。例如开发部门汉族男性有39人,就表示在部门、民族、性别三个维度上,企业人数的事实度量。

1.5.2 基本操作

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

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

钻取(Drill-down):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对2010年第二季度的总销售数据进行钻取来查看2010年第二季度4、5、6每个月的消费数据,如上图;当然也可以钻取浙江省来查看杭州市、宁波市、温州市……这些城市的销售数据。

上卷(Roll-up):钻取的逆操作,即从细粒度数据向高层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据,如上图。

切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者2010年第二季度的数据。

切块(Dice):选择维中特定区间的数据或者某批特定值进行分析,比如选择2010年第一季度到2010年第二季度的销售数据,或者是电子产品和日用品的销售数据。

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

1.6 OLAP的分类

按数据存储方式分类,可分为MOLAP、ROLAP、HOLAP。

1.6.1 Multidimensional OLAP (MOLAP)

MOLAP是OLAP的经典形式。MOLAP将数据存储在优化的多维数组中,而不是关系数据库中。维的属性值被映射成多维数组的下标值或下标的范围,而度量数据作为多维数组的值存储在数组的单元中。由于MOLAP采用了新的存储结构,从物理层实现,因此又称为物理OLAP(PhysicalOLAP);而 ROLAP主要通过一些软件工具或中间软件实现,物理层仍采用关系数据库的存储结构,因此称为虚拟OLAP(VirtualOLAP)。

一些MOLAP工具要求对数据进行预计算和存储,这样的MOLAP工具通常利用被称为“数据立方体”的预先计算的数据集。数据立方体包含给定范围的问题的所有可能答案。因此,它们对查询的响应非常快。另一方面,根据预计算的程度,更新可能需要很长时间。预计算也可能导致所谓的数据爆炸。

1.6.2 Relational OLAP(ROLAP)

ROLAP将分析用的多维数据存储在关系数据库中。这种方式依赖SQL语言实现传统OLAP的切片和切块功能,本质上,切片和切块等动作都等同于在SQL语句中添加“ WHERE”子句。ROLAP工具不使用预先计算的多维数据集,而是对标准关系数据库及其表进行查询,以获取回答问题所需的数据。ROLAP工具具有询问任何问题的能力,因为该方法(SQL)不仅限于多维数据集的内容。

尽管ROLAP使用关系数据库作为底层存储,但这些数据库一般要针对ROLAP进行相应优化,比如并行存储、并行查询、并行数据管理、基于成本的查询优化、位图索引、SQL的OLAP扩展(cube,rollup)等等。专为OLTP设计的数据库不能像ROLAP数据库一样正常工作。

1.6.3 Hybrid OLAP(HOLAP)

由于MOLAP和ROLAP有着各自的优点和缺点,且它们的结构迥然不同,这给分析人员设计OLAP结构提出了难题。为此一个新的OLAP 结构——混合型OLAP(HOLAP)被提出,这种工具通过允许同时使用多维数据库(MDDB)和关系数据库(RDBMS)作为数据存储来弥合这两种产品的技术差距。它允许模型设计者决定将哪些数据存储在MDDB中,哪些存储在RDBMS中, 例如,将大量详单数据存储在关系表中,而预先计算的聚合数据存储在多维数据集中。目前整个行业对于“混合OLAP”的还没有达成明确的共识。

1.6.4 MOLAP与ROLAP对比分析

1.7 OLAP与其他概念的关系

1.7.1 OLAP vs OLTP

两者设计的目标是完全不同的:

  1. OLTP(On-Line Transaction Processing),联机事务处理,一般用于业务系统。OLTP对事务性处理的要求非常高,一般都是高可用的在线系统,主要基于传统的关系型数据库。其上的应用,一般以小的事务以及小的查询为主。评估其系统的时候,一般看其每秒执行的Transaction以及SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction(增、删、改)往往达到几百上千个,Select查询语句的执行量每秒几千甚至几万个。典型的OLTP系统有电子商务系统、银行交易系统、证券交易系统等。

  2. OLAP,一般用于分析系统。其上的应用,一般以大数据量的查询为主,修改和删除的操作较少。在这样的系统中,SQL语句的执行量不是考核指标,因为一条语句的执行时间可能会很长,读取的数据也非常多。所以,评估其系统的时候,往往是看系统的吞吐量、复杂查询响应时间、数据装载性能等。

二者详细对比如下:

1.7.2 OLAP vs 数据仓库/数据集市

数据仓库的建模方式有多种:

  1. ER模型(实体-关系模型)

  2. Data Vault模型

  3. Anchor模型

  4. 维度模型

前面三种模型主要致力将各个业务系统中的数据整合到统一的数据仓库中,并进行一致性处理,提供满足第三范式或更高范式的数据模型和原子数据。这种数据仓库被称为CIF(Corporate Information Factory,企业信息工厂)架构下的企业数据仓库。这种数据仓库架构是数据仓库之父Inmon所推崇的。但由于使用了规范化模型,这使得对这些原子数据进行查询变得很困难,这种架构并不能很好地直接用于支撑分析决策。为了更好的支持分析,在这种架构下,通常需要在数据仓库的基础上,按主题建立一些数据子集,也就是数据集市。这些数据集市通常采用维度模型,OLAP工具就可以基于数据集市而工作。数据集市通常就是基于OLAP系统而构建。

第四种模型(维度模型)是另一位数据仓库领域的大师Kimball提出的,是目前数据仓库领域最流行的建模方式。维度模型可以很好地支撑分析决策需求,同时还有较好的大规模复杂查询的响应性能。维度模型可以直接使用OLAP工具与其对接。Kimball所推崇的数据仓库架构如下,基于这种架构建立的数据仓库,可以直接提供OLAP能力。这样建立的数据仓库本身也就成为了一个OLAP系统。

1.7.3 OLAP vs BI工具

BI是Business Intelligence的英文缩写,中文解释为商务智能,是利用数据提高决策质量的技术集合,是从大量的数据中钻取信息与知识的过程。OLAP和BI常常在一起出现,OLAP是BI工具的一种底层技术。BI工具通常可以对接OLAP系统,但不限于此,也可以直接与其他数据库、存储系统对接。

1.7.4 OLAP vs 即席查询

Ad hoc是一个拉丁文常用短语,意思是“特设的、特定目的的(地)、临时的、专案的”。即席查询(Ad Hoc Queries)是指用户根据自己的需求动态创建的查询,与预定义查询相反。

即席查询对数据模型没有要求,只要能提供动态查询的能力即可;而OLAP系统,一般要求数据模型是多维数据模型。对于ROLAP系统,通常都能提供即席查询能力,二者之间差别很小,所以经常混用。

作者:歌湾汐云
链接:https://www.jianshu.com/p/a078fed07acc

版权声明
本文为[osc_97kpb2b5]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4340310/blog/4837887

Scroll to Top