2016-08-09 11 views
6

Ich habe eine Dynamodb-Tabelle, die nur einen Hash-Schlüssel (Partitionsschlüssel) enthält. Es gibt keinen Bereichsschlüssel (Sortierschlüssel) für diese Tabelle. Hash-Schlüssel ist ein numerischer Wert (zB: - 1,2,3 ... N) Wenn ich diese Tabelle abfrage oder scanne, in welcher Reihenfolge senden sie die Ergebnisse? Wenn ein Bereichsschlüssel vorhanden ist, sortiert er die Ergebnisse offensichtlich in aufsteigender Reihenfolge basierend auf dem Bereichsschlüsselwert. Aber in diesem Fall ohne einen RANGE KEY, wie verhält es sich?Wie kann Dynamodb die Abfrageergebnisse sortieren, wenn kein Bereichsschlüssel verfügbar ist?

Antwort

3

DynamoDB bietet keine Bestellgarantien (implizit oder explizit) für das Scannen von Artikeln aus einer Tabelle. Die Elemente werden mehr oder weniger in der Reihenfolge zurückgegeben, in der die interne Hash-Funktion Elemente den Partitionen der Tabelle zuordnet, aber keine impliziten oder expliziten Bestellgarantien vorliegen.

Auch bei einem Sortierschlüssel wird die Reihenfolge nur innerhalb der Elemente desselben Partitionsschlüssels angegeben. Selbst wenn Sie also einen Bereichsschlüssel in der Tabelle hätten, würden Sie nur Abfragen Elemente für einen bestimmten Hash-Schlüssel zu einem Zeitpunkt.

Wenn Sie alle Elemente in einer Tabelle bestellen müssen, dann haben Sie ein paar Optionen: - scannen alle Daten und Ordnung auf dem Client - schaffen einen globalen Sekundärindex mit einem gemeinsamen Wert für Partitionsschlüssel für alle Artikel und Abfrage dass - entwerfen Sie eine komplementäre Speicherschicht, um Bestellung bereitzustellen

Es ist wichtig zu betonen, dass die ersten beiden Optionen nur für relativ kleine Tabellen gut sind. Sobald Sie etwa 10GB in der Tabelle erreichen, wird ein GSI mit einem gemeinsamen Schlüssel als ein bedeutender Flaschenhals wirken und natürlich wird das Scannen und Ordnen des gesamten Tisches ebenfalls problematisch.

Verwandte Themen