我正在使用 Spring Batch 将海量在线数据提取-转换-加载到数据仓库中进行推荐分析。两者都是关系型数据库。
我的问题是,离线 Spring Batch ETL 的最佳实践是什么?满载还是增量加载?我更喜欢满载,因为它更简单。目前我正在使用这些步骤进行数据加载工作:
step1:截断数据仓库中的表A;
step2:将数据加载到表A中;
step3:截断数据仓库中的表B;
step4:将数据加载到表B中;
step5:截断数据仓库中的表C;
step6:将数据加载到表C中;
...
数据仓库中的那些表A
, B
, C
, ... 供实时推荐系统处理使用。
但是由于我从在线数据库加载的数据非常庞大,整个作业处理将非常耗时。所以如果我截断了一个表,还没有加载数据,那么依赖这个表的实时推荐处理就会有很大的问题。如何防止这种数据不完整的发生?使用暂存表或类似的策略?
任何答复将不胜感激。