線上分析處理
联机分析处理(英語:),简称OLAP (/ˈoʊlæp/),是计算机技术中快速解决多维分析问题(MDA)的一种方法。[1] OLAP是更广泛的商业智能范畴的一部分,它还包括关系数据库、报告编写和数据挖掘。[2] OLAP的典型应用包括销售业务报告、市场营销、管理报告、业务流程管理(BPM)[3]、預算和预测、財務報表以及类似领域,新的应用正在出现,如农业。[4] 术语“OLAP”是对传统数据库术语“联机事务处理”(OLTP)稍微修改而成的。[5]
OLAP工具让用户能够从多个角度交互地分析多维数据。OLAP由三个基本的分析操作组成:上卷(roll-up)、钻取(drill-down)、切片(slicing)和切块(dicing)。[6]:402-403 上卷涉及可以在一个或多个维度中累积和计算的数据的聚合。例如,所有的销售办事处汇总到销售部门,以预测销售趋势。相比之下,钻取是一种允许用户浏览详细信息的技术。例如,用户可以查看组成一个地区销售额的单个产品的销售额。切片和切块是说,用户可以从OLAP多维数据集中取出(切片)一组特定的数据,并从不同的角度查看(切块)切片。这些角度有时被称为维度(例如按销售人员、按日期、按客户、按产品或按地区查看相同的销售情况等)。
为OLAP配置的数据库使用多维数据模型,允许快速执行复杂的分析查询和即席查询。[7] 它们借鉴了导航型数据库、层次型数据库和关系型数据库的各个方面。
OLAP通常与OLTP(联机事务处理)形成对比,OLTP的特点是查询的复杂性要小得多,而且查询量要大得多,以处理事务,而不是用于商业智能或报告。OLAP系统主要针对读取进行优化,而OLTP得能处理各种查询(读取、插入、更新和删除)。
OLAP系统概述
OLAP系统的核心是一个OLAP多维数据集。它由称为度量的数字事实组成,这些数字事实按维度进行分类。这些度量被放置在超立方体的交点处。操作一个OLAP多维数据集的通常接口是一个矩阵接口,就像电子表格程序中的数据透视表一样,它沿着维度执行投影操作,例如聚合或求平均值。
多维数据集元数据通常是从关系数据库中的表的星型模式、雪花型模式或事实星座中创建的。度量来自事实表中的记录,维度来自维度表。
可以认为每个度量都有一组标签,或者与之关联的元数据。维度是描述这些标签的东西; 它提供有关度量的信息。
举一个简单地多维数据集的例子,商店的销售额作为度量,日期/时间作为维度。每个销售都有一个日期/时间标签,描述更多关于该销售的信息。
如下所示:
Sales Fact Table +-------------+----------+ | sale_amount | time_id | +-------------+----------+ Time Dimension | 2008.10| 1234 |----+ +---------+-------------------+ +-------------+----------+ | | time_id | timestamp | | +---------+-------------------+ +---->| 1234 | 20080902 12:35:43 | +---------+-------------------+
多维数据库
多维结构被定义为“使用多维结构组织数据并表达数据之间关系的关系模型的变体”。[6]:177 该结构被分解成多个超立方体,并且在每个超立方体的范围内都能存储和访问数据。“多维结构中的每个单元都包含与其维度上的元素相关的聚合数据”。[6]:178 即使对数据进行操作,也很容易访问并继续构成一种紧凑的数据库格式。数据仍然是相互关联的。 对于使用OLAP应用程序的分析数据库,多维结构非常流行。[6] 分析型数据库使用这些数据库,是因为它们能够快速地为复杂的业务查询提供答案。可以从不同的角度查看数据,这与其他模型不同,为问题提供了更广阔的视角。[8]
聚合
据称,对于复杂查询,OLAP多维数据集可以在大约0.1%的时间内生成对OLTP关系数据的相同查询所需的答案。[9][10] OLAP中允许其实现此类性能的最重要机制是使用聚合。聚合是通过更改特定维度的粒度并使用聚合函数沿着这些维度聚合数据,从事实表构建的。可能聚合的数量由每个可能的维度粒度组合决定。
所有可能的聚合和基础数据的组合包含可以从数据应答的每个查询的答案。[11]
因为通常有许多可以计算的聚合,所以通常只有预先确定的数字被完全计算; 其余的则根据需要求解。决定要计算哪些聚合(视图)的问题称为视图选择问题。视图选择可以受到所选聚合集的总大小、根据基础数据的更改更新它们的时间的限制,或者同时受两者的限制。视图选择的目标通常是最小化进行OLAP查询的平均时间,尽管一些研究也最小化了更新时间。视图选择是NP完全问题。这个问题已经被探索了许多方法,包括贪心算法、随机搜索、遗传算法和A*搜尋演算法。
对于整个OLAP多维数据集,可以通过预先计算每个单元的值来计算一些聚合函数,然后通过聚合这些聚合来计算单元汇总的聚合,并对多维问题应用分治法来有效地计算这些聚合。[12] 例如,所有的总和就是每个单元的子和的总和。可以这样分解的函数称为可分解聚合函数,包括COUNT、MAX、MIN
和SUM
,这些函数可以为每个单元计算,然后直接聚合;这些函数称为自可分解聚合函数。[13] 在其他情况下,聚合函数可以通过计算单元的辅助数,聚合这些辅助数,最后计算最后的总数来计算;例子有AVERAGE
(跟踪和与数量,最后再做除法)和RANGE
(跟踪最大值和最小值,最后再相减)。在其他情况下,如果不立即分析整个集合,就无法计算聚合函数,尽管在某些情况下可以计算近似值;例如DISTINCT COUNT、MEDIAN
和MODE
;例如,集合的中位数不等于子集的中位数。后者很难在OLAP中有效地实现,因为它们需要在基础数据上计算聚合函数,或者在线(慢)计算它们,或者为可能的展开(大空间)进行预计算。
参考文献
- Codd E.F.; Codd S.B. & Salley C.T. (PDF). Codd & Date, Inc. 1993 [2008-03-05].
- Deepak Pareek. . CRC Press. 2007: 294 pp [2008-03-18]. ISBN 978-0-8493-8792-0. (原始内容存档于2021-04-30).
- Apostolos Benisis. . VDM Verlag Dr. Müller e.K. 2010: 204 pp. ISBN 978-3-639-22216-6.
- Abdullah, Ahsan. . Computers and Electronics in Agriculture. November 2009, 69 (1): 59–72. doi:10.1016/j.compag.2009.07.003.
- (PDF). OLAP Council. 1997 [2008-03-18]. (原始内容存档 (PDF)于2016-06-23).
- O'Brien, J. A., & Marakas, G. M. (2009). Management information systems (9th ed.). Boston, MA: McGraw-Hill/Irwin.
- Hari Mailvaganam. . Data Warehousing Review. 2007 [2008-03-18]. (原始内容存档于2018-09-28).
- Williams, C., Garza, V.R., Tucker, S, Marcus, A.M. (1994, January 24). Multidimensional models boost viewing options. InfoWorld, 16(4)
- MicroStrategy, Incorporated. (PDF). 1995 [2008-03-20]. (原始内容存档 (PDF)于2013-06-27).
- Surajit Chaudhuri & Umeshwar Dayal. . SIGMOD Rec. 1997, 26 (1): 65. CiteSeerX 10.1.1.211.7178 . doi:10.1145/248603.248616.
- Gray, Jim; Chaudhuri, Surajit; Layman, Andrew; Reichart, Don; Venkatrao, Murali; Pellow, Frank; Pirahesh, Hamid. . J. Data Mining and Knowledge Discovery. 1997, 1 (1): 29–53 [2008-03-20]. arXiv:cs/0701155 . doi:10.1023/A:1009726021843.
- Zhang 2017,第1頁.
- Jesus, Baquero & Almeida 2011,2.1 Decomposable functions, pp. 3–4.