将数据从典型的实体关系OLTP数据库模型加载到Kimball星型模式数据仓库/市场模型中时采用了哪些常见的设计方法?
答案 0 :(得分:8)
就个人而言,我的工作方式如下:
这对我来说效果很好,不过我承认我没有完成很多这些项目,也没有做过任何大项目。
答案 1 :(得分:2)
我目前正在开发一个中小型数据软件公司。我们采用了Kimball提出的一些概念,即具有事实和维度表的星型方案。我们构造它以便事实只与维度相关联(不是事实或维度维度 - 但这是我们的选择,而不是说应该这样做),所以我们将所有维度连接展平到事实表。
我们使用SSIS从生产数据库移动数据 - > source DB - > staging DB - >报告数据库(我们可能已经使用了更少的数据库,但这就是它的下降方式)。
SSIS非常好,因为它可以让您非常合理地构建数据流。我们使用SSIS组件和存储过程的组合,其中SSIS的一个很好的特性是能够提供SQL命令作为源/目标数据流之间的转换。这意味着如果需要,我们可以在每一行调用存储过程,这可能很有用(虽然有点慢)。
我们还使用了一个名为更改数据捕获(CDC)的新SQL Server 2008功能,它允许您审核表上的所有更改(您可以指定要在这些表中查看哪些列),因此我们使用在生产数据库上告诉我们已经改变了什么,这样我们就可以将这些记录移动到源DB进行处理。
答案 2 :(得分:2)
我同意高度评价的答案,但我认为我会添加以下内容:
* Do you use a staging area to perform the transformation and then
加载到仓库?
这取决于转换的类型是否需要升级。分段提供了将ETL分解为更易于管理的块的好处,但还提供了一个工作区域,允许对数据进行操作而不会影响仓库。它可以帮助(至少)在暂存区域中进行一些维度查找,该临时区域存储来自OLTP系统的密钥和最新的昏暗记录的密钥,以在加载事实记录时用作查找。 转换发生在ETL过程本身,但它可能需要或可能不需要一些阶段来帮助它。
* How do you link data between the warehouse and the OLTP database?
将业务键(或实际主键,如果可用)加载到数据仓库中作为对OLTP系统的引用非常有用。此外,DW过程中的审核应通过记录加载过程的加载过程来记录每个数据位的谱系。
* Where/How do you manage the transformation process - in the
数据库为sprocs,dts / ssis包, 或来自应用程序代码的SQL?
这通常是在SSIS包中,但通常在源查询中进行转换更为高效。不幸的是,这使得源查询很难理解并因此维护,因此如果性能不是问题,那么转换SSIS代码是最好的。执行此操作时,这是具有暂存区域的另一个原因,因为您可以在不同表之间的源查询中进行更多连接。
答案 3 :(得分:1)
John Saunders的流程解释很好。
如果您希望在SQL Server中实现Datawarehouse项目,您将在优秀的文本“The Microsoft Data Warehouse Toolkit”中找到交付整个项目所需的所有信息。
很有趣,其中一位作者是Ralph Kimball: - )答案 4 :(得分:0)
您可能需要查看Data Vault Modeling。它声称解决了一些孤独的术语问题,比如改变属性。