一貫性モデル (ソフトウェア)
上記の制約のほとんどを緩和したモデルの例として、弱い順序(Weak Ordering)がある(他のプロセッサの書き込みを早く読むことを除く)。このモデルでは、メモリ操作をデータ操作と同期操作の2つのカテゴリに分類します。プログラムの順序を強制するために、プログラマはプログラムの中に少なくとも1つの同期操作を見つける必要がある。これが機能する前提は、同期操作の間にデータ領域へのメモリ操作を並べ替えても、プログラムの結果には影響しないということである。同期操作は、プログラムの順序を守るためのセーフティネットとして機能する。この仕組みは、データ操作の回数をカウンターで追跡し、このカウンターがゼロになるまで、同期操作は発行されないというものである。さらに、以前の同期操作がすべて完了しない限り、それ以上のデータ操作は発行されない。2つの同期変数の間にあるメモリ操作は、プログラムの正しさに影響を与えることなく、オーバーラップしたり、順序を変えたりすることができる。このモデルでは、書き込みの不可分性が常に維持されるため、弱い順序のための追加のセーフティネットは必要ありません。
Tanenbaum et al., 2007は、レプリケーションを行う主な理由として、信頼性とパフォーマンスの2つを定義している。信頼性は、複製されたファイルシステムにおいて、現在のレプリカが故障した場合に、別のレプリカに切り替えることで実現できる。また、レプリケーションは、異なるレプリカに複数のデータのコピーを提供することで、データの破損を防ぐ。作業を分担することで、パフォーマンスを向上させることもできる。レプリケーションは、パフォーマンスと信頼性を向上させる一方で、複数のデータコピー間で一貫性の問題を引き起こす可能性がある。複数のコピーは、読み取り操作がすべてのコピーから同じ値を返し、単一の不可分操作(トランザクション)としての書き込み操作が、他の操作が行われる前にすべてのコピーを更新する場合、一貫性が保たれる。Tanenbaum, Andrew, & Maarten Van Steen, 2007は、この種の一貫性を、同期レプリケーションが提供するタイトな(堅い)一貫性と呼んでいる。しかし、すべてのコピーの一貫性を保つためにグローバルな同期を適用することはコストがかかる。グローバル同期のコストを削減し、性能を向上させる方法として、一貫性の制限を弱めることが考えられます。