数据仓库注意事项:何时和为什么?

这里有一点背景:

我知道什么是数据仓库 ,或多或less。 我已经阅读了数十篇关于数据仓库的指南,我已经使用了SSAS,我知道什么是星型模式,维度表和事实表,我知道ETL是什么以及如何去做。 这不是一个“如何”的问题或者对教程的要求。

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

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

  1. 在什么时候构build数据仓库是一个值得考虑的select? 换句话说,我应该寻找什么样的迹象,指标或其他标准,这可能表明一个标准的交易环境已经不够了。

  2. 全function数据仓库有哪些替代scheme? 在事务数据库和沼气标准复制的“报告服务器”中的非规范化是想到的两个; 在提交DW之前还有其他的我应该探讨吗?

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

  4. 什么时候不应该尝试构build数据仓库? 我对所有被视为“最佳实践”的事物持怀疑态度,而不考虑上下文。 当然,必须有一些情况下DW是错误的select – 它们是什么?

  5. 有没有什么实际的例子可以看到通过引入数据仓库而得到改进的系统? 一些能够向我解释的,端到端的,他们需要什么types的决策或分析,他们如何决定如何投入,以及仓库如何适应更大的环境? 我不想做一个“让我们从AdventureWorks数据库中创build一个多维数据集” – 这个实现与我无关,我对所涉及的规范和devise以及整个思维过程感兴趣。

我一般不要问多方,但我认为这些都是非常密切的。 我愿意接受任何解答至less前四个问题的答案,尽pipe最后的答案确实有助于在我的脑海中形成这种结果。 链接是好的,如果有人已经写了这个,只要他们是合理的简洁和具体(链接到Ralph Kimball的主页=没有帮助)。

希望我已经明确提出了这个问题 – 在此先感谢您的答案!

我会看看我是否可以尽我所能,简洁地回答你的问题。

1.build立数据仓库是一个值得考虑的选项? 换句话说,我应该寻找什么样的迹象,指标或其他标准,这可能表明一个标准的交易环境已经不够了。

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

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

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

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

2.全function数据仓库的替代scheme有哪些? 在事务数据库和沼气标准复制的“报告服务器”中的非规范化是想到的两个; 在提交DW之前还有其他的我应该探讨吗?

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

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

事务数据库被devise为高效地与应用程序接口。 数据仓库,数据集市,运营数据存储和报表都是为了高效地与人员交互而构build的,如果这样做合理的话。

4.我不应该试图build立一个数据仓库吗? 我对所有被视为“最佳实践”的事物持怀疑态度,而不考虑上下文。 当然,必须有一些情况下DW是错误的select – 它们是什么?

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

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

5.有没有什么实际的例子可以看看通过引入数据仓库得到改进的系统? 一些能够向我解释的,端到端的,他们需要什么types的决策或分析,他们如何决定如何投入,以及仓库如何适应更大的环境? 我不想做一个“让我们从AdventureWorks数据库中创build一个多维数据集” – 这个实现与我无关,我对所涉及的规范和devise以及整个思维过程感兴趣。

这是一个很大的问题,需要比我在这里分配更多的空间。

