插入星型模式

Posted

技术标签:

【中文标题】插入星型模式【英文标题】:Insert into a star-schema 【发布时间】:2010-03-22 23:58:53 【问题描述】:

我已经阅读了很多关于星型模式、事实/分解表、选择语句以快速报告数据的内容,但是将数据输入星型模式的问题对我来说似乎很冷漠。如何“理论上”将数据输入星型数据库?同时维护事实表。是我唯一的选择(以及如何填充事实表)在巨型存储过程中使用 20 个参数的一系列 INSERT INTO 语句。 非常感谢。

【问题讨论】:

【参考方案1】:

首先从维度开始——一个接一个。使用 ECCD(提取、清洁、符合、交付)方法。

确保每个维度都有一个唯一标识维度行所描述的“对象”的 BusinessKey,例如一个人的电子邮件。

加载维度后,准备键查找管道。一般来说,对于每个维度表,您可以准备一个键查找表(BusinessKey、PrimaryKey)。一些设计人员选择直接查找维度表,但键查找通常可以轻松缓存到内存中,从而加快事实加载速度。

也将 ECCD 用于事实数据。 ECC 部分发生在暂存区域中,您可以根据自己的喜好为 ECC 的每个步骤选择(帮助)表或平面文件。

在交付事实表时,将事实行中的每个 BusinessKey 替换为您从键查找表中获得的匹配 PrimaryKey。将所有 BusinessKey 替换为其匹配的 PrimaryKey 后,将该行插入事实表中。

不要浪费你的时间,使用 ETL 工具。您可以免费下载 Pentaho Kettle(社区版)——它拥有实现这一目标所需的一切。

【讨论】:

【参考方案2】:

您通常不要将数据插入星型模式,就像插入普通形式一样 - 即使用在单个事务中插入/更新所有适当表的存储过程。请记住,星型模式通常是只读的非规范化数据模型 - 它(很少)被事务处理,并且通常从已经非规范化平面的数据中加载 - 通常每个星一个平面文件。

正如 Damir 指出的那样,通常情况下,您加载所有维度(处理缓慢变化等),然后加载事实,加入适当的当前维度以查找维度 ID(使用业务键)。

【讨论】:

以上是关于插入星型模式的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:在左连接查询的执行计划中插入隐藏的“排序”

Google Big Table与广告服务器数据分析的大查询

星型模式雪花模式和事实星座模式

星型模式的 OLAP 或 OLTP?

将现有的数据库模式转换为星型模式

星型模式命名约定