51

这里有一点背景:

我或多或少知道什么是数据仓库。我已经阅读了几十本关于数据仓库的指南,我玩过 SSAS,我知道星型模式、维度表和事实表是什么,我知道 ETL 是什么以及如何去做。 这不是“如何”问题或教程请求。

我的问题是,我读过的所有关于数据仓库的材料似乎都掩盖了构建数据仓库的基本原理。它们都是比喻性的,或者在某些情况下是从字面上开始的“所以你决定建立一个数据仓库...... ”除了我还没有做出那个决定。

所以我希望 SO 成员可以指出或帮助提出某种半客观的测试。我可以适应特定系统并最终得到“是的,我们需要一个数据仓库”或“不,今天的回报太小”的东西。我认为我应该能够回答的具体问题是:

  1. 在什么时候构建数据仓库是一个值得考虑的选择?换句话说,我应该注意哪些迹象、指标或其他标准可能表明标准事务环境不再足够?

  2. 完整数据仓库的替代方案是什么?事务数据库中的非规范化和沼泽标准复制的“报告服务器”是我想到的两个;在投身 DW 之前,我还有什么需要探索的吗?

  3. 为什么数据仓库比上述替代方案更好?如果答案是“取决于”,那么它取决于什么?

  4. 什么时候不应该尝试构建数据仓库?无论上下文如何,我都对任何被宣布为“最佳实践”的东西持怀疑态度。当然,在某些情况下,DW 是错误的选择——它们是什么?

  5. 有没有我可以看的通过引入数据仓库来改进系统的实际示例?可以端到端地向我解释,他们需要仓库进行什么样的决策或分析,他们如何决定在其中放置什么,以及仓库最终如何适应更大的环境?我不想要一个人为的“让我们从 AdventureWorks 数据库中制作一个立方体”——实现与我无关,我对所涉及的规范和设计以及整体思考过程感兴趣。

我一般尽量不问多方,但我认为这些都是密切相关的。我愿意接受至少解决前 4 个问题的任何答案,尽管最后一个问题确实有助于在我的脑海中明确这一点。如果有人已经写过这方面的链接,那么链接很好,只要它们相当简洁和具体(链接到 Ralph Kimball 的主页 = 没有帮助)。

希望我已经把问题说清楚了——提前感谢您的回答!

4

7 回答 7

46

我会尽量简洁地回答你的问题。

1.在什么时候构建数据仓库是一个值得考虑的选择?换句话说,我应该注意哪些迹象、指标或其他标准可能表明标准事务环境不再足够?

一种。如果您发现报告和监控正在损害您的生产系统和/或离线数据存储的性能。

湾。如果您发现获得业务问题的答案每次都需要构建大量复杂的 SQL。

C。如果您发现每次更改事务模式时,您都必须返回并重新处理所有报告查询。

d。如果您想汇集来自多个来源的数据。

2.完整数据仓库的替代方案是什么?事务数据库中的非规范化和沼泽标准复制的“报告服务器”是我想到的两个;在投身 DW 之前,我还有什么需要探索的吗?

3.为什么数据仓库比上述替代方案更好?如果答案是“取决于”,那么它取决于什么?

我会一起回答这些。我不会认为数据仓库是全有或全无的冒险。这只是一个简洁的短语,意思是“以一种可以让您更轻松、更快速地回答业务问题的方式存储您的数据”。

事务数据库旨在有效地与应用程序交互。数据仓库、数据集市、运营数据存储和报告表的构建是为了有效地与人交互,如果这有意义的话。

4.什么时候不应该尝试构建数据仓库?无论上下文如何,我都对任何被宣布为“最佳实践”的东西持怀疑态度。当然,在某些情况下,DW 是错误的选择——它们是什么?

好问题。如果您的交易系统为您提供了对业务的足够洞察力,那么您可能不需要仓储。

如果您只有一个数据源并且性能不是问题,您可能可以通过创建简单的报告表获得洞察力。

5.我可以看看通过引入数据仓库来改进系统的任何实际示例吗?可以端到端地向我解释,他们需要仓库进行什么样的决策或分析,他们如何决定在其中放置什么,以及仓库最终如何适应更大的环境?我不想要一个人为的“让我们从 AdventureWorks 数据库中制作一个立方体”——实现与我无关,我对所涉及的规范和设计以及整体思考过程感兴趣。

这是一个很大的问题,需要的篇幅比我在这里分配的要多得多。

在这一点上,我可以为您指出一些可能提供您所寻求的洞察力的地方。

  • Bruce Ullrey 所著的“实施数据仓库:一种有效的方法论”是一本书,记录了一个人构建数据仓库的历程。它没有高度抛光,这使它更加真实。它读起来就像一本日记,里面有很多模型和其他视觉效果,很好地说明了他的努力。
  • Larissa Moss 的“商业智能路线图”。标准票价。引导您完成构建高级别的 BI 实践的过程。
  • Steve Williams 的“商业智能的利润影响”提供了一些案例研究,展示了构建数据仓库的价值。
于 2010-01-02T21:33:06.493 回答
6
  1. DW 的主要目的是加速(简化)报告和分析。它可以以业务用户可以想到的任何方式对数据进行切片和切块。

  2. 作为 DW 的第一步,您可以简单地实现一个 Kimball 星型模式并针对它运行 SQL 查询。如果这被证明仍然太慢,请开始考虑预先计算的聚合(多维数据集)。

  3. 针对 DW 对信息进行切片和切块比针对规范化数据库要简单得多。复制的报表服务器将提高性能,但不会简化切片和切块。还要记住,DW 属于业务用户,因此他们可以随时提出各种切片/骰子的想法——IT 人员应该简单地提供这样的环境。

  4. 如果您只是不时地在您的操作系统上运行一些报告并且对性能感到满意,那么就不需要 DW。

  5. 我所有的经验都是在系统中,业务用户无休止地抱怨报告速度慢和无法编写“复杂的查询”,而生产人员抱怨数据库由于报告而陷入困境。在所有情况下,一个简单的 Kimball 星和一个带有缓存和快照的报表服务器就足够了。

