1

最終的に一貫性のあるデータベースに多数のエントリが格納されている場合、変更されたエントリを確実に見つけるための標準的な方法はありますか? もちろん、それらは「最終的に」しか見つかりませんが、それは問題ありませんが、決して見つからない可能性のあるシナリオは避けたいと思います。

これは非常に一般的な問題のように思われるため、標準的な処理方法がいくつかあると思います。しかし、残念なことに、私はそれについて有用なものを見つけるのにかなり苦労しています.

私が考えているアプローチは、単調に増加するバージョン番号 (タイムスタンプなど) ですべてのエントリにタグを付け、これまでに見た中で最も高いバージョン番号よりも大きいバージョン番号を持つすべてのエントリをデータベースに問い合わせることです。これに関する問題は、エントリが順不同でコミットされる (したがって、クエリで返される) 可能性があることです。したがって、後の更新が特定のクエリに「成功」​​し、以前の更新がそうでない場合、次のクエリでこれまでに見た最高のバージョン番号として後の更新のバージョン番号を使用することはできません。以前の更新が見つかりません。

バージョン番号が常に連続的に増加し、バージョンがスキップされないことが保証されている場合 (私の場合はこれを実現するのは困難ですが、実行可能である可能性があります)、変更ごとに 1 つのエントリを含む変更ログを保持し、クエリを実行するだけで済みます。 「x、y、z、... を除くすべてのバージョンを教えてください」。しかし、この変更ログと関連するクエリは巨大になる可能性があるため (一貫性を想定できる時間スケールに対する変更の速度によって異なります)、これは良い選択肢ではないと思います。

何かご意見は?

4

0 に答える 0