Redis - Partitionierung
Beim Partitionieren werden Ihre Daten in mehrere Redis-Instanzen aufgeteilt, sodass jede Instanz nur eine Teilmenge Ihrer Schlüssel enthält.
Vorteile der Partitionierung
Es ermöglicht viel größere Datenbanken, wobei die Summe des Speichers vieler Computer verwendet wird. Ohne Partitionierung sind Sie auf die Speichermenge beschränkt, die ein einzelner Computer unterstützen kann.
Es ermöglicht die Skalierung der Rechenleistung auf mehrere Kerne und mehrere Computer sowie der Netzwerkbandbreite auf mehrere Computer und Netzwerkadapter.
Nachteile der Partitionierung
Vorgänge mit mehreren Schlüsseln werden normalerweise nicht unterstützt. Beispielsweise können Sie den Schnittpunkt zwischen zwei Sätzen nicht ausführen, wenn sie in den Schlüsseln gespeichert sind, die verschiedenen Redis-Instanzen zugeordnet sind.
Redis-Transaktionen mit mehreren Schlüsseln können nicht verwendet werden.
Das Partitionierungsgranuliary ist der Schlüssel, daher ist es nicht möglich, ein Dataset mit einem einzelnen großen Schlüssel wie einem sehr großen sortierten Satz zu teilen.
Bei Verwendung der Partitionierung ist die Datenverarbeitung komplexer. Beispielsweise müssen Sie mehrere RDB / AOF-Dateien verarbeiten. Um eine Sicherung Ihrer Daten zu erhalten, müssen Sie die Persistenzdateien von mehreren Instanzen und Hosts zusammenfassen.
Das Hinzufügen und Entfernen der Kapazität kann komplex sein. Beispielsweise unterstützt Redis Cluster eine weitgehend transparente Neuverteilung von Daten mit der Möglichkeit, zur Laufzeit Knoten hinzuzufügen und zu entfernen. Andere Systeme wie clientseitige Partitionierung und Proxys unterstützen diese Funktion jedoch nicht. Eine Technik namensPresharding hilft in dieser Hinsicht.
Arten der Partitionierung
In Redis stehen zwei Arten der Partitionierung zur Verfügung. Angenommen, wir haben vier Redis-Instanzen, R0, R1, R2, R3 und viele Schlüssel, die Benutzer wie Benutzer: 1, Benutzer: 2, ... usw. darstellen.
Bereichspartitionierung
Die Bereichspartitionierung wird erreicht, indem Bereiche von Objekten bestimmten Redis-Instanzen zugeordnet werden. Angenommen, in unserem Beispiel gehen die Benutzer von ID 0 bis ID 10000 in die Instanz R0, während die Benutzer von ID 10001 bis ID 20000 in die Instanz R1 usw. gehen.
Hash-Partitionierung
Bei dieser Art der Partitionierung wird eine Hash-Funktion (z. B. eine Modulfunktion) verwendet, um den Schlüssel in eine Zahl umzuwandeln, und dann werden die Daten in verschiedenen Redis-Instanzen gespeichert.