Twierdzenie CAP, czyli kompromisy rozproszenia. [SQL vs NoSQL 5/6]

Twierdzenie CAP mówi, że możesz wybrać dwa z trzech: Consistent, Available, Partition Tolerance. Tyle że rozproszone rozwiązania (a jak już dobrze wiemy, to wymóg miana NoSQL) ze względu na swoją naturę (działają na wielu maszynach) muszą być network partition tolerant, czyli działać mimo odrzucenia dowolnej liczby komunikatów między węzłami. W związku z tym mamy do wyboru jeszcze jedno z dwóch:

  1. consistent – każdy odczyt otrzymuje najnowszy zapis lub błąd,
  2. available – każde żądanie otrzymuje odpowiedź (bez błędu), bez gwarancji, że zawiera najnowszy zapis.

Nie znaczy to, że jest to binarny wybór. W obrębie jednego klastra część operacji może być consistent, a część available. Jest to zatem kompromis. 

Można też balansować pomiędzy consistency a czasem odpowiedzi. Tym krócej będziemy czekać na odpowiedź, im mniej węzłów będzie musiało się ze sobą skomunikować (sprawdzając, gdzie jest najnowszy wpis). Odnosi się to również do sytuacji, kiedy wszystkie z nich działają. Ostatecznie sprowadza się to do decyzji biznesowej – chcemy odpowiadać szybko czy dokładnie? Amazon już dawno temu podjął tę decyzję, o czym pisałem tutaj w sekcji “Definiowanie wydajności”

Problem ten w ogóle nie występuje w klasycznym podejściu do relacyjnej bazy danych, która działa na jednej maszynie. Odrzucamy wtedy partition tolerant (nie ma komunikacji pomiędzy węzłami) i zapytania będą zarówno consistent, jak i available.

Udostępnij ten wpis


Dobrnąłeś do końca. Jeśli ten artykuł był dla Ciebie wartościowy i chcesz otrzymywać informacje o kolejnych, to zapraszam Cię do zapisania się do listy mailingowej. Gwarantuję zero spamu.

Radek.

Inne artykuły

ML w AWS – Sagemaker Autopilot

Automatyczne tworzenie modeli uczenia maszynowego z pełną widocznością w usłudze AWS Sagemaker – korzyści z wygenerowanego Jupyter Notebooka.

ML w AWS – Sagemaker Studio – IDE w przeglądarce

Sagemaker Studio – interaktywne środowisko dla Data Scientist. Z Jupyter Notebooks na pokładzie, oferuje współpracę, śledzenie eksperymentów i integrację z systemem kontroli wersji. Przegląd quasi …

ML w AWS – wstęp do usługi Sagemaker

Sagemaker: Wytwarzanie usług ML w chmurze AWS na nowym poziomie Odkryj potężną usługę Sagemaker, która gromadzi wszystkie niezbędne funkcjonalności związane z wytwarzaniem usług uczenia maszynowego w …

Rozwijasz czy produkujesz oprogramowanie?

Opracowywanie przepisów to proces uczenia się metodą prób i błędów. Nie oczekujesz, że pierwsza próba nowego dania wykonana przez szefa kuchni będzie ostatnią. W rzeczywistości …

Lean software development – eliminacja strat

Dowiedz się, jak wyeliminować marnotrawstwo i przyjąć zasady szczupłego rozwoju oprogramowania, aby dostarczyć więcej wartości swoim klientom przy mniejszym nakładzie pracy.

One thought on “Twierdzenie CAP, czyli kompromisy rozproszenia. [SQL vs NoSQL 5/6]

Comments are closed.