Czym jest replikacja bazy danych? [Replikacja 1/5]

Replikacja to proces powielania danych na wiele serwerów. Dzięki niemu możemy między innymi obsłużyć większy ruch, bo już nie jedna, a wiele maszyn pisze i czyta dane. Konsekwencją tego zabiegu jest oczywiście duplikacja danych i szereg związanych z nią problemów jak synchronizacją czy obsługa konfliktu zapisu. Natomiast tsunami korzyści płynących z replikacji, o których przeczytasz w szczegółach, pokrywa duże i małe góry kłopotów nieodzownych utrzymywaniu spójnych kopii.

Replikacja bazy danych to również jeden ze sposobów rozproszenia. Inną formą distributed-data jest partycjonowanie, czyli podział bazy albo tabeli na wiele maszyn (węzłów). Więcej o partycjonowaniu możesz przeczytać tutaj (dodaj link) 

W tym cyklu artykułów będziemy analizować replikację pod kątem baz i brokerów danych.

Dlaczego replikujemy dane?

Dla wysokiej dostępności

Co się stanie, jeśli całe centrum danych pójdzie z dymem? Przecież taka sytuacja wydarzyła się w 2021 roku. Dane to jeden z największych kapitałów przedsiębiorstwa. Pożar, wojna, zawodność sprzętu to nie są abstrakcyjne scenariusze. Wprawdzie kopie zapasowe częściowo rozwiązują problem (jeśli będą trzymane w innym centrum danych) natomiast nie sprawią, że system będzie działał podczas awarii – w przeciwieństwie do maszyn danych rozsianych po całym świecie i serwujących te same dane. 

Dla skrócenia czasu odpowiedzi

Tutaj przechodzimy do kolejnej zalety rozproszenia kopii wokół globu. Można długo optymalizować aplikację, aby odpowiadała coraz szybciej, zaś w następnej kolejności to sama fizyczna odległość od serwera będzie odpowiedzialna za latencję. Dla przykładu ping time Warszawa–Gdańsk to 7 ms, a Warszawa–Melbourne ponad 300 ms, a przecież na jednym zapytaniu się nie skończy, aby załadować jakąkolwiek stronę internetową. Dla globalnych usług rozproszenie kopii po świecie to po prostu must have. Oczywiście trzeba uwzględnić do tego odpowiedni routing. 

Dla skalowania liczby zapytań

Kilka kopii tych samych danych na wielu serwerach zwiększa możliwości odczytu i zapisu. Już nie tylko jedna instancja może obsługiwać ruch. Replikację można również rozpatrywać jako skalowanie horyzontalne, czyli zwiększanie mocy przerobowych poprzez dokładanie kolejnych instancji (w przeciwieństwie do skalowania wertykalnego gdzie zwiększamy moc jednego serwera).

Jakie są rodzaje replikacji? 

Aby skutecznie przeprowadzić replikację, kopie koniecznie muszą być identyczne pomiędzy serwerami, mimo że żądanie zapisu nie trafia do wszystkich replik i to w synchroniczny sposób. Gdyby zapis odbywał się synchronicznie i do wszystkich replik, stracimy większość dobrodziejstw replikacji, ponieważ w takim wypadku musimy czekać na odpowiedź od wszystkich serwerów, więc uzależniamy cały proces od najwolniejszego węzła. Co więcej, należałoby zwrócić odpowiedź błędu, kiedy tylko jeden węzeł odmówi współpracy – mnóstwo pracy poszłoby na marne jeśli 4 z 5 replik poprawnie obsłuży żądanie, a tylko jedna odmówi posłuszeństwa.

Mamy dużo lepsze strategie zapisu danych połączone z ich synchronizacją i omówimy trzy z nich. Jak to w życiu, każde rozwiązanie ma swoje  wady i zalety. 

  1. Leader based, znana również jako leader-follower lub master-slave
  2. Multi leader, znana również jako active-active lub master-maste
  3. Leaderless, znana również jako dynamo-style

Na koniec, dowiesz się o problemach asynchronicznej replikacji.

Źródła 

  1. Designing Data Intensive Applications – M. Kleppmann
  2. Replikacja danych – Wikipedia

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

Partycjonowanie bazy danych okładka

Partycjonowanie bazy danych

Partycjonowanie pozwala podzielić tabelę na mniejsze części, gdzie każda z nich może się znajdować na innym serwerze. Zobacz, jak to działa oraz dlaczego jest to …

2 thoughts on “Czym jest replikacja bazy danych? [Replikacja 1/5]

Comments are closed.