2016-01-16 19 views
7

Powiedzmy, że prowadzisz swoją działalność na bazie danych PostgreSQL. Po pewnym czasie pojawia się tak duży ruch, że nie można go obsłużyć przez pojedynczą instancję postgresql, więc chcesz dodać więcej instancji (skaluj ją poziomo), aby móc obsłużyć wzrost.Skalowanie Postgresa poziomo

Twoje dane są relacyjne, więc prawdopodobnie przejście na pewne rozwiązanie z kluczem/wartością nie jest możliwe.

Jak zrobiłbyś to z postgresql?

PS. Wersja Postgresql: 9.5

+0

Użyj replikacji Master/Slave (z wieloma niewolników) z równoważenia obciążenia (np pgPool) http://www.postgresql.org/docs/current/static/high-availability.html –

+0

można wziąć spójrz na Postgres-XL, aby użyć shardingu, ale bądź świadomy jego ograniczeń http://www.postgres-xl.org/ –

+0

@DmitrySavinkov gdzie mogę znaleźć więcej informacji na temat ograniczeń PostgreSQL? – toasteez

Odpowiedz

3
  1. Jeśli chodzi o read-ciężki nakład pracy, powinieneś po prostu dodać repliki. Dodaj tyle replik, ile potrzebujesz do obsłużenia całego obciążenia. Możesz zbalansować wszystkie zapytania w replikach w trybie round robin.

  2. Jeśli chodzi o obciążenie pracą przy dużej ilości zapisu, należy podzielić bazę danych na wiele serwerów. Możesz umieścić różne tabele na różnych maszynach lub możesz odrzucić jeden stół na wielu maszynach. W tym drugim przypadku możesz odłożyć tabelę według zakresu klucza podstawowego lub skrótu klucza podstawowego, a nawet pionowo w rzędach. W każdym z powyższych przypadków możesz utracić transakcyjność, więc zachowaj ostrożność i upewnij się, że wszystkie dane zmienione i zapytane przez transakcję znajdują się na tym samym serwerze.