控制流和数据应该分开吗?
在我看来,显而易见的答案是否定的。
所以…下面是一个场景
- 服务生成数据并将其发布到本地表,供ETL单独的进程拾取并集成到主报表数据仓库中。
- 建议源服务应该通知ETL这些数据是可用的……所以它不需要定期检查
- 它创建了一个结构依赖,因为服务需要了解ETL
- 它还创建了时间依赖性(如果任何一个进程关闭/崩溃了怎么办?)
如果ETL对数据感兴趣,它应该主动进行检查另一种选择是服务主动将其发送到消息队列,从而将通知委托给队列基础设施。
我曾经在中心进程面向etl的应用程序上工作了将近十年。当您使用这样移动数据的进程时,创建关于进程运行和运行期间加载的数据的元数据是非常重要的。事实证明,这对审计来说是非常宝贵的。它还可以帮助您监视性能,如果操作得当,还可以监视加载数据的正确性。
此外,在您的情况下,它将允许消费者进程以相同的方式检查数据加载元数据表来检查新的可用数据,而不是为不同的数据表创建单独的查询。