最終的な一貫性とは
結果整合性とは、プログラマーが十分な時間をかけてシステムを変更することなく、特定のプログラムの現在のバージョンが最終的にプログラムのすべてのレプリカが整合するまで分散するというプログラミングモデルです。 結果整合性の概念は、オプティミスティックレプリケーション、分散共有メモリ、分散トランザクションなどのプログラミング方法で使用されます。 データベースに関しては、最終的な一貫性は3段階のプロセスによって達成されます。 まず、配信された情報がシステムで利用可能になります。 この後にソフト状態が続きます。この状態では、さまざまなユーザーがさまざまなバージョンのデータを引き続き使用できます。 最後に一貫性が達成され、すべてのコンピューターが同一のデータにアクセスできます。
最終的な整合性が適用される最も目に見える方法の1つは、オンラインで配布されるソフトウェアの更新に関係しています。 更新プログラムがリリースされてから最初の数秒間は、誰もそれを入手できません。 ソフトウェアのユーザーが更新プログラムをダウンロードしてインストールするのに十分な時間が経過していません。 これは「使用可能」状態です。 更新は存在しますが、まだ配布されていません。 時間が経つにつれて、ユーザーが更新プログラムをダウンロードすると、一部のユーザーは更新プログラムを入手し、一部のユーザーは更新プログラムを入手しません。 ただし、十分な時間が経過すると、ソフトウェアを使用するすべてのユーザーが最新バージョンに更新されます。 これは、結果整合性の状態の背後にある前提です。十分な時間を与えると、更新はシステム全体に完全に伝播します。
システムは最終的な一貫性に向かって動作するため、競合は避けられません。 これらは、プログラムのバージョンまたは現在コンピューター上にある情報がプログラムの「モデルバージョン」と一致しない場合に発生します。 通常、プログラムはこのような競合を認識して管理するように設定されています。 特定のコンピューター上のファイルが問題のソフトウェアまたはデータの最新モデルバージョンよりも古い場合、システムは通常、不均衡を解決するために更新を開始するようユーザーに促します。
これらの解決を実現するために、書き込み修復、読み取り修復、非同期修復の3つの方法が利用できます。 これらの方法はすべて、プログラムまたはデータのバージョンを一貫したモデルに合わせます。 これらの主な違いは、システムが修復操作の時間を計る方法に関係しています。 このような操作にはすべて利点と欠点があります。
書き込み修復では、コンピューターが既にシステムのハードドライブに何かを書き込んでいるときに、書き込み操作中にコンピューターに保存されたコードが変更されます。 これにより不整合が修復され、プログラムまたはデータがモデルと一致しますが、元の書き込み操作が一時的に遅くなります。 読み取り修復の場合、ハードドライブからの読み取りサイクル中に修正操作が行われます。 これにより、読み取り操作が遅くなります。 非同期修復では、読み取り操作も書き込み操作も発生しないときに修復が行われ、CPUのアイドルサイクルが消費されます。