which is Olap?(OLAP是什么)(引入mondrian)

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


当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。



OLAP技术非常多的特性,概括起来主要有如下几点特性:OLAP技术是面向分析人员、管理人员的;OLAP技术对数据访问通常是只读的,并且一次访问大量数据;OLAP技术是面向主题的多维数据分析技术。


  •  OLAP技术是面向分析人员、管理人员的

  •  区别于OLTP面向操作人员,OLAP技术主要面向分析人员、管理人员,他是提供分析人员、管理人员快速又直观的访问数据的一种途径。使分析人员、管理人员能直观的从海量数据中获得有用信息以提供决策依据。

  •  OLAP技术对数据访问通常是只读的,并且一次访问大量数据。

  •  OLAP技术主要是针对海量数据的查询,通常不对数据做修改。这种数据访问有别于OLTP中不断的对数据进行增删改操作。同时这种查询不是简单的记录属性的检索,而是为了从海量数据中获取有用信息的针对大量数据的查询,通常一次需要查询会涉及到上百万条以上数据。

  •  OLAP技术是面向主题的多维数据分析技术。

        Mondrian 是一个开源项目,是开源项目Pentaho的一部分,是一个用Java写成的OLAP引擎。它实现了MDX语言、XML解析、JOLAP规范。它从SQL和其它数据源读取数据并把数据聚集在内存缓存中,然后经过Java API用多维的方式对结果进行展示,同时可以不写SQL就能分析存储于SQL 数据库的庞大数据集,可以封装JDBC数据源并把数据以多维的方式展现出来。

which is Olap?(OLAP是什么)(引入mondrian)_第1张图片


如上图所示,这是由三个维度构成的一个OLAP立方体,立方体中bao含了满足条件的cell(子立方块)值,这些cell里面bao含了要分析的数据,称之为度量值。显而易见,一组三维坐标唯一确定了一个子立方。


多位模型的基本概念介绍:


  •  立方体:由维度构建出来的多维空间,bao含了所有要分析的基础数据,所有的聚合数据操作都在立方体上进行。

  •  维度:就是观察数据的一种角度。在这个例子中,路线,源,时间都是维度,

  •  这三个维度构成了一个立方体空间。维度可以理解为立方体的一个轴。要注意的是有一个特殊的维度,即度量值维度。

  •  维度成员:构成维度的基本单位。对于时间维,它的成员分别是:第一季度、第二季度、第三季度、第四季度。

  •  层次:维度的层次结构,要注意的是存在两种层次:自然层次和用户自定义层次。对于时间维而言,(nian、月、日)是它的一个层次,(nian、季度、月)是它的另一个层次,一个维可以有多个层次,层次可以理解为单位数据聚合的一种路径。

  •  级别:级别组成层次。对于时间维的一个层次(nian、月、日)而言,nian是一个级别,月是一个级别,日是一个级别,显然这些级别是有父子关系的。

  •  度量值:要分析展示的数据,即指标。如图1中一个cell中bao含了两个度量值:装箱数和截至时间,可以对其进行多维分析。

  •  事实表:存放度量值的表,同时存放了维表的外键。所有的分析用的数据最终都是来自与事实表。

  •  维表:一个维度对应一个或者多个维表。一个维度对应一个维表时数据的组织方式就是采用的星型模式,对应多个维表时就是采用雪花模式。雪花模式是对星型模式的规范化。简言之,维表是对维度的描述。

  •  MDX查询:多维模型的查询语言MDX(MDX是微软发布的多维查询语言标准),它的语法与SQL有很多相似之处:select {[Measures].[Salary]} on columns, {[Employee].[employeeId].members} on rows from CubeTest对于这条语句,COLUMNS 和 ROWS都代表查询轴,其中COLUMNS代表列轴,ROWS代表行轴。COLUMNS又可以写成0,ROWS又可以写成1,当只有两个查询轴时,可以理解为结果的展现格式是一个平坦二维表。这条语句的含义就是查询名字为CubeTest的立方体,列显示Measures维度的salary,行显示 Employee维度employeeId级别的所有成员,那么得出的结果就是employeeId所有成员的salary,也就是所有员工的薪酬。具体语法规范和帮助文档可以参考微软的用户文档。


你可能感兴趣的:(which is Olap?(OLAP是什么)(引入mondrian))