Mondrian系列(二)-Mondrian的数据存储和聚合策略

一。Olap服务器根据数据存储方式被分为两种:

1.MOLAP(Multidimensional OLAP)在磁盘上存储所有数据,优化多维访问结构,典型情况下,数据存放在密集数组中,每个cell值需要4-8个字节。

2.ROLAP(Relational OLAP)在关系数据库中存储数据,事实表中的每行的列代表维度和度量。

一般有三种数据需要被存储,事实表数据、聚合和维度。

MOLAP数据库以多维格式存储数据,但是如果有超出的维,数据将会被稀疏,多维格式执行的不会太好。HOLAP(hybird OLAP)系统解决了这个问题,他将明细数据存储在RDBMS中,将聚合数据以多维格式存储。

预先计算的聚合必须要大量的数据集,否则某些查询不能不加思索的读取事实表的全部内容。MOLAP聚合经常是内存中零碎的页和磁盘存储的映像,ROLAP聚合存储在表中,在一些ROLAP系统中,这些是被OLAP服务器所显式管理;在其他系统中,表被定义为物化视图,根据OLAP服务器提交的查询语句隐式的执行。

二。聚合策略的最后组成部分是Cache。缓存在内存中保存预先计算的聚合,以便于子查询能够不通过磁盘访问cell值。如果缓存保持的聚集处于一个较低的水品,那么也可以通过rolling up计算所需要的数据集。

缓存是聚合策略最重要的部分,因为它需要自适应。

很难选择出一系列的聚合,他们恰好不需要通过大量的磁盘处理提升系统的速度,特别是那些具有高维的、用户请求不可知的查询;并且在一个数据实时变化的系统中,实时维持预计算的聚合是不现实的。

Mondrian的聚合策略:

  • 事实数据存储在RDBMS。
  • 通过提交分组查询,将聚合数据读入到内存。将分组查询作为聚合器。
  • 如果RDBMS支持物化视图,数据库管理员也选择物化视图作为特殊的聚合手段,Mondrian会隐式使用他们。理想情况下,聚合管理器会注意到物化视图的存在以及那些特殊的聚合计算成本很低。聚合管理器甚至会提出调整建议给数据库管理员。

总的内容是,委托的数据库是什么类型的数据库。这虽然会给数据库增加额外的负担,但是一旦这些功能加入到数据库中,数据库的所有客户端都会从中受益。多维存储会减少I/O,导致在某些情况下操作更快,但我不认可这种操作的复杂性是值得的。

非常好的副作用是因为Mondiran自身不需要存储,他能够通过jar文件的方式被加载。因为没有多余的数据集来管理,所以数据装载过程更容易,因此也更适用于实时环境。

你可能感兴趣的:(优化,数据库,cache,服务器,存储,磁盘)