Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

4年前关闭。



Improve this question




星型架构设计对数据仓库至关重要吗?还是可以使用另一种设计模式进行数据仓库?

最佳答案

star schemas用于数据仓库系统可为您带来一些好处,并且在大多数情况下,将其用于顶层是合适的。您可能还具有运营数据存储(ODS)-一种标准化结构,可保存“当前状态”并简化诸如数据确认之类的操作。但是,在某些合理的情况下,这是不希望的。我曾经有过构建带有或不带有ODS层的系统的机会,并且在每种情况下都有选择架构的特定原因。

无需深入研究数据仓库架构,也无需启动Kimball与Inmon的火焰之战,星型模式的主要好处是:

  • 大多数数据库管理系统
    在查询优化器中具有功能
    进行“明星转型”
    使用Bitmap Index结构或
    Index Intersection快速
    谓词解析。这意味着在解决选择之前,无需点击事实表(通常比索引大很多)就可以完成从星形模式中进行选择。
  • 星形模式相对简单,因为只需要对事实表进行分区(除非您有一些圣经上的大尺寸)。 Partitioning意味着查询优化器可以忽略可能无法参与查询结果的分区,从而节省了I / O。
  • Partition elimination在星型模式上比雪花型实现起来容易得多。
  • Slowly changing dimensions或E-R模式相比,该模式更易于理解,并且涉及的联接较少。您的报告团队会爱上这个
  • 星型模式更易于使用,并且(更重要的是)使之与即席查询工具(例如snowflakeBusiness Objects)一起表现良好。作为开发人员,您几乎无法控制这些工具生成的SQL,因此您需要为查询优化程序提供尽可能多的帮助。星型模式为查询优化器提供了很少的机会来弄错它。

  • 通常,除非有特殊原因,否则报告层将使用星型模式。如果您有多个源系统,则可能需要使用规范化或雪花模式来实现Report Builder来累积数据。这比较容易,因为ODS通常不执行历史记录。在星型模式中跟踪历史状态,这比使用规范化结构更容易做到。规范化或雪花化的操作数据存储反射(reflect)了“当前”状态,并且不具有任何数据固有的历史 View 。

    ODS加载过程与数据清理和合规有关,使用标准化结构更容易做到这一点。一旦您在ODS中拥有了干净的数据,维度和事实负载就可以使用通用或相对简单的机制相对简单地跟踪历史记录(随着时间的变化)。使用星型模式更容易做到这一点。例如,许多ETL工具都提供了内置的功能来缓慢改变尺寸,并且实现通用机制相对简单。

    以这种方式对系统分层提供了责任分离-业务和数据清理逻辑在ODS中处理,而星型模式负载处理历史状态。

    关于database - 星型设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/110032/

    10-10 03:32