Sobes.tech
Middle

Cos'è il teorema CAP?

sobes.tech AI

Risposta dell'AI

Il teorema CAP (noto anche come teorema di Brewer) afferma che in un sistema di calcolo distribuito non è possibile garantire contemporaneamente:

  • Coerenza (Consistency): Tutti i nodi vedono gli stessi dati nello stesso momento. Ogni operazione di lettura ottiene i dati più recenti scritti.
  • Disponibilità (Availability): Ogni richiesta riceve una risposta non vuota, indipendentemente dallo stato degli altri nodi. Il sistema è sempre disponibile per operazioni di lettura e scrittura.
  • Tolleranza alle partizioni (Partition Tolerance): Il sistema continua a funzionare nonostante la perdita di comunicazione tra i nodi (partizioni di rete).

In condizioni di partizione di rete ($P$), il sistema deve scegliere tra coerenza ($C$) e disponibilità ($A$).

  • Sistema CA: Presuppone l'assenza di partizioni di rete. Quando si verificano, il sistema diventa inaccessibile o incoerente. Esempi: database relazionali classici con replica sincrona in rete locale.
  • Sistema CP: Sacrifica la disponibilità a favore della coerenza durante una partizione di rete. Se un nodo non può comunicare con la maggioranza, smette di rispondere alle richieste per garantire la coerenza dei dati. Esempi: Zookeeper, etcd, sistemi distribuiti che usano protocolli di consenso come Paxos o Raft.
  • Sistema AP: Sacrifica la coerenza a favore della disponibilità durante una partizione di rete. Il sistema continua a rispondere alle richieste, ma può fornire dati obsoleti o conflittuali. La coerenza eventuale viene raggiunta successivamente. Esempi: DynamoDB, Cassandra, MongoDB (per impostazione predefinita in alcune configurazioni).

Il teorema CAP si applica ai sistemi di archiviazione dati distribuiti. Nei sistemi reali, spesso è necessario fare compromessi e scegliere il modello più adatto alle esigenze specifiche dell'applicazione.