有人对OLAP Internals有什么了解吗?

问题描述 投票:29回答:2

我对数据库内部知识有点了解。实际上,我之前已经在磁盘和BTree索引上使用ISAM结构以及所有类似的东西实现了一个小型,简单的关系数据库引擎。这很有趣,而且很有教育意义。我知道我对谨慎设计数据库架构和编写查询的认识要多得多,因为我对RDBMS的工作原理有了更多的了解。

但是我对多维OLAP数据模型一无所知,而且很难在互联网上找到任何有用的信息。

信息如何存储在磁盘上?多维数据集包含哪些数据结构?如果MOLAP模型不使用带有列和记录的表,那么……怎么办?尤其是在高维数据中,哪种数据结构使MOLAP模型如此高效? MOLAP实现是否使用类似于RDBMS索引的内容?

为什么OLAP服务器在处理临时查询方面如此出色?在OLTP多维数据集中以毫秒为单位处理在普通关系数据库中可能花费hours来处理的相同类型的聚合。该模型的潜在机制是什么?

algorithm data-structures theory olap cubes
2个回答
20
投票

我已经实现了一些模仿OLAP多维数据集的系统,这是我们为使其正常工作所做的几件事。

  1. 核心数据保存在一个n维数组中,全部在内存中,并且所有键都是通过指向底层数组的指针的层次结构实现的。这样,我们可以为同一数据设置多个不同的键集。数组中的数据等同于事实表,通常只有几条数据,在某些情况下,这是价格和售出的数量。

  2. 基础数组通常是稀疏的,所以一旦创建了它,我们就删除了所有空白单元以节省内存-许多硬核指针算法都可以,但是它可以工作。

  3. 由于我们具有键的层次结构,我们可以很容易地编写例程来轻松地向下钻取/向上钻取层次结构。例如,我们将通过查看月份键来访问年份数据,而月份键又映射到天和/或周。在每个级别,我们都将聚合数据作为构建多维数据集的一部分-使计算速度更快。

  4. 我们没有实现任何种类的查询语言,但是我们确实支持全轴向下钻取(在最大的多维数据集中最多7个),并且直接与用户喜欢的UI绑定。

    ] >
  5. 我们用C ++实现了核心内容,但是现在我认为C#可能足够快,但是我担心如何实现稀疏数组。

  6. 希望有所帮助,听起来很有趣。


6
投票

Microsoft SQL Server 2008 Analysis Services Unleashed书详细说明了SSAS 2008的某些特殊性。它不是“ SSAS的确切工作方式”,但很有启发性,尤其是在数据结构方面。 (关于精确算法,它还不够详细/具体。)作为本书的业余爱好者,我从本书中学到了一些东西。这一切都与SSAS MOLAP有关:

© www.soinside.com 2019 - 2024. All rights reserved.