Partitionen und Datenverteilung - Amazon DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Partitionen und Datenverteilung

Amazon DynamoDB speichert Daten in Partitionen. Eine Partition ist eine Speicherzuweisung für eine Tabelle, die von Solid-State-Laufwerken (SSDs) unterstützt und automatisch über mehrere Availability Zones innerhalb einer Region repliziert wird. AWS Die Partitionsverwaltung wird ausschließlich von DynamoDB ausgeführt, d. h. Sie müssen Partitionen nicht selbst verwalten.

Beim Erstellen einer Tabelle ist der Anfangsstatus CREATING. In dieser Phase weist DynamoDB der Tabelle ausreichende Partitionen zu, sodass diese Ihre Anforderungen für den bereitgestellten Durchsatz erfüllen kann. Sie können mit dem Schreiben und Lesen von Tabellendaten beginnen, sobald sich der Tabellenstatus zu ACTIVE ändert.

DynamoDB weist einer Tabelle in folgenden Situationen zusätzliche Partitionen zu:

  • Wenn Sie die Einstellungen für den bereitgestellten Durchsatz der Tabelle über das Maß erhöhen, das die vorhandenen Partitionen unterstützen können.

  • Wenn eine vorhandene Partition bis zur Kapazität gefüllt ist und mehr Speicherplatz erforderlich ist.

Die Partitionsverwaltung wird automatisch im Hintergrund ausgeführt und ist für Ihre Anwendungen transparent. Ihre Tabelle bleibt verfügbar und unterstützt Ihre Anforderungen des bereitgestellten Durchsatzes vollständig.

Weitere Details finden Sie unter Entwerfen von Partitionsschlüsseln.

Globale sekundäre Indexe in DynamoDB bestehen ebenfalls aus Partitionen. Die Daten in einem globalen sekundären Index werden getrennt von den Daten in der Basistabelle gespeichert. Indexpartitionen verhalten sich jedoch ähnlich wie Tabellenpartitionen.

Datenverteilung: Partitionsschlüssel

Wenn Ihre Tabelle über einen einfachen Primärschlüssel (nur Partitionsschlüssel) verfügt, speichert und ruft DynamoDB jedes Element basierend auf seinem Partitionsschlüsselwert ab.

Um ein Element in die Tabelle zu schreiben, verwendet DynamoDB den Wert des Partitionsschlüssels als Eingabe für eine interne Hash-Funktion. Der Ausgabewert der Hash-Funktion bestimmt die Partition, in der das Element gespeichert wird.

Um ein Element aus der Tabelle zu lesen, müssen Sie den Partitionsschlüsselwert für das Element angeben. DynamoDB verwendet diesen Wert als Eingabe für die Hash-Funktion. Daraus ergibt sich die Partition, in der das Element gefunden werden kann.

Das folgende Diagramm zeigt eine Tabelle mit dem Namen Pets, die sich über mehrere Partitionen erstreckt. Der Primärschlüssel der Tabelle ist AnimalType(nur dieses Schlüsselattribut wird angezeigt). DynamoDB verwendet eine Hash-Funktion, um zu ermitteln, wo ein neues Element gespeichert werden soll, und zwar in diesem Fall basierend auf dem Hash-Wert der Zeichenfolge Dog. Hinweis: Die Elemente werden nicht sortiert gespeichert. Die Position jedes einzelnen Elements wird durch den Hash-Wert seines Partitionsschlüssels bestimmt.

Anmerkung

DynamoDB ist für eine einheitliche Verteilung von Elementen über die Partitionen einer Tabelle optimiert, unabhängig davon, wie viele Partitionen vorliegen. Wir empfehlen, dass Sie einen Partitionsschlüssel verwenden, der eine großen Anzahl von eindeutigen Werten in Bezug auf die Anzahl der Elemente in der Tabelle aufnehmen kann.

Datenverteilung: Partitions- und Sortierschlüssel

