Vai al contenuto

Teorema CAP: spiegazione ed esempi

  • di

Cosa dice il teorema CAP?

Con questo articolo voglio fornirvi una rapida introduzione al teorema di CAP, noto anche con il nome di Teorema di Brewer (dal nome dell’ideatore), il quale, in sintesi, sostiene che non è possibile per un datastore distribuito fornire simultaneamente le tre seguenti garanzie: consistenza (C), continua disponibilità (A) e tolleranza alle partizioni (P). Il teorema CAP ci dice che: in un sistema informatico distribuito non è possibile fornire, o meglio ancora, assicurare simultaneamente più di due tra le seguenti tre condizioni, è necessario quindi, di volta in volta sacrificarne una delle tre.

Di seguito vengono descritte brevemente le definizioni delle tre garanzie.

  • Consistency (consistenza): tutti i client vedono gli stessi dati nello stesso momento.
  • Availability (disponibilità): tutti i client possono eseguire operazioni di lettura e scrittura in un qualsiasi momento e ricevere una risposta dal sistema.
  • Partition Tolerance (tolleranza alle partizioni): il sistema continua a funzionare nel suo insieme anche in caso di mancanza di nodi o quando i singoli nodi non riescono più a comunicare tra loro.

Il teorema CAP spesso si usa per rappresentare l’orientamento dell’architettura di un sistema distribuito o framework di cui ne possono esistere 3 tipi, di seguito alcuni esempi di framework classificati secondo il teorema CAP:

  • Consistency/Availability: elevata coerenza/alta disponibilità. Si tratta del compromesso tipicamente offerto da RDBMS come MySQL, PostgreSQL, MariaDB.
  • Consistency/Partition tolerance: elevata coerenza/tolleranza alle partizioni. Questo compromesso è quello preferito da soluzioni quali MongoDB ShardedHBaseBigTableRedis.
  • Availability/Partition tolerance: continua disponibilità/tolleranza alle partizioni. Questo compromesso viene offerto da soluzioni quali MongoDB in ReplicaSet, Apache CassandraCouchDBDynamoDB e Riak

Ora che avete chiaro cosa dice il teorema CAP vi lascio con una domanda, secondo voi in quale delle 3 casistiche sopra elencate è classificabile il framework HDFS? fatemelo sapere nei commenti! 🙂

Riferimenti

[1] Julian Browne, “Brewer’s CAP Theorem – The kool aid Amazon and Ebay have been drinking”
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

[2] Wikipedia, “Teorema Cap”
https://it.wikipedia.org/wiki/Teorema_CAP