餐厅隐喻:
数据仓库就像一家餐馆
。您会从多种杂货中获得蔬菜和食材。但是,您不能在餐桌上准备食物客户。
您需要一个名为- 储藏室的单独区域来存放蔬菜。
您需要一个单独的区域,称为- 厨房顶部
,以检查蔬菜的质量,清洁蔬菜,切蔬菜以使其符合要求。配方的大小合适,添加合适的原料并制成最终的食谱。 您需要一个名为- 宴会厅
的单独区域,才能为客户提供最终的食谱。
现在,以数据仓库为例。 - 您需要从不同的源系统获取不同的数据。其中一些来自ORACLE,一些来自Teradata,一些来自企业消息系统等。临时区域的目标是存储原始数据。成分之间存在依赖性。您需要所有这些人来准备食谱。
您需要将它们放在登台层中。就像储藏室一样。
数据经过清理,验证,符合正确的尺寸,并添加了其他密钥,并转换了数据以适合数据仓库。这些转换通常发生在内存中。在某些情况下,表中可能会有中间存储。 是转换层。就像厨房顶一样。
将转换后的数据加载到数据仓库表中。它被加载到尺寸模型中。 这是表示层或加载层。在宴会厅,自助晚餐时有食物。
因此,您需要三个单独的层,以便所有层都可以正常工作而不会干扰其他层。还有其他因素,例如:与不同层有关的安全性- 对源数据问题的故障排除
- 历史数据维护
- 会议合规性
- 如果需要,请从暂存区完全重建数据仓库
- 更多]
我会说这种方法提供了明确性。如果您将所有转换/业务逻辑都放在一个(或至少更少)模式上,那么对于开发人员来说,具有全局性的依赖性以及在进行疑难解答时应该去哪儿等要容易得多。这一点很重要,尤其是在加入新开发人员时。同样,权限通常在架构级别提供。您通常希望授予最终用户某种对维对象的访问权限,而不是原始/阶段数据的访问权限。根据您的ETL负载和数据,模式也可以用于确定可以并行加载哪些对象以减少总体加载时间。