于 2010-01-02T21:12:13.507 回答
3
  1. 当以下两个条件匹配时,您应该考虑构建数据仓库:

    • 海量数据
    • 许多大型复杂选择(可能与少数插入、更新和删除相比)执行时间过长(并且编写起来很复杂)
    • 来自不同系统的数据需要合并
  2. 这确实是您认为数据仓库的问题。在许多情况下,只要您能坚持使用关系数据库管理系统,您就可以逐渐从带有一些报告的 OLTP 系统迁移到成熟的数据仓库。首先可能是构建第一个事实表,并继续使用规范化表作为维度。然后在游戏中添加更多事实、更多事实表或专用维度表。首先在同一个数据库(或相关系统的数据库之一)中,稍后可能会移动到单独的数据库。

  3. 完整的数据仓库(单独的数据库,星型模式)提供了调整 select 语句的最佳选项,除了转到专门的系统。它还与 OLTP 系统完全分离。想想架构设计,还有 CPU、I/O 和内存等资源以及组织,比如新版本的调度。当然,这是您可能不需要的大量工作。

  4. 它在上面的答案中:仅仅因为您有一些复杂的查询,并不意味着您应该构建一个 DWH,如果它们是孤立的,其他条件也同样适用。

  5. 在这里不能提供太多,但建议是:敏捷。DWH 的要求在很大程度上取决于用户看到的可能性。那里的要求可能会发生变化。使用数据库自​​动化测试是一件痛苦的事情,但在没有适当测试的生产系统中鬼混更糟。

于 2010-01-02T20:38:33.967 回答
2

在什么时候构建数据仓库是一个值得考虑的选择?换句话说,我应该注意哪些迹象、指标或其他标准可能表明标准事务环境不再足够?

当您观察到在事务数据存储中执行报告和分析活动对两者都有害时,我建议您使用数据仓库。

完整数据仓库的替代方案是什么?事务数据库中的非规范化和沼泽标准复制的“报告服务器”是我想到的两个;在投身 DW 之前,我还有什么需要探索的吗?

我在这里没有什么可以提供的。我想说,不管你是否称它为仓库,保持事务和报告数据库对我来说似乎是明智的。数据挖掘可能是一项非常占用 CPU 资源的活动。

为什么数据仓库比上述替代方案更好?如果答案是“取决于”,那么它取决于什么?

我在这里没有什么可以提供的。

什么时候不应该尝试构建数据仓库?无论上下文如何,我都对任何被宣布为“最佳实践”的东西持怀疑态度。当然,在某些情况下,DW 是错误的选择——它们是什么?

我想说的是,如果您不需要保留很长的历史记录,不需要对数据进行深入分析,并且您的报告需求仅限于不时的临时查询,那么也许数据仓库不是必要的。

有没有我可以看的通过引入数据仓库来改进系统的实际示例?可以端到端地向我解释,他们需要仓库进行什么样的决策或分析,他们如何决定在其中放置什么,以及仓库最终如何适应更大的环境?我不想要一个人为的“让我们从 AdventureWorks 数据库中制作一个立方体”——实现与我无关,我对所涉及的规范和设计以及整体思考过程感兴趣。

在我到达之前,我的雇主已经使用了很多年的数据仓库,所以我无法说出我到达之前的情况。

于 2010-01-02T19:54:30.610 回答
2

根据我的经验,开始考虑数据仓库的第一个迹象是当您拥有(或正在开发)事务数据库并且用户开始添加大量报告和数据历史记录要求时。几乎总是这样。拥有一个单独的数据仓库或报告数据库总是比尝试设计一个处理最终用户始终拥有的报告需求的事务系统更容易。在事务系统中存储历史(用于业务实体)会增加复杂性并使应该尽可能响应的数据库膨胀。

另一方面,我曾在大型公司工作过,许多团队创建了数据仓库,因为感兴趣的数据分布在许多系统中,因此难以查询。问题是每个小组都创建了自己的数据仓库,因为公司中所有现有的仓库都没有正确的信息子集,或者有一个被认为不是最佳或不正确的数据模型。这使情况变得更糟,因为它创建了更加分散且难以比较的数据系统。

于 2010-01-02T20:04:45.970 回答
0

如果长期使用“交易系统”,则可以考虑使用 DW。后来,他们意识到他们需要执行一些数据挖掘,以确定业务的不同数据模式。最后,在确定的数据模式的帮助下,人们希望帮助高层管理人员做出有利于公司的进一步决策。

建立数据仓库需要采取以下步骤:

  1. 需要为数据库确定一个 ETL 平台和数据库。
  2. 需要为可视化选择像 SSRS、Tableau 等报告工具。
  3. 人们可能会选择像 R 这样的数据分析语言以供进一步使用。
  4. Finally, all this will help in developing the data ware house and reporting tool. 
于 2015-07-20T05:04:16.657 回答
-1

“我认为为什么有些项目会失败?”

主要原因有五个:

  • IT 部门和业务用户之间缺乏合作伙伴关系;
  • 不正确的数据仓库架构;
  • 经验丰富的人不够;
  • 计划不当,例如未使用经过验证的方法和确保不遗漏任何细节的计划;
  • 并取决于尖端技术。
于 2013-08-08T15:55:59.793 回答