イニシャルとデルタを使用してリモートデータセットをミラーリングするシステムに取り組んでいます。イニシャルが入ると、既存のものを一括削除し、新しいデータを一括挿入します。デルタが発生すると、システムはそれを更新、挿入、および削除に変換するための一連の作業を実行します。イニシャルとデルタは、データの整合性を維持するために長いトランザクション内で処理されます。
残念ながら、現在のソリューションはあまりうまくスケーリングしていません。トランザクションは非常に大規模で長時間実行されるため、RDBMSはさまざまな競合の問題で行き詰まります。また、デルタがどのように適用されるかについての適切な監査証跡がないため、データセットのローカルバージョンとリモートバージョンが同期しなくなる原因となる問題のトラブルシューティングが困難になります。
1つのアイデアは、トランザクションでイニシャルとデルタをまったく実行せず、代わりに、どのデルタまたはイニシャルから来たかを示すバージョン番号を各レコードに添付することです。イニシャルまたはデルタが正常にロードされると、データセットの新しいバージョンが利用可能であることをアプリケーションに警告できます。
これは、初期およびデルタから特定のバージョンまでのデータセットのビューをどのように正確に構成するかという問題を残すだけです。(AppleのTimeMachineは同様のことを行い、ファイルシステムのハードリンクを使用して特定の時点の「ビュー」を作成します。)
この種の問題を解決したり、この特定のソリューションを実装したりした経験のある人はいますか?
ありがとう!