您应该使用数据仓库中的登台数据库作为操作数据源吗?
即,其他操作(非 BI)系统从该数据库中获取数据是否是一种好的做法?或者数据仓库是否用于信息报告/分析,绝对不是用于信息处理/提供给其他系统?
一般来说,从数据仓库系统的任何部分获取操作数据是否是一种好的做法?或者数据仓库应该只是数据的消费者?
您应该使用数据仓库中的登台数据库作为操作数据源吗?
即,其他操作(非 BI)系统从该数据库中获取数据是否是一种好的做法?或者数据仓库是否用于信息报告/分析,绝对不是用于信息处理/提供给其他系统?
一般来说,从数据仓库系统的任何部分获取操作数据是否是一种好的做法?或者数据仓库应该只是数据的消费者?
有一个论坛讨论对此进行了简要讨论,但 IMO 讨论得很好:Tek Tips - Using a data warehouse as a source system
需要考虑的几点:
重复工作/单一事实来源
操作系统是否需要对数据仓库已经执行的源数据应用相同的逻辑?
只读源
操作系统是否希望将更改/更新写回仓库?
及时信息
操作系统对仓库的延迟是否满意?(一般为T-1)
服务水平协议
如果仓库中断,对操作系统有何影响?根据我的经验,仓库本质上比事务系统具有较低的优先级,例如,最多 24 小时可用(用于查询)和最多 4 天的 ETL 恢复、运行和仓库是最新的。
如果操作系统是内部的和非关键的,这可能是可以接受的。如果它是面向客户的,并且从仓库中检索外汇汇率进行定价,则可能不是。
我认为该论坛帖子中的引述很好地总结了它:
您的角色是向企业提供事实。如果企业愿意接受风险并继续使用数据仓库作为操作系统的来源,那么我建议您以书面形式获得并一式三份。
一个“两全其美”的解决方案是让仓库在处理完数据后发布供操作系统使用的数据。数据可以提取到文件或复制到另一个/操作系统的数据库。这假设您的仓库不是“实时”的。
我必须承认,每当有人建议将操作系统连接到我们的仓库时,我都会很生气。在我们的环境中,我们做出了架构决策,即我们不会控制用户使用数据的方式,前提是它不会对我们的 ETL 流程或其他用户产生不公平的影响。一个操作系统变成了另一个“用户查询”,因此我们提供与财务初级分析师 Joe Bloggs 相同级别的服务可用性和准确性。
如果用户需要更高级别的服务,那么我们将提供数据(通过 FTP 文件),而不是用户提取数据(通过查询/直接访问)。这有助于对未来变化进行影响分析,因为提取物在我们的 ETL 工具/套件中可见。
任何东西都不应该访问登台数据库,因为那是存储部分清理的数据的地方,并且任何系统都不应该访问部分清理的数据(当然,完成清理并将数据加载到数据仓库数据库的那些进程除外)。
现在,一旦数据被完全清理,就可以考虑允许操作源数据库访问它,基于数据的及时性、访问速度、回写等要求。就我个人而言,我认为 Kimball 单向流(操作源→数据仓库星型模式→数据仓库立方体→演示)是一个好主意,所以我需要一个非常有说服力的论据来实现数据仓库→操作源。