レプリケーション
簡単に説明すると、グレイはデータベースが n 個のサブデータベースに自然に分割できない限り、並行性制御の競合が生じて性能を低下させ、その性能低下は n の関数で表されるだろうと主張した。彼は典型的な手法による性能低下が O(n) になると予測した。従って、自然に分割できるような場合のみ、データベースの分割をすべきであるとの主張である。
現実は、それほどひどいことにはならなかった。例えば、1985年から1987年にかけて、仮想同期モデルが登場して標準として広く受け入れられるようになった(各社が採用し、CORBAのフォールトトレラント標準の基盤にもなった。また、IBM WebSphere やマイクロソフトのエンタープライズ・クラスタリング技術でもレプリケーションに採用された)。仮想同期は複数プライマリ型の実装も可能で、プロセスグループが協調して処理を並列化する。この方式はメモリ上のデータにしか適用できないが、グループの規模に比例して性能が向上する。
最近の製品でも同様の手法がサポートされている。例えばSpread Toolkitは仮想同期モデルをサポートし、複数プライマリ型レプリケーションの実装に使っている。C-Ensemble や Quicksilver でも同様の方式が可能である。WANdisco は動的レプリケーションが可能であり、ネットワーク上の全ノードが正確な複製になっていて、全ノードが同時に動作可能である(WAN向けに最適化されている)。
アトミックな書き込み操作によって「ゼロデータロス(zero data loss)」を保証する。すなわち、マスター側とスレーブ側で、双方が成功か失敗かの認識を共有する。ローカルとリモートの両方のストレージから完了通知があるまで、書き込みは完了したと看做されない。アプリケーションも書き込みトランザクションが完了するまで待ち合わせるため、全体の性能がかなり低下する。性能低下はほぼ距離に比例する(光速度によるレイテンシ)。10km離れていると、ラウンドトリップ時間は最善でも67μsであり、一般にローカルな(キャッシュされた)書き込みは10から20μsで済む。
見過ごされがちな同期レプリケーションの特徴として、リモートのストレージの故障や通信回線の切断によっても、以降の書き込みは全て失敗する(ストレージシステムとしてフリーズする)。逆にそうなっているためにゼロデータロスと言える。しかし、商用システムではそれでは困るため、ゼロデータロスの保証を失ってもローカル側だけで動作し続けるようにしていることが多い。