1,Olap存储的数据
OLAP存储的数据包括两类,一类是叶级值,即细节性的数据,包括维度表和事实表中的所有数据;一类是聚合值,是叶级值经过聚合函数聚合之后产生的聚合数据。
2,Olap存储模式
那么Olap是如何存储叶级值和聚合值的?Olap主要使用两种存储结构,一种是使用关系型DB来存储,一种是使用cube来存储。
关系型DB存储是指把叶级值和聚合值都存储在关系型的DB中,缺点是查询效率低,优点是能存储大量的数据。
cube存储是指把叶级值和聚合值都存储在cube中,cube是一种数据结构,这种结构跟关系型结构不同,能够很快的做切片,旋转等聚合操作,便于进行数据的查询,但是不能存储海量数据。Cube存储的优点是查询性能高,缺点是不能存储大量的数据。
这两种存储是不可调和的矛盾体,面对这类问题,肯定会有一种“中庸”的处理方式,来平衡性能和存储。
Olap的存储模式有三种,分别是ROlap,HOlap和MOlap
ROLAP是基于关系数据库的OLAP实现(Relational OLAP)以关系型结构进行多维数据的表示和存储,将Olap数据存储在关系型DB中。特点是将细节数据存储在关系型数据库的事实表和维度表中,将聚合数据保存在关系型的数据库中。这种方式查询效率低,存储的数据量大。
MOLAP是基于多维存储结构的OLAP实现(Multidimensional OLAP)使用cube结构存储数据,特点是将细节数据和聚合数据均保存在cube中,所以以空间换效率,查询时效率高,但生成cube时需要大量的时间和空间。
HOLAP是混合型OLAP实现(Hybrid OLAP)是将细节数据保留在关系型数据库的事实表和维度表中,聚合数据保存在cube中,聚合时需要比ROLAP更多的时间,查询效率比ROLAP高,但低于MOLAP。
3,主动缓存
AS需要响应的数据可以存储在缓存中,提高查询的速度,但是当存储在源关系db中的数据发生变化时,就会产生cube数据和源数据不同步的问题。一旦源关系DB的数据发生改变,Olap如何以最快的速度感知到这种变化,并将数据同步到AS的cube中?答案是proactive caching,利用Proactive Caching能够简化数据同步的问题。