3

我有一个带有自动递增整数主键的大型数据库表,我每天使用 Spring Batch 创建表的提取以供其他系统使用。

我正在使用持久化上一个提取中放置的最高 id 的方法来设置下一个提取的起点(即在 sql 中,其中 id > last_id_extracted)。我目前正在使用 JDBC 对使用普通旧 Java 的 next_id 表执行此操作。

有没有更好的方法来使用 Spring Batch 处理这种提取边界。大概这是批处理中非常常见的场景,Spring Batch 可以提供帮助吗?

谢谢

4

1 回答 1

3

您的方法仅在狭义上适用于您的数据可能发生的情况。它不考虑对现有数据的删除和修改。

为了使其更健壮,添加另一个表作为提取状态,将数据表的记录 ID 作为外键。如果以及何时上传记录,则提取状态表应具有上次导出日期戳。然后你可以实现以下规则:

1)如果Exp Stat中没有对应的行,则导出 2)如果最后更新时间>最后导出时间,则将其导出 3)如果它存在于Exp Status表中但不存在于Data Table中,则向消费者发送删除消息。

于 2012-05-14T13:42:57.310 回答