干货:链家大数据多维分析引擎实现

 浪尖 浪尖聊大数据 

干货:链家大数据多维分析引擎实现_Java

OLAP展现在用户面前的是一幅幅多维视图。

维(Dimension):是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)。

维的层次(Level):人们观察数据的某个特定角度(即某个维)还可以存在细节程度不同的各个描述方面(时间维:日期、月份、季度、年)。

维的成员(Member):维的一个取值,是数据项在某维中位置的描述。(“某年某月某日”是在时间维上位置的描述)。

度量(Measure):多维数组的取值。(2000年1月,上海,笔记本电脑,0000)。

OLAP的基本多维分析操作有钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。

钻取:是改变维的层次,变换分析的粒度。它包括向下钻取(Drill-down)和向上钻取(Drill-up)/上卷(Roll-up)。Drill-up是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数;而Drill-down则相反,它从汇总数据深入到细节数据进行观察或增加新维。

切片和切块:是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个或以上,则是切块。

旋转:是变换维的方向,即在表格中重新安排维的放置(例如行列互换)。

干货:链家大数据多维分析引擎实现_Java_02


据仓库与OLAP的关系是互补的,现代OLAP系统一般以数据仓库作为基础,即从数据仓库中抽取详细数据的一个子集并经过必要的聚集存储到OLAP存储器中供前端分析工具读取。

OLAP系统按照其存储器的数据存储格式可以分为关系OLAP(RelationalOLAP,简称ROLAP)、多维OLAP(MultidimensionalOLAP,简称MOLAP)和混合型OLAP(HybridOLAP,简称HOLAP)三种类型。


ROLAP

ROLAP将分析用的多维数据存储在关系数据库中并根据应用的需要有选择的定义一批实视图作为表也存储在关系数据库中。不必要将每一个SQL查询都作为实视图保存,只定义那些应用频率比较高、计算工作量比较大的查询作为实视图。对每个针对OLAP服务器的查询,优先利用已经计算好的实视图来生成查询结果以提高查询效率。同时用作ROLAP存储器的RDBMS也针对OLAP作相应的优化,比如并行存储、并行查询、并行数据管理、基于成本的查询优化、位图索引、SQL的OLAP扩展(cube,rollup)等等。


MOLAP

MOLAP将OLAP分析所用到的多维数据物理上存储为多维数组的形式,形成“立方体”的结构。维的属性值被映射成多维数组的下标值或下标的范围,而总结数据作为多维数组的值存储在数组的单元中。由于MOLAP采用了新的存储结构,从物理层实现起,因此又称为物理OLAP(PhysicalOLAP);而ROLAP主要通过一些软件工具或中间软件实现,物理层仍采用关系数据库的存储结构,因此称为虚拟OLAP(VirtualOLAP)。


HOLAP

由于MOLAP和ROLAP有着各自的优点和缺点(如下表所示),且它们的结构迥然不同,这给分析人员设计OLAP结构提出了难题。为此一个新的OLAP结构——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP两种结构的优点结合起来。迄今为止,对HOLAP还没有一个正式的定义。但很明显,HOLAP结构不应该是MOLAP与ROLAP结构的简单组合,而是这两种结构技术优点的有机结合,能满足用户各种复杂的分析请求。


    干货:链家大数据多维分析引擎实现_Java_03

链家大数据多维分析引擎实现

干货:链家大数据多维分析引擎实现_Java_04

干货:链家大数据多维分析引擎实现_Java_05

干货:链家大数据多维分析引擎实现_Java_06



干货:链家大数据多维分析引擎实现_Java_07


干货:链家大数据多维分析引擎实现_Java_08

干货:链家大数据多维分析引擎实现_Java_09


干货:链家大数据多维分析引擎实现_Java_10

干货:链家大数据多维分析引擎实现_Java_11

干货:链家大数据多维分析引擎实现_Java_12


干货:链家大数据多维分析引擎实现_Java_13

干货:链家大数据多维分析引擎实现_Java_14

干货:链家大数据多维分析引擎实现_Java_15


干货:链家大数据多维分析引擎实现_Java_16






干货:链家大数据多维分析引擎实现_Java_17

干货:链家大数据多维分析引擎实现_Java_18


干货:链家大数据多维分析引擎实现_Java_19

干货:链家大数据多维分析引擎实现_Java_20

干货:链家大数据多维分析引擎实现_Java_21

干货:链家大数据多维分析引擎实现_Java_22



干货:链家大数据多维分析引擎实现_Java_23

干货:链家大数据多维分析引擎实现_Java_24

干货:链家大数据多维分析引擎实现_Java_25