2011-05-15 30 views
0

我开始学习SQL Server分析服务,我正在通过training book以及Developer Training Kit的方式工作。在这两种情况下,我都发现OLAP数据库(最好是星型模式)中使用的表的数量大大减少了生产OLTP数据库的建议。操作数据库模式到数据集市模式,表减少?

从培训工具包:

我们按照数据维方法,以建筑师的数据集市架构。从操作数据库中的大约200个表中,数据集市模式包含大约10个维度表和2个事实表。

据我所知,操作数据库通常(有点)规范化,数据集市模式严重非规范化。我也相信非规格化数据通常涉及添加更多表,而不是更少。

我看不出如何从200个表格转到12个表格,除非您只需要报告一部分数据。如果只需要报告一部分数据,为什么不能在操作数据库中使用适当的表(除非通过使用非规格化的星型模式可以显着提高性能)?

+0

“除非有使用去归一化星型模式进行显著的性能提升” - 是的,有。 – 2011-05-15 03:41:52

回答

5

非规范化与正常化数据库完全相反。在标准化的数据库中,所有东西都分成不同的表,以支持对数据的并发写入。这也会产生一次产生任何给定数据子集的副作用(在理想的第三范式数据结构中)。归一化的缺点是读取花费更多的时间,因为数据是分散的,我们需要连接表来重新理解它(联接是非常昂贵的操作)。

当我们非规范化时,我们从多个表中获取数据并将它们合并到一个表中。所以现在我们在这些表格中重复数据。重复的数据非常有用,因为我们无需再加入任何其他表来加入。写入数据存储通常是一个坏主意,因为这意味着大量写入来更改表中的所有数据,而在规范化数据库中只需要一个。

OLTP代表Online Transactional Processing,注意Transactional这个词。事务是写入操作,OLTP模型针对此进行了优化。 OLAP代表在线分析处理,分析是含有大量读取的关键字。

从OLTP到OLAP进程中从200个表到12个表将令人惊讶地将OLTP数据库中的几乎所有数据加上更多。 OLTP无法记录所有随时间的变化,但OLAP专注于此,因此您可以获取所有历史数据以及当前数据。

星型模式可能是OLAP数据存储最常用的,雪花模式也很常见。您应该了解两者以及如何正确使用它们。这只是你的武器库中的另一个伟大的工具。

来自IBM的这两本书将更全面地回答您的问题,它们是免费的pdf。

http://www.redbooks.ibm.com/abstracts/sg247138.html
http://www.redbooks.ibm.com/abstracts/sg242238.html