数据仓库 - 星型模式与扁平表

2024-02-13

我正在尝试为财务系统、项目调度系统和无数科学系统等常用数据的单一存储设计一个数据仓库。 IE。许多不同的数据集市。

我一直在阅读数据仓库和流行的方法,例如星型模式和 Kimball 方法等,但我找不到答案的一个问题是:

为什么将 DW 数据集市设计为星型模式而不是单个平面表更好?

当然,事实和属性/维度之间没有联接比对所有维度表进行大量小联接更快、更简单?磁盘空间不是问题,如有必要,我们将在数据库中添加更多磁盘。如今,星型模式是否有点过时了,或者它仍然是数据架构师的教条?


你的问题很好:维度建模的 Kimball 口号是提高性能和可用性。

但我不认为它已经过时,也不是教条——对于许多情况和平台来说,它是一种合理、实用的方法。

关系数据库存储数据的方式意味着表的数量和类型、典型查询的数据路由、数据之间关系的易于维护性和描述、连接数量、连接方式之间需要达到平衡构造、列的可索引性等。

3NF(或更进一步)是该范围的一端,适合 OLTP 系统,而单个表是该范围的另一端。维度模型位于中间,适合报告,至少在使用某些技术时是这样。

性能并不完全与“连接数量”有关,尽管星型模式在报告工作负载方面比完全规范化的数据库表现更好,部分原因是连接数量减少。尺寸通常非常宽。如果您在每个事实的每一行中都包含所有这些维度字段,那么您确实拥有非常大的行,并且对于典型的查询来说,找到进入这些行的方式将会表现得非常糟糕。

事实有很多,因此,如果您可以使这些表变得紧凑,并且可以过滤“更冗长”的维度,那么您将达到单个表无法匹配的性能最佳点,除非有大量索引。