Wenn die Tabelle über einen zusammengesetzten Primärschlüssel (Partitionsschlüssel und Sortierschlüssel) verfügt, berechnet DynamoDB den Hashwert des Partitionsschlüssels auf die gleiche Weise wie unter Datenverteilung: Partitionsschlüssel beschrieben. Es neigt jedoch dazu, Elemente, die den gleichen Wert des Partitionsschlüssels haben, nahe beieinander und in sortierter Reihenfolge nach dem Wert des Sortierschlüsselattributs zu halten. Die Gruppe von Elementen, die denselben Wert für den Partitionsschlüssel haben, wird als Elementsammlung bezeichnet. Artikelsammlungen sind für das effiziente Abrufen von Artikelbereichen innerhalb der Sammlung optimiert. Wenn Ihre Tabelle keine lokalen Sekundärindizes hat, teilt DynamoDB Ihre Elementsammlung automatisch auf so viele Partitionen auf, wie erforderlich sind, um die Daten zu speichern und den Lese- und Schreibdurchsatz zu gewährleisten.

Beim Schreiben eines Elements in die Tabelle berechnet DynamoDB den Hash-Wert des Partitionsschlüssels, um zu ermitteln, welche Partition das Element enthalten soll. In dieser Partition können mehrere Elemente denselben Wert für den Partitionsschlüssel haben. DynamoDB speichert dann das Element zusammen mit den anderen Elementen mit demselben Partitionsschlüssel nach Sortierschlüssel sortiert in aufsteigender Reihenfolge.

Um ein Element aus der Tabelle zu lesen, müssen Sie den Partitions- und Sortierschlüsselwert für das Element angeben. DynamoDB berechnet den Hash-Wert des Partitionsschlüssels. Daraus ergibt sich die Partition, in der sich das Element befindet.

Sie können mehrere Elemente aus der Tabelle in einer einzigen Operation (Query) lesen, sofern die gewünschten Elemente denselben Partitionsschlüsselwert besitzen. DynamoDB gibt alle Elemente mit diesem Partitionsschlüsselwert zurück. Optional können Sie eine Bedingung auf den Sortierschlüssel anwenden, so dass nur die Elemente in einem bestimmten Wertebereich zurückgegeben werden.

Nehmen wir an, die Pets-Tabelle hat einen zusammengesetzten Primärschlüssel, der aus AnimalType(Partitionsschlüssel) und Name (Sortierschlüssel) besteht. Das folgende Diagramm veranschaulicht, wie DynamoDB ein Element mit dem Partitionsschlüsselwert Dog und dem Sortierschlüsselwert Fido schreibt.

Um dasselbe Element aus der Tabelle Pets zu lesen, berechnet DynamoDB den Hash-Wert von Dog. Daraus ergibt sich die Partition, in der diese Elemente gespeichert sind. DynamoDB scannt dann die Attributwerte des Sortierschlüssels, bis Fido gefunden wird.

Um alle Elemente mit dem Wert AnimalTypevon Dog zu lesen, können Sie einen Query Vorgang ausführen, ohne eine Sortierschlüsselbedingung anzugeben. Standardmäßig werden die Elemente in der Reihenfolge zurückgegeben, in der sie gespeichert sind (d. h. in aufsteigender Reihenfolge nach Sortierschlüssel). Wahlweise können Sie stattdessen die absteigende Reihenfolge anfordern.

Um nur einige der Dog-Elemente abzufragen, können Sie eine Bedingung auf den Sortierschlüssel anwenden (z. B. nur die Dog-Elemente, in denen Name mit einem Buchstaben im Bereich von A bis K beginnt).

Anmerkung

In der DynamoDB-Tabelle gibt es keine Einschränkung in Bezug auf die Anzahl von eindeutigen Sortierschlüsselwerten pro Partitionsschlüsselwert. Wenn Sie viele Milliarden von Dog-Elementen in der Tabelle Pets speichern müssen, weist DynamoDB automatisch genügend Speicherplatz zu, um diese Anforderung zu erfüllen.