Redis - partycjonowanie
Partycjonowanie to proces dzielenia danych na wiele instancji Redis, dzięki czemu każda instancja będzie zawierać tylko podzbiór kluczy.
Korzyści z partycjonowania
Pozwala na znacznie większe bazy danych, wykorzystując sumę pamięci wielu komputerów. Bez partycjonowania jesteś ograniczony ilością pamięci, którą może obsłużyć pojedynczy komputer.
Pozwala na skalowanie mocy obliczeniowej do wielu rdzeni i wielu komputerów, a przepustowość sieci do wielu komputerów i kart sieciowych.
Wady partycjonowania
Operacje obejmujące wiele kluczy zwykle nie są obsługiwane. Na przykład nie można wykonać przecięcia między dwoma zestawami, jeśli są one przechowywane w kluczach mapowanych do różnych instancji Redis.
Nie można używać transakcji Redis obejmujących wiele kluczy.
Partycjonowanie granulacji jest kluczem, więc nie jest możliwe podzielenie zestawu danych na fragmenty za pomocą jednego ogromnego klucza, takiego jak bardzo duży posortowany zestaw.
W przypadku korzystania z partycjonowania obsługa danych jest bardziej złożona. Na przykład musisz obsługiwać wiele plików RDB / AOF, a aby uzyskać kopię zapasową danych, musisz zagregować pliki trwałości z wielu instancji i hostów.
Dodawanie i usuwanie pojemności może być skomplikowane. Na przykład Redis Cluster obsługuje przeważnie przezroczyste równoważenie danych z możliwością dodawania i usuwania węzłów w czasie wykonywania. Jednak inne systemy, takie jak partycjonowanie po stronie klienta i serwery proxy, nie obsługują tej funkcji. Technika zwanaPresharding pomaga w tym zakresie.
Rodzaje partycjonowania
W Redis dostępne są dwa typy partycjonowania. Załóżmy, że mamy cztery instancje Redis, R0, R1, R2, R3 i wiele kluczy reprezentujących użytkowników, takich jak użytkownik: 1, użytkownik: 2, ... i tak dalej.
Podział zakresu
Partycjonowanie zakresu odbywa się poprzez mapowanie zakresów obiektów do określonych instancji Redis. Załóżmy, że w naszym przykładzie użytkownicy od ID 0 do ID 10000 przejdą do instancji R0, podczas gdy użytkownicy od ID 10001 do ID 20000 przejdą do instancji R1 i tak dalej.
Hash Partitioning
W tym typie partycjonowania funkcja skrótu (np. Funkcja modułu) jest używana do konwersji klucza na liczbę, a następnie dane są przechowywane w różnych instancjach Redis.