3

自動インクリメント整数の主キーを持つ大きなデータベース テーブルがあり、Spring Batch を使用して、他のシステムで使用するテーブルの抽出を毎日作成しています。

次の抽出の開始点を設定するために使用するために、前の抽出に入れられた最高の ID を永続化するアプローチを使用しています (つまり、id > last_id_extracted の sql で)。私は現在、プレーンな古い Java を使用して next_id テーブルに JDBC を使用してこれを行っています。

この種の抽出境界を Spring Batch で処理するより良い方法はありますか? おそらく、これはバッチ処理ではかなり一般的なシナリオであり、Spring Batch が役立つでしょうか?

ありがとう

4

1 に答える 1

3

あなたの方法は、あなたのデータに何が起こり得るかという狭い意味でのみ機能します。既存のデータの削除や変更は考慮されません。

より堅牢にするには、データテーブルのレコードIDを外部キーとして、ExtractStatusとして機能する別のテーブルを追加します。レコードがアップロードされた場合、Extract Statusテーブルには、最終エクスポート日日付スタンプが必要です。次に、次のルールを実装できます。

1)Exp Statに対応する行がない場合、エクスポート2)最後に更新された>最後にエクスポートされた場合、エクスポートします3)Exp Statusテーブルに存在するが、データテーブルには存在しない場合、削除メッセージをコンシューマーに送信します。

于 2012-05-14T13:42:57.310 に答える