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

2024-02-13

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

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

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

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


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

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

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

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

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

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

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

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

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

  • 使用 DATE 字段作为 MySQL 日期维度的主键

    我想处理 MySQL 数据仓库中的日期维度 我是DW世界的新手 我用谷歌进行了一些搜索 看到了很多表结构 大部分 日期维度 其中主键是一个简单的UNSIGNED INTEGER 为什么不使用DATE字段作为主键 因为对于 MySQL 它是
  • Oracle中是否可以部分刷新物化视图?

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

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

    我们希望基于 SAP 表从头开始构建一个新的数据仓库 对于提取 转换和加载 ETL 过程 我们希望使用 Microsoft SQL Server Integration Services 市场上有许多供应商 如 Theobald CData
  • 用户数据的数据仓库-设计Q

    如何最好地存储用户数据与日期 时间维度 用例是我试图存储每天 每小时的用户操作 例如分享数 喜欢数 好友数等 我有一个时间表和日期表 对于时间来说很简单 我每天的每个小时的每一行 user id 和列 1 到 24 但问题在于日期 如果我每
  • 数据仓库的日历表

    对于我的数据仓库 我正在创建一个日历表 如下所示 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
  • SQL 数据仓库,需要帮助使用 T SQL SELECT 或更好的替代方案填充我的 DIMENSION?

    我的 SQL Server 中有一个表 我在其中 暂存 来自 ERP 系统的数据仓库提取内容 从这个暂存表 表名 DBO DWUSD LIVE 我构建维度并加载事实数据 示例 DIMENSION 表称为 SHIPTO 该维度具有以下列 sh
  • 无法为 Visual Studio 2017 Professional 安装 SSDT

    需要你的帮助 我已经在我的电脑上成功安装了VS2017 但是当我尝试安装 SQL Server 数据工具 15 6 0 或 15 5 1 时 出现如下错误 设置失败 无法打开配置注册表项 0x800703F3 谢谢大家 SSDT 的最新版本
  • 合并 - 条件“匹配时更新”

    下图中的亮点显示了我想要实现的逻辑 我意识到语法不正确 有没有办法有条件地更新 MERGE 语句中的记录 仅当目标表中某一列的值为 NULL 并且源表中相应的值不为 null 时 你建议如何重写这个 MERGE dbo input 311
  • SSIS - OLE DB 目标 - 表或视图加载与快速加载

    据我读到 表或视图数据访问模式将每一行作为一个事务一次提交 因此 制作一个传输 500 万行的包需要很长时间 30 分钟以上 快速加载数据访问模式允许在插入到目标时指定批处理行和提交大小 例如 插入 500 万条记录只需 2 分钟多一点 现
  • 如何对数据仓库中的流程和状态历史进行建模?

    假设我们有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 数据集市设
  • 在pentaho中..如何传递包含作业中所有连接参数定义的文本文件?

    我正在使用 jdbc 连接 并使用示例 sample db connection 传递参数 并且该参数已在服务器中的文本文件中定义为sample db connection localhost 并且我想在作业步骤中传递文本文件 以便每当作业
  • 数据仓库模型:集线器有什么用?

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

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

随机推荐