Partitionierung
Partitionierung verteilt Datensätze anhand einer Regel auf getrennte Einheiten. Der Schlüssel beeinflusst Lastverteilung und mögliche lokale Abfragen.
- PartitionsschlüsselDas Feld, nach dem verteilt wird.
- Fan-outEine Abfrage muss alle Partitionen fragen.
- HotspotEine Partition trägt fast die ganze Last.
Einordnung
Warum das wichtig ist
Wächst das Bestellvolumen, trägt eine einzelne Einheit die Last nicht mehr. Verteilung hilft nur, wenn der Schlüssel zur häufigsten Abfrage passt. Im Englischen heißt das Sharding. Identische Kopien sind Replikation.
Dieser Baustein erklärt horizontale Datenverteilung. Für identische Datenkopien siehe Replikation.
Auf einen Blick · Daten auf Shards verteilt
Welcher Schlüssel verteilt die Bestellungen?
Variante: Bei stark gewachsenem Bestellvolumen verteilt der Shop Bestellungen nach Kunden-ID auf drei Partitionen. Die übrigen Module bleiben im modularen Monolithen.
So liest du das Bild
- Partitionsschlüssel Die Auswahl Kunden-ID, Bestell-ID oder Bestelldatum.
- Fan-out Apricot markierte Abfragen berühren alle drei Partitionen.
- Hotspot Beim Bestelldatum landen alle neuen Bestellungen in einer Partition.
Alle Bestellungen von K-171 von 3 berührte Partitionen · eine Partition genügt
Bestellung B-1042 lesen3 von 3 berührte Partitionen · Fan-out über alle Partitionen
Alle Bestellungen von heute3 von 3 berührte Partitionen · Fan-out über alle Partitionen
Werte illustrativ
Nutzen & Grenzen
Hilft, wenn
- Partitionierung verteilt Datenbestand und Arbeit, sobald Volumen oder Schreiblast die Kapazität einer Einheit übersteigen.
- Ein stabiler Abfrageschlüssel lenkt Anfragen gezielt an die zuständige Partition.
- Eine geordnete Bereichsaufteilung unterstützt Archivierung und gezielte Abfragen entlang dieses Bereichs.
Grenzen
- Ein ungleich verteilender Schlüssel erzeugt einen Hotspot: Eine Partition ist überlastet, die anderen bleiben ungenutzt.
- Abfragen ohne den Schlüssel fragen alle Partitionen. Für sie hilft eine eigene Lesestruktur, etwa mit CQRS.
- Wer den Schlüssel später wechselt, verschiebt die Daten: Das ist eine Datenmigration mit eigenem Aufwand.
In der Praxis
- Wähle einen Schlüssel anhand typischer Zugriffe und erwarteter Verteilung. Prüfe, welche Operationen damit eine Partition gezielt erreichen und welche mehrere Einheiten benötigen.
- Simuliere Last- und Schlüsselverteilung mit realistischen Größenordnungen. Suche Hotspots und dokumentiere, wie neue Partitionen oder Schlüsselwechsel migriert werden.
- Miss Kosten übergreifender Abfragen und sichere Umzüge mit Kontrollwerten. Replikation verteilt Kopien; Performance ordnet Messgrößen ein.
Ausführliche Erklärung lesen
Partitionierung ordnet verschiedene Datensätze anhand eines Schlüssels auf getrennte Datenbereiche oder Knoten. Hash- und Bereichsaufteilung verteilen Schlüssel beziehungsweise halten zusammenhängende Werte gruppiert. Der Schlüssel beeinflusst damit Lastverteilung und Reichweite typischer Abfragen.
Zugriffe mit bekanntem Schlüssel können eine Partition gezielt erreichen; andere Abfragen benötigen Fan-out oder zusätzliche Sichten. Ungleichmäßige Schlüsselverteilungen erzeugen Hotspots. Umzüge, Wachstum und Schlüsseländerungen verlangen ein kontrolliertes Migrationsverfahren.
Replikation vervielfältigt Daten zur Verfügbarkeit oder Leselast; Partitionierung teilt den Datenbestand auf. Performance hilft, Schlüsselwirkung und Engpässe zu messen.
Im englischen Sprachgebrauch heißt horizontale Partitionierung oft Sharding.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Wie viele Partitionen berührt „Alle Bestellungen von heute“ bei der Kunden-ID, und wie viele beim Bestelldatum?
Lösung mit Begründung ansehen
Bei der Kunden-ID alle drei (Fan-out), beim Bestelldatum nur eine.
AnwendenAuf eine neue Lage übertragen
Der Kundenservice liest fast nur die Bestellungen einzelner Kunden, etwa von K-42. Welchen Schlüssel wählst du?
Lösung mit Begründung ansehen
Die Kunden-ID: Der Router findet die Partition von K-42 direkt, und die Abfrage berührt nur eine Partition.
BewertenEine Alternative abwägen
Ist das Bestelldatum ein guter Schlüssel, weil der Tagesbericht dann nur eine Partition berührt? Wie wägst du ab?
Lösung mit Begründung ansehen
Der Tagesbericht wird billig, aber alle Schreibzugriffe des Tages treffen eine Partition (Hotspot). Empfehlung: Kunden-ID als Schlüssel, den Tagesbericht über eine Lesestruktur bedienen.
Vertiefen
Diese Bausteine führen die Gedanken dieser Seite weiter.
Quellen
- Microsoft · Data Partitioning (öffnet in neuem Tab)Vergleicht horizontale, vertikale und funktionale Datenaufteilung.
- Microsoft · Sharding (öffnet in neuem Tab)Beschreibt Verteilungsschlüssel, Partitionierung und deren Betriebsfolgen.
- PostgreSQL · Table Partitioning (öffnet in neuem Tab)Zeigt Range-, List- und Hash-Partitionierung einschließlich Grenzen.