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.