Skalierbare Speichersysteme
Skalierbare Speichersysteme verteilen Daten auf viele Maschinen, um Kapazität, Durchsatz und Verfügbarkeit über einen einzelnen Server hinaus bereitzustellen, während sie gleichzeitig die Ausfälle einzelner Knoten maskieren.
Definition
Ein skalierbares Speichersystem speichert Daten über einen Cluster von Maschinen hinweg, partitioniert sie für Kapazität und Durchsatz und repliziert sie für Dauerhaftigkeit und Verfügbarkeit, sodass das Gesamtsystem mit der Anzahl der Knoten skaliert, während es individuelle Knotenausfälle toleriert.
Scope
Dieses Thema behandelt verteilte Dateisysteme, die für Commodity-Cluster konzipiert sind, verteilte Schlüssel-Wert- und Wide-Column-Speicher sowie die strukturierten Overlay-Techniken – konsistentes Hashing und verteilte Hashtabellen –, die zur Partitionierung und Lokalisierung von Daten in großem Maßstab verwendet werden. Es umfasst Datenpartitionierung (Sharding), Replikation zur Dauerhaftigkeit sowie die Kompromisse bei Konsistenz und Verfügbarkeit, die stark konsistente von hochverfügbaren Speichern unterscheiden.
Core questions
- Wie werden Daten über eine große, sich ändernde Menge von Knoten partitioniert und lokalisiert?
- Wie werden Dauerhaftigkeit und Verfügbarkeit trotz häufiger Knotenausfälle erreicht?
- Welche Konsistenzgarantien kann ein skalierbarer Speicher bieten und zu welchem Preis?
Key theories
- Cluster-Dateisysteme
- Systeme wie das Google File System speichern riesige Dateien als Blöcke, die über Commodity-Server repliziert werden, optimieren für große sequentielle Zugriffe und behandeln Ausfälle als Norm statt als Ausnahme.
- Verteilte strukturierte Speicher
- Wide-Column- und Schlüssel-Wert-Speicher wie Bigtable und Dynamo partitionieren Daten nach Schlüssel über Knoten hinweg und replizieren sie, wobei sie Abfrageausdrucksfähigkeit und Konsistenz gegen horizontale Skalierbarkeit und Verfügbarkeit eintauschen.
- Konsistentes Hashing und verteilte Hashtabellen
- Konsistentes Hashing ordnet Schlüssel und Knoten auf einem Ring an, sodass das Hinzufügen oder Entfernen eines Knotens nur einen kleinen Bruchteil der Schlüssel verschiebt, und verteilte Hashtabellen wie Chord bieten skalierbare, dezentrale Schlüssel-Nachschlagevorgänge mit logarithmischem Routing.
Clinical relevance
Skalierbarer Speicher ist die dauerhafte Grundlage von Cloud-Plattformen und großen Webdiensten: Objektspeicher, Datenbanken und Analyse-Pipelines basieren alle auf verteilten Dateisystemen und Schlüssel-Wert-Speichern, deren Partitionierungs- und Replikationsentscheidungen die Dauerhaftigkeits- und Konsistenzgarantien des Systems festlegen.
History
Peer-to-Peer-verteilte Hashtabellen wie Chord (2001) zeigten skalierbare dezentrale Nachschlagevorgänge; Googles File System (2003) und Bigtable (2006-2008) demonstrierten Cluster-Skala-Speicher für strukturierte Daten; und Amazons Dynamo (2007) popularisierte hochverfügbaren Schlüssel-Wert-Speicher und begründete damit die moderne Landschaft der skalierbaren Speicher und NoSQL.
Debates
- Starke Konsistenz versus hohe Verfügbarkeit im Speicher
- Stark konsistente Speicher vereinfachen die Anwendungslogik, müssen aber bei Partitionen auf Verfügbarkeit verzichten, während hochverfügbare Speicher wie Dynamo temporäre Abweichungen akzeptieren und die Konfliktlösung an die Anwendung delegieren; die richtige Wahl hängt von der Toleranz der Daten gegenüber Veralterung ab.
Key figures
- Sanjay Ghemawat
- Werner Vogels
- Ion Stoica
- Hari Balakrishnan
Related topics
Seminal works
- ghemawat2003
- decandia2007
- stoica2001
Frequently asked questions
- Welches Problem löst konsistentes Hashing?
- Wenn Daten durch Hashing von Schlüsseln über Knoten partitioniert werden, ordnet naives Hashing fast alles neu an, wenn ein Knoten hinzugefügt oder entfernt wird. Konsistentes Hashing ordnet Schlüssel und Knoten auf einem Ring an, sodass eine solche Änderung nur einen kleinen, begrenzten Bruchteil der Schlüssel neu positioniert, was für elastische, sich ständig ändernde Cluster unerlässlich ist.