Redis - Partitionnement
Le partitionnement est le processus de division de vos données en plusieurs instances Redis, de sorte que chaque instance ne contiendra qu'un sous-ensemble de vos clés.
Avantages du partitionnement
Il permet des bases de données beaucoup plus volumineuses, en utilisant la somme de la mémoire de nombreux ordinateurs. Sans partitionnement, vous êtes limité à la quantité de mémoire qu'un seul ordinateur peut prendre en charge.
Il permet d'étendre la puissance de calcul à plusieurs cœurs et plusieurs ordinateurs, et la bande passante réseau à plusieurs ordinateurs et adaptateurs réseau.
Inconvénients du partitionnement
Les opérations impliquant plusieurs clés ne sont généralement pas prises en charge. Par exemple, vous ne pouvez pas effectuer l'intersection entre deux ensembles s'ils sont stockés dans les clés qui sont mappées à différentes instances Redis.
Les transactions Redis impliquant plusieurs clés ne peuvent pas être utilisées.
Le granuliaire de partitionnement est la clé, il n'est donc pas possible de partitionner un ensemble de données avec une seule clé énorme comme un très grand ensemble trié.
Lorsque le partitionnement est utilisé, la gestion des données est plus complexe. Par exemple, vous devez gérer plusieurs fichiers RDB / AOF et pour obtenir une sauvegarde de vos données, vous devez agréger les fichiers de persistance de plusieurs instances et hôtes.
L'ajout et la suppression de la capacité peuvent être complexes. Par exemple, Redis Cluster prend en charge le rééquilibrage principalement transparent des données avec la possibilité d'ajouter et de supprimer des nœuds au moment de l'exécution. Cependant, d'autres systèmes comme le partitionnement côté client et les proxys ne prennent pas en charge cette fonctionnalité. Une technique appeléePresharding aide à cet égard.
Types de partitionnement
Il existe deux types de partitionnement disponibles dans Redis. Supposons que nous ayons quatre instances Redis, R0, R1, R2, R3 et de nombreuses clés représentant des utilisateurs tels que user: 1, user: 2, ... et ainsi de suite.
Partitionnement de plage
Le partitionnement de plage est réalisé en mappant des plages d'objets dans des instances Redis spécifiques. Supposons que dans notre exemple, les utilisateurs de l'ID 0 à l'ID 10000 iront dans l'instance R0, tandis que les utilisateurs de l'ID 10001 à l'ID 20000 iront dans l'instance R1 et ainsi de suite.
Partitionnement de hachage
Dans ce type de partitionnement, une fonction de hachage (par exemple, une fonction de module) est utilisée pour convertir la clé en un nombre, puis les données sont stockées dans des instances Redis différentes.