競合解決 (DB)
分散データベースが、同じデータが別々の場所で同時に更新されて食い違った場合にどう扱うか。単純な「最後の書き込みが勝つ」から、全バージョンを保持してアプリケーション(またはCRDT)にマージさせる方法まである。
主な戦略は次のとおり。Last-Write-Wins(LWW)は最も新しいタイムスタンプのバージョンを採用する(単純だが、気づかないうちにデータを失いうるうえ、時計の同期が必要)。シブリング保持は競合するバージョンをすべて保存し(Riak)、次の読み取り時にクライアントやアプリに解決させる。アプリ固有のマージは、たとえば2つのショッピングカートの和集合をとる方法。CRDTは、競合なしでの収束を数学的に保証するデータ型だ。競合の発生を検出するにはバージョン追跡(ベクタークロック)が要る。これがマルチリーダー/リーダーレス構成の可用性に払う対価である。どれを選ぶかは、データ型と更新を失うことの深刻さ次第だ。CRDTやベクタークロックと関連する。