CRDT (Conflict-free Replicated Data Type)

複製してもコンフリクトしないデータ型。各レプリカが独立に更新しても、後でマージすると必ず同じ状態に収束する(強い結果整合性)。CAP定理のうち A(可用性)と P(分断耐性) を満たすため、ネットワーク分断下でも書き込み続行できる。

用途

  • リアルタイム共同編集(複数クライアントが同時にテキスト編集)
  • オフライン優先アプリの状態同期

合意アルゴリズムとの対比

強い一貫性 (C) が必要な場面では合意アルゴリズムを使う:

  • Paxos — 分散合意アルゴリズム。正しく完璧に実装できる人がいないと言われるほど難解で、暗黙的な前提も多い。理解しやすさを狙った Raft が後継として広まった。

CRDT は「衝突を起こさせない」設計、Paxos/Raft は「単一の合意値を確定させる」設計、という補完関係にある。

関連: distributed-consensus-raft / database-transaction-theory / _moc-algorithm