数据仓库与OLAP立方体有何区别?

86

能否有人解释一下数据仓库和OLAP立方体之间的真正区别?

它们是针对相同事物的不同方法吗?

它们中的一个与其他方法相比是否已弃用?

它们中是否存在任何性能问题?

欢迎任何解释。


我发现第一个答案很有用:https://www.quora.com/What-is-the-difference-between-a-data-warehouse-and-a-cube - Channa
3个回答

107

一个数据仓库是一个具有设计的数据库,使得从多个来源的数据更容易和更快地进行数据分析†。它通常具有一个维度模型,意味着事实表和维度表

OLAP 是一组可对数据集执行的操作,例如旋转、切片、切块、钻取。例如,可以使用 Excel 的数据透视表执行 OLAP 操作。有一些 SQL 语句是“用于 OLAP”的,如PIVOTgroup by CUBE()group by ROLLUP()group by GROUPING SETS(),以及各种窗口函数

一个 OLAP 服务器是一种服务器软件,它促进了 OLAP 操作,例如缓存和查询重写。OLAP 操作通常用MDX表示,您的 OLAP 服务器可能会将 MDX 转换为常规 SQL 用于您的数据库。或者它可能针对自己的二进制文件格式进行工作。在 OLAP 服务器内部的维度模型称为OLAP 立方体

您可以拥有一个数据仓库,而不使用 OLAP(只需运行报告)。

您还可以在除数据仓库之外的其他内容上执行 OLAP 操作,例如平面文件。

它们是相同的东西的不同方法吗?

不,数据仓库是一个存储数据以易于分析的格式的地方,而 OLAP 则是一种分析数据的方法。

它们中的一个在与另一个相比中已过时吗?

不,它们相辅相成,因为数据仓库使使用 OLAP 容易分析数据,而 OLAP 可以使分析数据仓库更有用。

其中一个存在性能问题吗?

是的,数据仓库旨在存储大量数据,因此查询需要时间。可以通过使用索引或列存储数据库、缓存、RAID 10 SSDs(固态硬盘)、分区以及预聚合部分数据来提高性能。

另请参见:https://dba.stackexchange.com/questions/45655/what-are-measures-and-dimensions-in-cubes

† 相对于使事务更容易/更完整。


1
数据仓库不是“具有维度设计的数据库”。DW是一个面向主题、集成、非易失性和时变的数据集合。数据仓库架构可能包括或不包括“维度”设计-通常仅用于Marts,不一定作为DW的一部分。 - nvogel
1
@sqlvogel 我并不是试图给出数据仓库的明确定义,只是用简单的语言来对比它与OLAP。我已经更新了我的答案,以考虑不使用维度设计的DW。 - Neil McGuigan
在我看来,数据仓库是为OLAP操作做准备。这是正确的吗?OLAP操作也有“维度”和“事实”的概念。 - mingchau
1
@mingchau 有点道理。您可以对扁平文件、Excel 文件或二进制立方体执行 OLAP 操作。但数据仓库通常是数据源。数据仓库和 OLAP 都有维度和事实的概念。 - Neil McGuigan

11

数据仓库持有你希望运行报告和分析等操作所需的数据。

一个立方体将这些数据按照定义好的维度进行组合。你可以有多个维度(就像Excel中的超级透视表)。

例如,在你的数据仓库中,你拥有所有的销售数据,但是运行复杂的SQL查询可能会耗费很长时间。因此,你可以从数据仓库中创建一个立方体来索引和预先计算数据。在你的立方体中,你可以包含所有这些预先计算的维度:按月份、按周、按销售员、按客户、按地理区域、按产品颜色等销售额。然后,你可以在立方体上运行OLAP查询,以获得按(月份、销售员、区域)或按(颜色、区域)或按(销售员、月份)的总销售额、平均销售额和最大销售额。由于所有数据都是预先计算和索引的,所以查询非常快速。


2
DW中的事实表和维度表已经有措施了,不是吗? - veljasije
从维基百科:数据的主要来源是经过清理、转换、编目并提供给管理人员和其他业务专业人士用于数据挖掘、在线分析处理。交易数据库中的数据在传输到DW时进行了转换,但没有像立方体那样被索引。您在DW中拥有维度表和事实表,但无法像立方体那样快速轻松地钻取和聚合您的事实。 - sthiy

2

它们是同一个事物的不同方法吗?

不,数据仓库是用于以易于分析的格式存储数据的地方,OLAP是一种分析数据的方法。

不,它们实际上做相同的事情!OLAP比DWH更加预先计算。OLAP就像DWH中的聚合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接