Odpowiedz

8

Twierdzenie CAP jest w rzeczywistości trochę mylące. Fakt, że można uzyskać projekt urzędu certyfikacji, jest nonsensem, ponieważ w przypadku wystąpienia partycji koniecznie występuje problem dotyczący spójności (na przykład problem z synchronizacją danych) lub dostępności (opóźnienie). Dlatego jest bardziej dokładne twierdzenie stwierdzając, że:

Podczas partycji w systemie rozproszonym, trzeba wybierać pomiędzy konsystencji i dostępności.

Nadal w praktyce nie jest to takie proste. Należy zauważyć, że wybór pomiędzy spójnością a dostępnością nie jest binarny. Możesz nawet mieć pewien stopień obu. Na przykład w odniesieniu do ACID, możesz mieć atomowe i trwałe transakcje z NoSQL, ale tracić pewien stopień izolacji i spójności w celu uzyskania lepszej dostępności. Dostępność można następnie przyrównać do opóźnień, ponieważ czas reakcji zależy od kilku czynników (czy najbliższy serwer jest dostępny?).

Więc, aby odpowiedzieć na twoje pytanie, jest to zwykle marketingowa bzdura. Musisz w rzeczywistości zadrapać powierzchnię, aby przekonać się, jakie rozwiązanie dokładnie zyskuje i traci.

Jeśli chcesz uzyskać głębsze wyjaśnienia, możesz spojrzeć na here, here lub here.

+0

Dziękuję za tę dobrą odpowiedź! Mam również dodatkowe pytanie: jeśli wybieramy dostępność, oznacza to, że wolimy mieć prędkość - innymi słowy, jeśli mamy problem z komunikacją (partycja), węzły są ponownie w trybie online, ale nie są zsynchronizowane. Lub jeśli wolimy (spójność) dokładne dane - na przykład, jeśli mamy transakcje w wysokości milionów euro i itp. W tym przypadku wybierzemy spójność. Mam rację? Co to za twierdzenie? czy ma jakąś nazwę? :) – grep

+1

@grep Tak, masz rację, ale nie zrobiłbyś tego, ponieważ zbyt wiele kompromisów wybiera jeden lub drugi. Prawdziwy świat jest bardziej skomplikowany niż twierdzenie :) – LMeyer

+0

Jeszcze raz dziękuję. Korzystając z Twierdzenia CAP, wiem, która baza danych znajduje się pomiędzy CP (BigData, Mongo, Hbase) i która jest między AP (Riak, Cassandra, Dynamo). Jeśli używamy nowego twierdzenia, spójności lub dostępności, jak wybrać bazę danych? Jeśli będziemy smutni, że BigData, Mongo, Hbase mają tylko konsystencję i Dynamo, Riak, Cassandra mają tylko Dostępność, czy to będzie poprawne? Jak rozumiem, to nie jest poprawne, mogę mieć oboje w pewnym stopniu. czy to prawda? – grep

Powiązane problemy