920f9dd5.jpgDVCS(Distributed Version Control)をCAP定理の観点でみたらどうか。

CAP定理とは:

  • 一貫性 (Consistency)
  • 可用性 (Availability)
  • 分割耐性 (Partition Tolerance)

集中リポジトリ方式では:

  • 一貫性 → CVS/Subversionだと楽観的ロックでリポジトリは常に一貫性が保たれている。
  • 可用性 → サーバが止まったりオフラインになると更新系は利用できなくなる。参照系はクライアントがキャッシュを持っていれば可能。
  • 分割耐性 → ネットワークから切れたらおしまい。

DVCSでは:

  • 一貫性 → あきらめて、人間が解決する。
  • 可用性 → リポジトリは常にローカルマシン上にあるので止まることがない。
  • 分割耐性 → リビジョンIDを、順序数からハッシュ値にすることでIDの衝突を避ける。