首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星型模式设计/最佳实践

星型模式设计/最佳实践
EN

Stack Overflow用户
提问于 2017-09-27 02:58:34
回答 2查看 1.4K关注 0票数 2

我正在使用一个系统,该系统有4个数据库:

  • 帐户(储存银行帐户、交易等)
  • 客户端(客户相关信息)
  • 信用(从第三方系统获得利率)
  • 质量(进一步内部计算)

我想为每个数据库创建4个事实表,一个事实表.例如,我将使用ClientAccount、Transaction、Provider作为其维度表的帐户事实表。我将为其他数据库提供3个类似的事实表。

我的问题是:在数据库中包含每个相应的事实表是否有意义?即在帐户数据库中创建会计事实和维度表?或者为我们所有的星型模式创建一个新的数据库,并将所有维度和事实表都包含在他们自己的数据库中更好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-29 15:41:58

除非您的数据量非常小,否则您的数据仓库应该与事务性数据放在一个单独的数据库中。DW有不同的使用模式(OLTP与OLAP),并且通常有不同的维护窗口。

我建议在一个专用的DW数据库中创建所有的Dims和Fact。我想不出分离它们有什么好处,它将减少DBA开销,因为没有额外的数据库来管理/安全/审计/文档。

至于维度与事实,OLTP帐户表中的数据将用于创建一个Dim和一个事实。DimAccount至少是一个退化维度,只包含帐户号。您必须检查您的数据,以确定是否有任何其他记录是帐户的通用属性。FactAccount将包含对其他维度(DimAccountType、DimCustomer、DimLocation等)的引用。

将维度视为查找表/下拉列表中的值,这些值存在于任何事件发生之前。例如,银行可以提供支票和储蓄账户,即使他们还没有账户。

事实证明了一件事。创建帐户时,事实记录将引用描述事件的所有维度,并记录与事件相关的可测量值(如果有的话)。

票数 1
EN

Stack Overflow用户

发布于 2017-09-27 03:25:38

在不太了解系统的情况下,我建议这些是维度表,而不是事实表。维度表表示可以用来构造事实的实体或对象。客户和客户似乎很适合这一点。我不知道什么是信用和质量,但它们也可能是维度。

您的事实表应该表示类似事务的记录。这可能是销售,交易,电话,或任何您的数据仓库报告。然后,此事实表将具有每个维度表的外键。

关于单个或多个数据库,我建议将其存储在单个数据库中。这样更容易使用,而且在查询数据时不必担心数据库链接。您的ETL过程用于填充这些事实表和维度表,可以从这四个数据库中提取数据并将其加载到一个数据库中,然后可以在单个数据库中构建多维数据集。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46438802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档