La C in ACID non è la C in CAP?

6

Sappiamo che per i sistemi di database - la coerenza in proprietà ACID fa parte dell'acronimo:

A - Atomicità

C - Consistenza

I - Isolamento

D - Durata

Sappiamo che per i sistemi NoSQL, la coerenza nel Teorema CAP fa parte dell'acronimo:

C - Consistenza

A - Disponibilità

P - Tolleranza delle partizioni

Michael Nygard scrive :

So it turns out that "consistency (predicate)" and "consistency (history)" are two distinct ideas that happen to share a word. It is always an error to substitute the distributed systems definition of "consistency" for the C in ACID.

La mia domanda è: La C in ACID non è la C in CAP?

    
posta hawkeye 25.12.2017 - 11:17
fonte

2 risposte

5

I significati sono leggermente diversi, penso. In breve:

  • La coerenza in ACID significa che nessun set di dati può essere uno stato non valido o rappresenta dati che sono semanticamente non validi dopo che una transazione è stata commessa ("coerenza interna").

  • La coerenza in CAP significa che dopo l'esecuzione di una transazione, questo set di dati deve essere aggiornato anche in tutte le repliche.

risposta data 25.12.2017 - 12:53
fonte
2

Direi che parlano di aspetti diversi della stessa cosa.

Diciamo che abbiamo perso la C in CAP. cioè uno dei nostri nodi di database ha avuto un aggiornamento che non è stato ancora propagato all'altro. L'aggiornamento in questione rimuove una riga che soddisfa un vincolo di chiave esterna.

Arriva una lettura e colpisce il nodo aggiornato, recuperando la tabella esterna. Una seconda lettura arriva e colpisce il nodo non aggiornato, recuperando la tabella primaria.

Ora il client ha dati che sembrano aver violato il vincolo FK. La C in ACID

Quindi puoi dire che la difficoltà nell'applicare una transazione (ACID) coerente tra i server in cui può esserci una perdita di rete tra di loro porta al problema di coerenza in CAP.

Ora, quando si arriva ai dettagli, non è molto utile parlare di questa idea di "Consistenza generica" perché i dettagli sono importanti, e generalmente si avranno transazioni consistenti su ogni nodo EACH, il problema è applicarli a tutti i nodi.

    
risposta data 25.12.2017 - 12:50
fonte

Leggi altre domande sui tag