首页 > 解决方案 > 数据仓库:谁发起从多个源提取数据到暂存区,是源还是数据仓库?

问题描述

我对数据仓库中的 ETL(尤其是提取的)有疑问。

从这篇文章来看,暂存区主要是出于时间原因,有些甚至不需要暂存区。

假设我有 3 台微服务服务器,每台都有自己的数据库、2 台操作服务器和 1 台数据仓库服务器。

  1. 服务器 1:计划每天提取数据
  2. 服务器 2:数据需要在数据仓库中实时可用

谁将启动提取数据?我的想法是

  1. Server 1:数据提取由数据仓库服务器发起,直接从Server 1的数据库中提取,每天定时
  2. Server 2:时间无法调度,所以数据仓库服务器提供API供Server 2使用,Server 2在每次有数据时通过提供的API发起数据提取或者向数据仓库服务器发送数据。

但我不确定,我是否应该为所有运营服务器提供 API 并让他们决定何时将数据发送到仓库?还是直接从操作数据库中提取数据的所有数据仓库服务器工作?如果是这样,如何提取实时的?

标签: databasemicroservicesetldata-warehouse

解决方案


您提出的方法(您每天 ping 服务器 1,但几乎实时从服务器 2 接收数据)是我过去看到的。不过,您可能需要考虑以下几点:

  • 有时服务器 2 无法配置为自动 ping API,因为它的数据库不支持触发器。如果是这种情况,那么您可能需要定期从 DW ping 服务器 2,例如每五分钟一次。
  • 通常,您会每晚查询服务器 1。也就是说,我可以看到服务器 1 只告诉您何时可以读取它实际上可能会更好。在第二种情况下,您的 DW 不必担心与服务器 1 的时间表同步;如果服务器 1 有处理延迟或者它的批处理窗口运行时间很长,当数据准备好时,你的 DW 仍然会获取它的数据。

推荐阅读