Welche Strategien gibt es, um 'Hot Partitions' in einer NoSQL-Datenbank wie Cassandra oder DynamoDB zu vermeiden?

Hot Partitions entstehen in verteilten Systemen wie Cassandra oder DynamoDB, wenn ein einzelner Partition Key ein überproportionales Volumen an Lese- oder Schreibanfragen aufnimmt. Da Daten basierend auf dem Hash des Partition Keys auf physische Knoten verteilt werden, führt eine ungleichmäßige Verteilung zur Überlastung einzelner Nodes, während andere unterausgelastet bleiben.

Wir setzen zur Behebung und Prävention folgende technische Strategien ein:

StrategieFunktionsweisePrimärer Anwendungsfall
Partition Key SaltingAnhängen eines zufälligen Suffixes (z. B. 1-N) an den Partition Key.Extreme Write-Last auf einem einzelnen Key.
Composite KeysKombination mehrerer Attribute zum Partition Key, um die Granularität zu erhöhen.Vermeidung zu großer Partitionen bei hoher Datenmenge pro Entität.
Write ShardingVerteilung von Schreibvorgängen über mehrere logische Partitionen.Zeitreihen-Daten oder Event-Logs mit hoher Frequenz.
Caching LayerVorlagern von In-Memory-Datenbanken (Redis) oder DAX (DynamoDB Accelerator).Read-intensive Hot Keys (z. B. Trending Topics).

Beim Salting verteilen wir die Last künstlich. Wenn wir beispielsweise Daten für ein Event speichern, nutzen wir statt EventID den Key EventID_1 bis EventID_10. Bei Lesezugriffen müssen wir dann alle zehn Partitionen parallel abfragen und die Ergebnisse aggregieren.

Composite Keys erhöhen die Kardinalität. Anstatt nur die CustomerID zu nutzen, kombinieren wir diese mit einem Zeitstempel oder einer Bestellnummer. Dies verhindert, dass die gesamte Historie eines Kunden auf einer einzigen Partition landet.

Im Rahmen unserer IT-Consulting & Digitale Strategie analysieren wir die Zugriffsmuster, um die optimale Key-Struktur zu definieren. Ein häufiger Fehler ist die Wahl eines Keys mit geringer Kardinalität (z. B. Status-Felder oder Geschlecht), was zwangsläufig zu Hot Partitions führt.

Die Wahl des Partition Keys ist die wichtigste Entscheidung im NoSQL-Datenmodell. Wir empfehlen, Salting nur als letzte Option zu betrachten, da es die Leseoperationen unnötig komplex macht; die primäre Lösung muss immer eine präzise Modellierung des Partition Keys sein, die die natürliche Kardinalität der Daten nutzt und die Last gleichmäßig über den Cluster verteilt.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt