Oto jak omawiam CAP, szczególnie w odniesieniu do P.
CA jest możliwe tylko wtedy, gdy jesteś zadowolony z monolitycznej bazy danych na jednym serwerze (być może z replikacją, ale wszystkie dane w jednym „bloku awarii” - serwery nie są uważane za częściowo uszkodzone).
Jeśli Twój problem wymaga skalowania, rozproszenia i obsługi wielu serwerów --- mogą wystąpić partycje sieciowe. Już wymagasz P. Kilka problemów, do których podchodzę, są podatne na paradygmaty zawsze z jednym serwerem (lub, jak powiedział Stonebraker, „rozproszone są stawki na stole”). Jeśli znajdziesz problem z urzędem certyfikacji, rozwiązania takie jak tradycyjny RDBMS bez skalowania zapewniają wiele korzyści.
Dla mnie rzadko: przechodzimy więc do dyskusji na temat AP przeciwko CP.
Możesz wybierać między działaniem AP i CP tylko wtedy, gdy masz partycję. Jeśli sieć i sprzęt działają poprawnie, dostajesz ciasto i jesz.
Omówmy rozróżnienie AP / CP.
AP - gdy istnieje partycja sieciowa, niech niezależne części działają swobodnie.
CP - gdy istnieje partycja sieciowa, zamykaj węzły lub nie zezwalaj na odczytywanie i zapisywanie, aby wystąpiły deterministyczne awarie.
Lubię architektury, które potrafią robić obie te rzeczy, ponieważ niektóre problemy to AP, a niektóre CP - a niektóre bazy danych mogą to robić. Wśród rozwiązań CP i AP są również subtelności.
Na przykład w zestawie danych AP masz możliwość zarówno niespójnych odczytów, jak i generowania konfliktów zapisu - są to dwa różne możliwe tryby AP. Czy twój system może być skonfigurowany do AP z wysoką dostępnością odczytu, ale nie zezwala na konflikty zapisu? A może twój system AP może zaakceptować konflikty zapisu przy użyciu silnego i elastycznego systemu rozwiązywania problemów? Czy w końcu będziesz potrzebować obu, czy może wybierzesz system, który tylko jeden?
W systemie CP, ile masz niedostępności z małymi partycjami (pojedynczy serwer), jeśli w ogóle? Większa replikacja może zwiększyć niedostępność w systemie CP, w jaki sposób system obsługuje te kompromisy?
To są wszystkie pytania, które należy zadać przy CP przeciwko AP.
Świetną lekturą w tej dziedzinie jest teraz post Browera „12 lat później”. Uważam, że to posuwa naprzód debatę na temat WPR z jasnością i bardzo ją polecam.
http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed