【发布时间】:2013-10-02 05:41:14
【问题描述】:
我正在使用 Spring Batch 将海量在线数据提取-转换-加载到数据仓库中进行推荐分析。两者都是关系型数据库。
我的问题是,离线 Spring Batch ETL 的最佳实践是什么?满载还是增量加载?我更喜欢满载,因为它更简单。目前我正在使用这些步骤进行数据加载工作:
step1:截断数据仓库中的表A;
step2:将数据加载到表A中;
step3:截断数据仓库中的表B;
step4:将数据加载到表B中;
step5:截断数据仓库中的表C;
step6:将数据加载到表C中;
...
数据仓库中的A、B、C、...这些表被实时推荐系统处理使用。
但由于我从在线数据库加载的数据非常庞大,整个作业处理将非常耗时。所以如果我截断了一个表,还没有加载数据,那么依赖这个表的实时推荐处理就会有很大的问题。如何防止这种数据不完整的发生?使用 Staging Table 或类似的策略?
任何回复将不胜感激。
【问题讨论】:
-
这不是一个真正的 Spring Batch 问题;这只是一个直接的 ETL 设计问题。
-
感谢您的提醒。我修改了标签。