Sharding jest niemal antytezą replikacji, chociaż są to pojęcia ortogonalne i dobrze ze sobą współpracują.
Sharding, znany również jako partycjonowanie, dzieli dane według klucza; Replikacja, określana również jako dublowanie, polega na kopiowaniu wszystkich danych.
Sharding jest przydatny do zwiększenia wydajności, zmniejszając obciążenie i obciążenie pamięci w jednym zasobie. Replikacja jest przydatna w przypadku wysokiej dostępności odczytów. Jeśli czytasz z wielu replik, zmniejszysz także trafność wszystkich zasobów, ale wymagania dotyczące pamięci dla wszystkich zasobów pozostaną takie same. Należy zauważyć, że podczas gdy możesz pisać do slave, replikacja jest tylko master-> slave. Więc nie można tak pisać w skali.
Załóżmy, że masz następujące krotki: [1: Apple], [2: Banan], [3: Czereśnia], [4: Durian] i mamy dwie maszyny A i B. Z Sharding, możemy przechowywać klucze 2,4 na maszynie A; i klawisze 1,3 na komputerze B. Przy replikacji przechowujemy klucze 1,2,3,4 na maszynie A i 1,2,3,4 na komputerze B.
Sharding jest zwykle realizowany przez wykonanie spójnego skrótu na klucz. Powyższy przykład został zaimplementowany z następującą funkcją skrótu h (x) {return x% 2 == 0? A: B}.
Aby połączyć koncepcje, możemy powielić każdy fragment. W powyższych przypadkach wszystkie dane (2,4) maszyny A mogą być replikowane na komputerze C, a wszystkie dane (1,3) maszyny B mogą być replikowane na komputerze D.
Dowolny klucz value store (którego Redis jest tylko jednym przykładem) obsługuje sharding, chociaż niektóre funkcje klucza nie będą działać. Redis obsługuje replikację po wyjęciu z pudełka.
fajne. Myślę, że odpowiedź nie tylko ogranicza się do redis – joetsuihk
Dobra odpowiedź (ogólnie), ale tak naprawdę nie odpowiada na pytanie imho :) –
Myślę, że ta odpowiedź oferuje dobrą odpowiedź na pytanie zadane przez pytającego. Bardzo uproszczone, ale poprawne wyjaśnienie. +1 –