【问题标题】:Dimension with two surrogate keys or two seperate dimensions?具有两个代理键或两个单独维度的维度?
【发布时间】:2016-02-29 13:25:07
【问题描述】:

我正在寻找维度建模的一些指导。 我正在查看一些以星型模式存储在数据库中的搜索数据。一维用于查询,一维用于登录页面。两个维度都有一个代理键,它作为外键存储在事实表中。

事实表大约有 1 亿行,每个维度大约有 10 万行。

由于这些表的连接最近花费了很长时间,我想知道将两个维度组合成一个维度是否是个好主意,以便它只连接到一个表。这两个维度是 M:N,所以新维度会非常大。

谢谢!!

【问题讨论】:

    标签: data-warehouse dimensional-modeling


    【解决方案1】:

    在不了解更多数据的情况下,您的问题没有“正确”答案(例如您的事实表中是否有更多维度?您有多少查询和着陆页组合?),但很少有 cmets :

    • 你当前的设计(我可以从这里理解)还不错,你有很多数据,你必须处理它,但是将两个维度与 100K 元素结合起来以避免连接不会对我来说似乎是正确的

    • 尝试优化您的查询,如果没有索引,则构建索引,并行化您的查询(如果您的数据库引擎允许这样做),如果可能,请尽量避免在您的位置使用like,最后资源考虑更多的硬件或不同的数据库引擎。

    • 如果您通常只使用其中一个维度进行查询,也许您可​​以考虑使用聚合表来减少行数,您将使用更多空间,但您的查询将只有一个连接和一个较小的事实表

    • 查询可以是登录页面的子级吗? (即 stackoverflow.com 是“Guru Meditation error message”之类的查询的父级,而“stackcareers.com”是“datalake 作业池男孩”之类的查询的父级)当然,您将以相同的查询结束多个登录页面,您将需要在这种情况下分配不同的外键。但是这种不同的模型可能会导致不同的解决方案,您将只有 1:M 关系,并且可以通过登录页面维度构建聚合表,但这需要更改您的查询以提取数据。再说一次,我不知道你的数据,也许它会更有意义 Queries parent of Landing Pages...

    这只是我的“想法”,没有解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2015-03-21
      • 2022-11-25
      • 2015-11-28
      • 1970-01-01
      • 2018-10-03
      • 2021-12-12
      相关资源
      最近更新 更多