DVCS(Distributed Version Control)をCAP定理の観点でみたらどうか。
CAP定理とは:
- 一貫性 (Consistency)
- 可用性 (Availability)
- 分割耐性 (Partition Tolerance)
集中リポジトリ方式では:
- 一貫性 → CVS/Subversionだと楽観的ロックでリポジトリは常に一貫性が保たれている。
- 可用性 → サーバが止まったりオフラインになると更新系は利用できなくなる。参照系はクライアントがキャッシュを持っていれば可能。
- 分割耐性 → ネットワークから切れたらおしまい。
DVCSでは:
- 一貫性 → あきらめて、人間が解決する。
- 可用性 → リポジトリは常にローカルマシン上にあるので止まることがない。
- 分割耐性 → リビジョンIDを、順序数からハッシュ値にすることでIDの衝突を避ける。