在这一点上,我可以指出你可以提供你所寻求的洞察力的几个地方。

  • “实施数据仓库:一种有效的方法论”由Bruce Ullrey撰写,是一本logging一个人build设数据仓库之旅的书。 它没有高度抛光,这使它更加现实。 它看起来像一个有许多模型和其他视觉效果的日记,可以很好地说明他的努力。
  • “商业智能路线图”由Larissa Moss提供。 标准车费。 通过构buildBI实践的过程走向高层。
  • 商业智能的利润影响“由史蒂夫威廉姆斯给出了一些案例研究,显示build设数据仓库的价值。
  1. DW的主要目的是加速(简化)报告和分析。 它使业务用户能够以任何方式对数据进行切片和切块。

  2. 对于第一步DW,您可以简单地实现一个Kimball星型模式,并对其运行SQL查询。 如果这certificate仍然太慢,开始考虑预先计算的聚合(立方体)。

  3. 对数据仓库进行信息的分割和切块要比对标准化的数据库简单得多。 复制报告服务器将提高性能,但不会简化切片和切片。 同时请记住,DW属于商业用户,所以他们随时拿出各种切片/骰子的想法 – IT人员应该简单地提供这样的环境。

  4. 如果您只是在运营系统上不时地运行一些报表,并且对性能感到满意,则不需要DW。

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

  1. 当以下两个标准匹配时,您应该考虑构build数据仓库:

    • 巨大的数据量
    • 许多大型复杂的select(可能比较less的插入,更新和删除)只需要很长的时间来执行(并被编译)
    • 来自不同系统的数据需要合并
  2. 这真的是你考虑数据仓库的问题。 在很多情况下,只要您可以坚持使用关系数据库pipe理系统,您就可以从OLTP系统逐步迁移到一个完整的数据仓库。 首先可以build立第一个事实表,并继续使用标准化的维度表。 然后在游戏中添加更多的事实,更多的事实表或专门的维度表。 首先在同一个数据库(或相关系统的数据库之一)中,稍后可能转移到一个单独的数据库。

  3. 一个完整的数据库(单独的数据库,星型模式)提供了调整select语句的最佳select,从去专门的系统appart。 它也干净地从oLTP系统中分离出来。 认为模式devise,但也像CPU,I / O和内存和组织的资源,如新版本的调度。 当然这是很多你可能不需要的工作。

  4. 在上面的答案中:只是因为你有一个复杂的查询,并不意味着你应该build立一个DWH,如果是孤立的,也适用于其他标准。

  5. 在这里不能提供很多,但build议:敏捷。 DWH的要求主要取决于用户看到的可能性。 那里的要求可能会改变。 使用数据库自​​动化testing是一件痛苦的事情,但是在没有正确testing的情况下在生产系统中混淆会更糟糕。

在什么时候构build数据仓库是一个值得考虑的选项? 换句话说,我应该寻找什么样的迹象,指标或其他标准,这可能表明一个标准的交易环境已经不够了。

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

全function数据仓库有哪些替代scheme? 在事务数据库和沼气标准复制的“报告服务器”中的非规范化是想到的两个; 在提交DW之前还有其他的我应该探讨吗?

我没有什么可以提供的。 我会说,保持交易和报告数据库似乎对我来说是明智的,不pipe你是否称之为仓库。 数据挖掘可能是一个非常CPU的活动。

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

我没有什么可以提供的。

什么时候不应该尝试构build数据仓库? 我对所有被视为“最佳实践”的事物持怀疑态度,而不考虑上下文。 当然,必须有一些情况下DW是错误的select – 它们是什么?

我想说,如果你不需要保存很长的历史,没有对数据进行深入的分析,并且你的报告需求被限制在不时的临时查询中,那么也许数据仓库不是必要。

有没有什么实际的例子可以看到通过引入数据仓库而得到改进的系统? 一些能够向我解释的,端到端的,他们需要什么types的决策或分析,他们如何决定如何投入,以及仓库如何适应更大的环境? 我不想做一个“让我们从AdventureWorks数据库中创build一个多维数据集” – 这个实现与我无关,我对所涉及的规范和devise以及整个思维过程感兴趣。

我的雇主在我到达之前已经使用了多年的数据仓库,所以在我到达之前我不能说出什么是什么东西。

从我的经验来看,开始考虑数据仓库的第一个标志是当你(或正在开发)一个事务数据库时,用户开始添加大量的报告和数据历史需求。 这是非常总是。 拥有独立的数据仓库或报告数据库比试图devise处理最终用户始终拥有的报告需求的事务处理系统要容易得多。 在交易系统中存储历史logging(针对业务实体)增加了复杂性,并且使应该尽可能快地响应的数据库膨胀。

另一方面,由于感兴趣的数据分布在许多系统中,所以很多公司都在创build数据仓库的大公司中,因此难以查询。 问题是每个小组都创build了自己的数据仓库,因为公司所有的现有仓库都没有正确的信息子集,或者有一个被认为是非最优或不正确的数据模型。 这使得情况变得更糟,因为创build了难以比较的更加不同的数据系统。

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

需要采取以下步骤build设数据仓库:

  1. 需要为数据库决定一个ETL平台和数据库。
  2. 需要为可视化select报告工具,如SSRS,Tableau等。
  3. 可以selectR等数据分析语言作进一步的使用。
  4. 最后,所有这些都将有助于开发数据仓库和报告工具。

“我想为什么一些项目失败了?”

主要有五个原因:

  • IT部门和企业用户之间缺乏合作关系;
  • 错误的数据仓库架构;
  • 经验不足的人;
  • 不正确的计划,如未能使用经过validation的方法和计划,以确保没有细节被遗漏;
  • 并依靠先进的技术。