Entwerfen von Partitionsschlüsseln zur Verteilung der Workload - 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.

Entwerfen von Partitionsschlüsseln zur Verteilung der Workload

Der Partitionsschlüsselabschnitt des primären Schlüssels einer Tabelle legt die logischen Partitionen fest, in denen die Daten einer Tabelle gespeichert werden. Dies wirkt sich wiederum auf die zugrunde liegenden physischen Partitionen aus. Ein Partitionsschlüsseldesign, das E/A-Anforderungen nicht effektiv verteilt, kann zu Hot-Partitionen führen, die Drosselungen verursachen und die bereitgestellte E/A-Kapazität ineffizient nutzen.

Die optimale Nutzung des bereitgestellten Durchsatzes einer Tabelle ist nicht nur von den Workload-Mustern einzelner Elemente abhängig, sondern auch vom Design des Partitionsschlüssels. Dies bedeutet nicht, dass Sie auf alle Partitionsschlüsselwerte zugreifen müssen, um einen effizienten Durchsatz zu erzielen. Es bedeutet noch nicht einmal, dass der Prozentsatz der Partitionsschlüsselwerte, auf die zugegriffen wird, hoch sein muss. Es bedeutet jedoch, dass die Anforderungen umso weiter über den partitionierten Bereich verteilt werden, je mehr unterschiedliche Partitionsschlüsselwerte dem Zugriff durch Ihren Workload unterliegen. Im Allgemeinen nutzen Sie den bereitgestellten Durchsatz effizienter, wenn das Verhältnis zwischen den Partitionsschlüsselwerten, die einem Zugriff unterliegen, und der Gesamtzahl der Partitionsschlüsselwerte zunimmt.

Im Folgenden finden Sie einen Vergleich der Effizienz des bereitgestellten Durchsatzes für einige häufige Partitionsschlüsselschemas.

Partitionsschlüsselwert Gleichmäßigkeit

Benutzer-ID, in der die Anwendung viele Benutzer hat.

Gut

Statuscode, in dem es nur einige wenige mögliche Statuscodes gibt. Schlecht
Erstellungsdatum eines Elements, gerundet auf den nächsten Zeitraum (z. B. Tag, Stunde oder Minute). Schlecht
Geräte-ID, in der jedes Gerät mit relativ ähnlichen Intervallen auf Daten zugreift. Gut
Geräte-ID, wobei eine bei weitem beliebter als alle anderen ist, auch wenn es viele überwachte Geräte gibt. Schlecht

Wenn eine einzelne Tabelle nur eine kleine Anzahl von Partitionsschlüsselwerten besitzt, sollten Sie in Betracht ziehen, die Schreiboperationen auf mehrere unterschiedliche Partitionsschlüsselwerte zu verteilen. Mit anderen Worten, strukturieren Sie die Primärschlüsselelemente, um einen "heißen" (stark angeforderten) Partitions-Schlüsselwert, der die Gesamtleistung verlangsamt, zu vermeiden.

Nehmen wir als Beispiel eine Tabelle mit einem zusammengesetzten Primärschlüssel. Der Partitionsschlüssel repräsentiert das Erstelldatum des Elements, gerundet auf den nächsten Tag. Der Sortierschlüssel ist eine Element-ID. An einem bestimmten Tag, beispielsweise 2014-07-09, werden alle neuen Elemente zu diesem bestimmten Partitionsschlüsselwert (und der entsprechenden physischen Partition) geschrieben.

Wenn die Tabelle vollständig in eine einzelne Partition passt (unter Berücksichtigung des Wachstums Ihrer Daten über die Zeit) und die Lese- und Schreibdurchsatzanforderungen Ihrer Anwendung die Lese- und Schreibkapazitäten einer einzelnen Partition nicht überschreiten, erfährt Ihre Anwendung keine unerwartete Drosselung durch eine Partitionierung.

Informationen zur Verwendung von NoSQL Workbench für DynamoDB zur Visualisierung Ihres Partitionsschlüsseldesigns finden Sie unter Erstellen von Datenmodellen mit NoSQL Workbench.