risposta

8

Il teorema CAP è in realtà un po 'fuorviante. Il fatto che sia possibile progettare una CA è senza senso perché quando si verifica una partizione si ha necessariamente un problema di coerenza (ad esempio, problema di sincronizzazione dei dati) o disponibilità (latenza). Ecco perché v'è un teorema più preciso affermando che:

Durante una partizione nel un sistema distribuito, devi scegliere tra la coerenza e disponibilità.

Ancora in pratica non è così semplice. Si noti che la scelta tra coerenza e disponibilità non è binaria. Puoi persino avere un certo grado di entrambi. Ad esempio, per quanto riguarda l'ACID, è possibile avere transazioni atomiche e durature con NoSQL, ma rinunciare a un grado di isolamento e coerenza per una migliore disponibilità. La disponibilità può quindi essere assimilata alla latenza perché il tempo di risposta dipenderà da diversi fattori (il server più vicino è disponibile?).

Quindi, per rispondere alla tua domanda, di solito si tratta di cazzate di marketing. È necessario in realtà grattare la superficie per vedere quale sia la soluzione che sta ottenendo e perdendo esattamente.

Se si desidera una spiegazione più approfondita, è possibile cercare here, here o here.

+0

Grazie per questa buona risposta! Ho anche un'altra domanda: se scegliamo la disponibilità, significa che preferiamo avere velocità - In altre parole, se abbiamo un problema di comunicazione (partizione), i nodi sono di nuovo online ma non sono sincronizzati. O se preferiamo (consistenza) dati esatti - ad esempio se abbiamo transazioni di milioni di euro e così via ... In questo caso sceglieremo la coerenza. Ho ragione? Che teorema è quello? ha qualche nome? :) – grep

+1

@grep Sì, sei corretto ma non lo faresti perché ci sono troppi compromessi scegliendo l'uno o l'altro. Il mondo reale è più complicato di un teorema :) – LMeyer

+0

Grazie ancora. Usando il teorema CAP, so quale database si trova tra CP (BigData, Mongo, Hbase) e che si trova tra AP (Riak, Cassandra, Dynamo). Se usiamo nuovo teorema, coerenza o disponibilità su come scegliere il database? Se saremo tristi che BigData, Mongo, Hbase abbiano solo consistenza e Dynamo, Riak, Cassandra hanno solo Availabillity, sarà corretto? Come ho capito questo non è corretto, posso avere entrambi con un certo grado. è vero? – grep

Problemi correlati