EMZETT.
Login

Sharding und Partitionierung

Kurz: Beim Sharding wird ein großer Datenbestand in Teile (Shards) aufgeteilt, die auf verschiedenen Servern liegen. So wachsen Speicher und Durchsatz mit der Servermenge.

Genauer: Ein Partitionsschlüssel entscheidet, welche Zeile in welchen Shard kommt. Gute Schlüssel verteilen Last gleichmäßig und halten zusammengehörige Daten beieinander. Abfragen über mehrere Shards sind teuer.

Im Detail

  • Bereichs-Partitionierung: Z. B. A–F auf Server 1. Gut für Bereichsabfragen, Gefahr von Hotspots.
  • Hash-Partitionierung: Hash des Schlüssels bestimmt den Shard. Gleichmäßig, aber Bereichsabfragen schwer.
  • Consistent Hashing: Beim Hinzufügen von Servern wandert nur ein kleiner Teil der Daten.
  • Rebalancing: Shards verschieben, wenn Server hinzukommen.
  • Hot Keys: Ein sehr beliebiger Schlüssel überlastet einen Shard.
  • Joins und Transaktionen: Über Shards hinweg aufwendig (siehe Saga, 2PC).

Siehe auch: Consistent Hashing, Verteilte Transaktionen: Zwei-Phasen-Commit und Saga