首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该将一个事实链接到所有层次的层次维度,还是只有最细粒度的维度?

我应该将一个事实链接到所有层次的层次维度,还是只有最细粒度的维度?
EN

Database Administration用户
提问于 2012-09-17 20:16:47
回答 1查看 1.3K关注 0票数 5

关于同一个项目的相关问题。

我正在研究两种方法来对数据仓库中的事实表和维度表之间的分层关系进行建模,以存储IT基础结构数据。

举个例子:

  • FACT_Folder
    • 包含有关文件系统文件夹的事实。

  • Dim_Drive
    • 文件夹链接到单个驱动器条目。

  • Dim_Array
    • 驱动器链接到单个数组。

  • Dim_Server
    • 数组链接到单个服务器。

  • Dim_Farm
    • 服务器链接到单个场

为了我们的目的,我们不需要担心文件夹移动到不同的驱动器。

我们希望能够在这个层次结构的所有级别上获得度量。

假设我最终将拥有数百万个文件夹实体(包含每日数据),以及数百或数千个驱动器、数组等;您会推荐哪种设计模式,以及为什么?

  1. 归一化
    • 一个Folder链接到一个Drive,而层次结构的其余部分在维度之间

  2. 非正态I
    • 一个Folder链接到一个Drive,但是Drive维度包含每一行的每个Drive条目的整个层次结构

  3. 非正态II型
    • Folder直接链接到层次结构的所有级别。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-09-17 20:45:40

我会在所有/大部分级别进行链接。这个非正态化恒星意味着是的,数据是多余的,但它通常会使报告和分析更加容易。请注意,这与OLTP规范化非常不同,您通常不必担心冗余数据不同步,因为在DW场景中,数据永远不会改变。新的事实被添加,维度被过期,新的被创建。

我没看到Dim_Folder。我假设文件夹的实际路径是Dim_Folder的一个属性。事实表中只有数字数量和任何退化维度(http://en.wikipedia.org/wiki/Degenerate_尺寸)。我不认为文件夹路径是一个退化维度,因为它总是在每个快照中返回(一个文件夹不是一个事务)。

所以你可以这样做:

代码语言:javascript
复制
SELECT AVG(bytes_on_disk)
FROM FACT_Folder
INNER JOIN DIM_Folder
    ON FACT_Folder.FolderDimID = DIM_Folder.DimID
INNER JOIN DIM_Date
    ON FACT_Folder.SnapshotDateID = DIM_Date.DateID
WHERE DIM_Date.Date BETWEEN '20120101' AND '20121231'
    AND DIM_Folder.FolderPath = '/usr/bin/'

看看DIM_Folder的使用如何使dim id集变小,然后在快照日期假设某种索引,然后文件夹dim id(反之亦然)。

如果您只想将数据放到更高的级别上,那么看看您现在也不需要在文件夹上加入。由于您通常在ETL时知道所有这些,所以与OLTP系统中的动机不同,在OLTP系统中,当发生变化时,所有东西都要一起移动(腿骨与大腿骨连接,等等)。在DW场景中,您真的不希望任何东西移动。

所以,砰!-农场总使用量分析:

代码语言:javascript
复制
SELECT DIM_Farm.Farm_Name, SUM(bytes_on_disk)
FROM FACT_Folder
INNER JOIN DIM_Farm
    ON FACT_Folder.FarmDimID = DIM_Farm.DimID
INNER JOIN DIM_Date
    ON FACT_Folder.SnapshotDateID = DIM_Date.DateID
WHERE DIM_Date.Date BETWEEN '20120101' AND '20121231'
GROUP BY DIM_Farm.Farm_Name

记住,星星分析起来真的很简单。你不需要担心不经意间的交叉连接在一颗没有雪花的星星上。当连接不同的星星时,你必须小心。因此,在大多数情况下,查询在星型模式中要简单得多。没有网络穿越和担心许多-许多关系,如在一个规范化的模型。

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

https://dba.stackexchange.com/questions/24445

复制
相关文章

相似问题

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