OLAP工具通常使用数据立方体和多维数据模型,对汇总数据提供灵活的访问。例如:数据立方体能够存放多个数据维上的预计算的度量。用户可以提出数据上的OLAP查询,也可以以多维方式,通过诸如下钻或上卷这样的OLAP操作类探查数据。
一、数据立方体计算:基本概念
为了提升OLAP查询效率,我们采用了完全立方体物化(预计算)与部分立方体物化。下面比较了这些策略。
1、立方体物化:完全立方体、冰山立方体、闭立方体和立方体外壳
例如:维A、B、C和聚集度量M的3-D数据立方体。通常使用的度量包括count(),sum(),min(),max()。数据立方体是方体的格,每个方体代表一个group-by。基本方体是数据立方体中泛化程度最低的方体。泛化程度最高的方体是顶点方体。为了在数据立方体中下钻,我们从顶点方体的格向下移动;对于上卷,我们从基本方体向上移动。
基本方体的单元是基本单元。非基本方体的单元是聚集单元。
为了确保快速查询OLAP,有时预计算完全立方体。然而,完全立方体的计算复杂度是维数的指数,即2的n次方。如果考虑到每个维的概念分层,那么方体的个数更多。这样预计算完全立方体可能需要海量空间。尽管如此,完全立方体计算的算法仍然是重要的。单个立方体可以存放在辅助存储上,在需要时访问。或者,可以使用这样的算法计算较小的立方体,包含给定维集合的一个子集,或者某些维的可能值的一个较小的领域。在这种情况下,较小的立方体是给定维子集或维值的完全立方体。探索计算数据立方体的所有方体的可伸缩方法。这些方法必须考虑可用于计算方体的内存容量的限制、计算的数据立方体的总体大小,以及计算所需要的时间。
部分物化提供了存储空间和OLAP响应时间之间的折中。不是计算完全立方体,而是计算数据立方体的方体的一个子集,或者计算由各种方体的单元子集组成的子立方体。
在许多情况下,相当多的立方体空间可能被大量具有很低度量的单元所占据。这是因为立方体单元在多维空间中的分布常常是相当稀疏的。例如:一个顾客一次在一个商店可能只买少量商品。这样的事件将产生少量非空单元,而剩下其他大部分立方体单元为空。在这种情况下,仅物化其度量值大于某个最小阀值的立方体单元是有用的。例如:仅仅希望物化其sales>$100。这样能够节省时间和磁盘空间,而且还能够导致更聚焦的分析。这种部分物化的立方体称为冰山立方体。这种最小阀值称为最小支持度阀值,或简称为最小支持度。
为了系统的压缩数据立方体,需要引入闭覆盖的概念。一个单元c是闭单元,如果不存在单元d,使得d与c的特殊化(即d通过将c中的*值用非*值替换得到),并且d与c具有相同的度量值。闭立方体是一个仅由闭单元组成的数据立方体。
部分物化的另一种策略是只要预计算涉及少数维的方体。这些方体形成对应大的数据立方体的立方体外壳。在附加的维组合上的查询必须临时计算。例如,可以预计算n维数据立方体中具有3个或更少维的所有方体,产生大小为3的立方体外壳。然而,这仍然会计算大量的方体,特别是当n很大时。或者,可以基于方体的兴趣度,选择只预计算立方体外壳的部分或片段,这种就外壳片段方法。
二、数据立方体计算的一般策略
一般而言,有两种基本数据结构用于存储方体。关系OLAP(ROLAP)的实现使用关系表,而多维数据组用于多维OLAP(MOLAP)。尽管ROLAP和MOLAP可能使用不同的立方体计算技术,但是某些优化“技巧”可以在不同的数据表示之间共享。
- 排序、散列和分组。应当对维属性使用排序、散列和分组操作,以便对相关元组重新定序和聚类。在立方体计算中,对共享一组相同维值的元组进行聚集。因此,重要的是利用排序、散列和分组操作对这样的数据进行访问和分组,以便有利于聚集的计算。
- 同时聚集和缓存中间结果。在立方体计算中,从先前计算的较低层聚集而不是从基本事实表计算较高聚集是有效的。此外,从缓存的中间计算结果同时聚集可能导致减少开销很大的磁盘I/O操作。
- 当存在多个子女方体时,由最小的子女聚集。当存在多个子女方体时,由先前计算的最小子女方体计算父母方体通常更有效。
- 可以使用先验剪枝方法有效地计算冰山立方体。对于数据立方体,先验性质表述如下:如果给定的单元不满足最小支持度,则该单元的后代也都不满足最小支持度。使用这种性质可以显著的降低冰山立方体的计算量。冰山立方体的说明包含一个冰山条件,它是在物化单元上的约束。通常的冰山条件是单元必须满足最小支持度阀值,如果小计数或总和。在这种情况下,可以使用先验证性质对该单元后代的探查进行剪枝。例如:如果方体单元C的计数小于最小支持度阀值v,则较低层方体中c的任何后代单元的计数都不可能高于v,因此可以被剪枝。换言之,如果某个单元c违反某条件,则c的每个后代也将违反该条件。遵守这一性质的度量称为反单调的。这种形式的剪枝在频繁模式挖掘中很流行,它也有助于数据立方体的计算,减少处理时间和磁盘空间需求。这可能导致更聚焦的分析,因为不能通过阀值的单元可能不是有趣的。
三、 数据立方体计算方法
完全或部分数据立方体的预计算可以大幅度降低响应时间,提高联机分析处理的性能。但是,这种计算是一个挑战,因为它可能需要大量时间和存储空间。数据立方体有效计算方法有:多路数据聚焦方法、BUC方法从顶点方体向下计算冰山立方体、Star-Cubing方法,从顶向下和从底向上的计算、壳片段立方体方法,它为有效的高维OLAP计算壳片段。
1、多路数组聚集方法使用多维数组作为基本的数据结构,计算完全数据立方体。他是一种使用数组直接寻址的典型MOLAP方法,其中维值通过位置或对应数组位置的下标访问。
- 把数组划分成块。块是一个子立方体,它足够小,可以放入立方体计算时可用的内存。分块是一种把n维数组划分成小的n维快的方法,其中每个快作为一个对象存放在磁盘上。块被压缩,以避免空数组单元所导致的空间浪费。
- 通过访问立方体单元来计算聚集。可以优化访问单元的次序,使得每个单元必须重复访问的次数最小化,从而减少内存访问开销和存储开销。技巧是使用这样一种次序,使得多个方体的聚集单元可以同时计算,避免不必要的单元再次访问。
- 由于分块技术涉及重叠某些聚集计算,因此称该技术为多路数据聚集。它执行同时聚集,即同时在多个维组合上计算聚集。
2、BUC从顶点方体向下计算冰山立方体
BUC是一种计算稀疏冰山立方体的算法。从顶点方体向下到基本方体构造冰山立方体。这使得BUC可以分担数据划分开销,这种处理次序也使得BUC在构造立方体的使用先验性质进行剪枝。
BUC聚集整个输入并输出结果总数。对于每个维d,输入在d上划分。由Partition()返回,dataCount包含维d的每个不同值的元组总数。d的每个不同值形成自己的分区。行8对每个分区迭代。行10检查分区的最小支持度。也就是说,如果该分区中的元组数满足最小支持度,则该分区称为递归调用BUC的输入关系,在维d+1到numDims上的划分计算冰山立方体。采用sql实现:compute cube iceberg_cube as select A,B,C,D,Count(*) from R cube by A,B,C,D having count(*) >=3。BUC是如何构造维ABC和D的冰山立方体,其中最小支持度计算为3.假设维A有4个不同值a1,a2,a3,a4;B有4个不同值b1,b2,b3,b4;C有2个不同值c1,c2;而D有2个不同值d1,d2。如果将每个分组看成一个划分,则必须计算满足最小支持度(即具有3个元素)的分组属性的每个组合。
在搜索满足冰山条件的元组时,BUC使用先验证性质节省搜索时间。从维A的值a1开始,聚集a1分区,为a的分组创建一个元组,对应于单元(a1,*,*,*)。假设(a1,*,*,*)满足最小支持度,此时在a1的分区上进行递归调用。BUC在维B上划分a1的分区。它检查(a1,b1,*,*)的计数,看他是否满足最小支持度,并在(a1,b1,*,*)上递归,从c1开始对c上划分。建设(a1,b1,c1,*)的单元计数是2,不满足最小支持度,则它的任何后代也不能满足。因此,BUC减掉对(a1,b1,c1,*)的进一步探查。节省大量处理时间。
3、为快速高速OLAP预计算壳片段
数据立方体有利于多维空间的快速OLAP。然而,高维完全数据立方体需要海量存储空间和不切实际的计算时间。冰山立方体提供了一个更可行的替代方案,正如我们已经看到的,冰山条件用来指定计算完全立方体单元的一个子集。然而,尽管冰山立方体比对应的完全立方体小,并且需要较少的计算时间,但是它还不是最终的解。
第一,冰山立方体本身的计算和存储开销可能仍然很高。第二,很难确定合适的冰山阀值,该阀值设的太低将导致巨大的立方体,设置太高可能无法用于更多有意义的应用。第三、冰山立方体不能增量的更新,一旦一个聚集单元低于冰山阀值,他就被剪枝,他的度量值就丢失。任何增量更新都需从头重新计算。
外壳片段方法遵循版联机计算策略。它涉及两个算法:一个计算外壳片段立方体,而另一个用立方体片段处理查询。外壳片段方法能够处理维度非常高的数据库,并且可以快速联机计算小的局部立方体。他利用信息检索和基于web的信息系统中很流行的倒排索引结构。其基本思想如下:给定一个高维数据集,把维划分成互不相交的维片段,把每个片段转换成排序索引表示,然后构造立方体外壳片段,并保持与立方体单元相关联的倒排索引。使用预计算的立方体外壳片段,可以联机动态的组装和计算所需要的数据立方体的方体单元。这可以通过倒排索引上的集合交操作有效的完成。
相关推荐
此外,数据仓库通常采用数据立方体和多维数据模型来支持复杂的查询和数据分析,这是OLTP系统所不具备的。 ### 联机分析处理(OLAP) 联机分析处理(OLAP)是与数据仓库紧密相关的技术,用于支持快速、灵活的多维...
首先,OLAP平台的建设涉及到数据仓库的设计与构建。数据仓库是一种集中存储企业历史数据的系统,用于报表生成和数据分析。在京东零售场景中,数据仓库需要整合来自多个业务系统的海量交易、用户行为、商品信息等数据...
在数据仓库环境中进行数据分析,通常会用到SQL(结构化查询语言)进行查询和报表生成,以及更复杂的工具如OLAP(在线分析处理)立方体,它们允许用户从不同角度快速地对大量数据进行多维分析。此外,随着大数据技术...
数据仓库的架构通常包括以下几个层次:源系统、ETL(Extract, Transform, Load)、数据仓库、OLAP(在线分析处理)立方体和前端报表工具。了解每个层次的功能和相互关系,对构建高效的数据仓库至关重要。 1. 源系统...
数据仓库是一种专为数据分析和决策支持而设计的系统,它从多个不同的源系统中整合数据,形成一个统一的、优化的、...通过理解这些核心概念和技术,企业可以构建出强大的数据仓库系统,支持有效的决策制定和业务洞察。
数据仓库是现代企业信息化建设的关键组成部分,用于支持高级分析和决策制定。本文将详细解析企业级数据仓库的概念、特点、发展历程、重要性以及与数据库的区别,并概述离线数据仓库架构的基本流程。 首先,数据仓库...
8. **OLAP功能**:Oracle的OLAP选项提供了多维数据集和立方体,支持复杂的分析操作。Cube Builder和Data Mining等工具可帮助构建和分析多维模型。 9. **性能监控与调优**:通过Oracle的AWR(Automatic Workload ...
OLAP系统通常使用立方体(Cube)结构,预先计算并存储各种维度和度量的组合,以实现快速响应。 数据仓库的建设通常涉及以下组件: 1. **数据源**:来自企业各个部门的运营系统,如销售、财务、库存等。 2. **数据...
对于大型数据仓库,数据分层和数据立方体的构建也是不可或缺的部分,这些内容可以帮助读者理解如何处理大规模数据。 数据仓库不仅仅是技术层面的实现,还涉及到管理和运维。书中会讨论数据仓库的生命周期管理,包括...
本文主要探讨了如何构建面向证券分析的数据仓库系统,旨在通过建立这样的系统来帮助投资者更好地获取和分析相关的基本面和技术面信息,进而为投资决策提供强有力的支持。文中详细介绍了使用Microsoft SQL Server 7.0...
- 技术上可能涉及ETL(抽取、转换、加载)工具、数据立方体构建、OLAP(在线分析处理)、多维数据模型等。 - 数据集市通常接收数据仓库预处理的数据,通过定制化处理满足特定业务场景。 4. **数据集市建设所需支持及...
MOLAP(多维OLAP)通过预先计算和存储多维数据立方体来加快查询速度,但对数据更新的反应不够灵活;ROLAP(关系型OLAP)在关系数据库的基础上直接进行计算,具有更好的灵活性,但查询速度可能因数据量大而受影响;...
- **立方体**:OLAP立方体,支持多维度分析。 - **视图**:根据需要从L1和L0层创建,方便查询和分析。 在建模过程中,数据加载方法和变更处理策略也很关键。例如,对于新增、修改和删除操作,有对应的处理方式,...
宽表提供定制化的数据视图,立方体用于OLAP(在线分析处理)分析,而视图则可以综合L1和L0层的数据以满足各种查询需求。这层设计的灵活性和适应性直接影响了数据分析的效率和效果。 在整个开发过程中,数据抽取接口...
总的来说,搜狐智能媒体在数据仓库建设中的实践涵盖了从数据采集、处理、存储到分析的全链条,利用先进的大数据技术和OLAP理论,为决策支持提供高效、灵活的数据服务。这种体系结构对于任何希望利用数据驱动决策的...
数据仓库管理是IT领域中的一个重要概念,它涉及到企业数据...理解并掌握数据仓库的概念和技术,对于提升企业的数据驱动决策能力具有重要意义。通过持续优化和扩展数据仓库,企业可以更好地挖掘数据价值,实现业务增长。
5. 数据仓库建设:实施物理数据仓库结构,包括表、索引和视图。 6. 分析层构建:创建多维数据集和立方体,优化查询性能。 7. 数据装载和刷新:定期更新数据仓库,确保数据新鲜。 8. 报告和仪表板:开发用户界面,...
数据仓库是一种专为数据分析和决策支持而设计的系统,它从多个不同的源系统中整合数据,形成一个统一的、优化的视图,...在实施过程中,遵循最佳实践和标准,以及选择合适的工具和技术,是确保数据仓库项目成功的关键。