是的,事实的单个表格在表格数量方面更简单,但它真的更容易导航吗?维度和事实是易于理解的概念,如果您想跨事实进行交叉查询该怎么办?您拥有许多不同的数据集市,但拥有数据仓库的好处之一是,这些数据集市并没有明显的区别—​​—它们是相关的并且可以相互报告。一致的尺寸可以实现这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据仓库 - 星型模式与扁平表 的相关文章

  • Oracle中是否可以部分刷新物化视图?

    我有一个非常复杂的 Oracle 视图 基于其他物化视图 常规视图以及一些表 我无法 快速刷新 它 大多数时候 此视图中的现有记录基于日期并且是 稳定的 新记录集具有新日期 有时 我会收到回溯日期 我知道这些是什么以及如果我维护一张桌子如何
  • 事实表是标准化形式还是非标准化形式?

    我对事实表做了一些研究和开发 无论它们是标准化的还是非标准化的 我发现了一些让我困惑的发现 根据Kimball 维度模型结合了规范化和非规范化的表结构 描述性信息的维度表是高度非规范化的 在同一个表中具有详细且分层的汇总属性 同时 具有性能
  • 将 SQL Server 数据库数据移至 SAP BW

    我读过一些关于将数据从 SAP BW 移入 SQL Server 的文章 我找不到任何有关将数据从 SQL Server 移动到 SAP BW 的文章 这是否可能 如果可以 处理此问题的最佳方法是什么 在搜索这个主题后 我发现了许多解决这个
  • 数据仓库的日历表

    对于我的数据仓库 我正在创建一个日历表 如下所示 SET NOCOUNT ON DROP Table dbo Calendar GO Create Table dbo Calendar CalendarId Integer NOT NULL
  • Oracle 中的分组依据与分区依据

    我正在编写一个查询来从 Oracle 仓库中获取记录 它是一个简单的选择查询 在几个表上进行连接 并且我有几个要聚合的列 因此我最终在其余列上使用 Groupby 假设我选择了大约 10 列 其中 5 列是聚合列 所以我需要对其他 5 列进
  • 数据仓库 - 具有多对多关系的缓慢变化的维度

    举个例子 假设我有一个包含两个维度和一个度量的事实表 事实货币表 项目密钥 int PersonKey 整数 现金金额 两个维度的定义如下 DimProject 0 型维度 即静态 项目密钥 int 项目名称 varchar 50 DimP
  • 是否应该对 OLAP 数据库进行非规范化以提高读取性能? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直认为数据库应该针对读取性能进行非规范化 就像针对 OLAP 数据库设计所做的那样 而不是针对 OLTP 设计进一步夸大 3NF 各种职位的
  • 在 hive 中生成星型模式

    我来自 SQL 数据仓库世界 我通过平面提要生成维度和事实表 在一般的数据仓库项目中 我们将数据源分为事实和维度 前任 我对 Hadoop 完全陌生 我开始知道我可以在 hive 中构建数据仓库 现在 我熟悉了使用 guid 我认为它可以用
  • 如何对数据仓库中的流程和状态历史进行建模?

    假设我们有D PROCESS D WORKER and D STATUS作为尺寸和事实F EVENT将流程 内容 与工作人员 负责人 和 当前 状态联系起来 进程状态随时间而变化 我们应该存储在F EVENT每个进程 状态 工作人员一行 或
  • 数据仓库中的时间和日期维度

    I m building a data warehouse Each fact has it s timestamp I need to create reports by day month quarter but by hours to
  • 使用 SSIS 将 SQL Azure 联合数据库提取到数据仓库

    我正在尝试将我们的生产数据传输到数据仓库以用于报告目的 我尝试按照 导入到联盟 部分进行操作用于 Azure 和混合数据移动的 SSIS http msdn microsoft com en us library jj901708 aspx
  • 数据仓库 - 星型模式与扁平表

    我正在尝试为财务系统 项目调度系统和无数科学系统等常用数据的单一存储设计一个数据仓库 IE 许多不同的数据集市 我一直在阅读数据仓库和流行的方法 例如星型模式和 Kimball 方法等 但我找不到答案的一个问题是 为什么将 DW 数据集市设
  • 数据仓库模型:集线器有什么用?

    我刚刚读到数据仓库建模 https en wikipedia org wiki Data vault modeling据我了解 集线器仅包含密钥 和记录源 所以我想知道为什么我应该创建这些中心表 只是为了存储记录源 仅拥有卫星和链接还不够吗
  • 创建实时数据仓库

    我正在做一个个人项目 其中包括创建数据仓库 DWH 的完整架构 在本例中 作为 ETL 和 BI 分析工具 我决定使用 Pentaho 它具有许多功能 从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集 我读过数据仓库必须是关
  • 包含可在源系统中定期更新的信息的事实表

    我正在构建一个维度数据仓库 并学习如何从仓库中的源系统对各种业务流程进行建模 我目前正在将数据仓库中源系统的 投标 工作投标 建模为事实表 其中包含以下信息 投标金额 预计收入 销售人员 出价状态 有效 待定 拒绝等 etc 问题在于 出价
  • 如何创建历史事实表?

    我的数据仓库中有一些实体 Person 具有 personId dateFrom dateTo 和其他可以更改的属性 例如姓氏 出生日期等 缓慢变化的维度 Document 文档 ID 编号 类型 Address 地址 ID 城市 街道 房
  • 什么是多维 OLAP CUBE 并给出超过 3 维的多维数据集示例

    由于我是 SSAS 的新手 一直在阅读有关多维 OLAP 多维数据集的文章 并努力理解多维数据集的概念 据说虽然术语 多维数据集 表示三个维度 但多维数据集最多可以有 64 个维度 你能解释一下这在立方体上怎么可能吗 除了 3 Dim 示例
  • Microsoft Azure 数据仓库和 SqlAlchemy

    我正在尝试使用 python 的 sqlalchemy 库连接到 microsoft azure 数据仓库 并收到以下错误 pyodbc Error HY000 HY000 Microsoft ODBC SQL Server Driver
  • SQL Server 中临时表的使用

    这是一个悬而未决的问题 但我真的很想听听人们的意见 我很少使用显式声明的临时表 表变量或常规 tmp 表 因为我相信不这样做会导致更简洁 可读和可调试的 T SQL 我还认为 在需要时 例如当您在查询中使用派生表时 SQL 可以比我更好地利
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或

随机推荐