P2P (Peer to Peer) は対等なユーザ (ピア) 同士が通信するモデルである。 P2P モデルは、システムのユーザ数が増えても特定の機器にかかる負荷が分散されるので、スケーラブルである。
P2P モデルでは CAP に加えて、ビザンチン耐性 (ビザンチン・フォールトトレラント性, Byzantine Fault Torelance) が求められる。 ビザンチン耐性とは、あるノードが故意に偽の情報を伝達しても、全体としてシステムが正しく動作する性質である。
P2P モデルは、データとそれを所有するピアを管理するインデックスのもち方によって下記の 2 種類に分類される。
ピュア P2P モデルでは、インデックスのパーティションを各ノードが分散してもつ。
ピュア P2P のネットワークに参加するには、既に参加しているノードのアドレスを知っている必要がある。 これを解決するためには、常にネットワークに参加しているノード (コンタクトノード) を用意しておく必要がある。
ハイブリッド P2P モデルでは、インデックスを中央のインデックスサーバでもつ。
インデックスサーバはピア数の増加によってスケールしないので、システムのスケーラビリティにおいてピュア P2P に劣る。 また、インデックスサーバはシステム全体の単一障害点となる。