Eine Abfrageoperation wie in der DynamoDb-Dokumentation angegeben:
Eine Abfrageoperation durchsucht nur Primärschlüsselattributwerte und unterstützt eine Untergruppe von Vergleichsoperatoren für Schlüsselattributwerte, um den Suchprozess zu verfeinern.
und der Scanvorgang:
Ein Scanvorgang durchsucht die gesamte Tabelle. Sie können Filter angeben, die nach dem vollständigen Scan auf die Ergebnisse angewendet werden, um die an Sie zurückgegebenen Werte zu verfeinern.
Welches ist am besten basierend auf Leistung und Kosten Überlegungen.
Sie haben dynamodb Tabellenpartitionsschlüssel / Primärschlüssel als customer_country
. Wenn Sie die Abfrage verwenden, ist customer_country
das obligatorische Feld für die Abfrageoperation. Alle Filter können nur Elemente gemacht werden, die zu customer_country
gehören.
Wenn Sie einen Tabellenscan durchführen, wird der Filter für alle Partitionsschlüssel / Primärschlüssel ausgeführt. Zuerst wurden alle Daten abgerufen und nach dem Abrufen aus der Tabelle Filter angewendet.
here customer_country
ist der Partitionsschlüssel / Primärschlüssel
und id
ist der Sortierschlüssel
Wenn Sie eine Abfrageoperation ausführen, gilt dies nur für customer_country
value.
Der Wert sollte nur der gleiche Operator (=) sein.
Es werden also nur Elemente abgerufen, die diesem Partitionsschlüssel / Primärschlüsselwert entsprechen.
Wenn Sie einen Scanvorgang ausführen, ruft er alle Elemente in dieser Tabelle ab und filtert Daten heraus, nachdem diese Daten erfasst wurden.
Hinweis: Führen Sie keinen Scanvorgang durch, der Ihre RCU überschreitet.
In puncto Leistung finde ich es gut, Ihre Tabelle so zu gestalten, dass Anwendungen Query
anstelle von Scan
verwenden. Da bei einer Scanoperation immer die gesamte Tabelle gescannt wird, bevor die gewünschten Werte herausgefiltert werden, ist mehr Zeit und Platz für die Verarbeitung von Datenoperationen wie Lesen, Schreiben und Löschen erforderlich. Weitere Informationen finden Sie im offiziellen Dokument
Wählen Sie beim Erstellen einer Dynamodb-Tabelle Primärschlüssel und lokale sekundäre Indizes (LSIs) aus, damit eine Abfrageoperation die gewünschten Elemente zurückgibt.
Scanvorgänge sind in der Regel langsamer und teurer, da die Operation jedes Element in Ihrer Tabelle durchlaufen muss, um die angeforderten Elemente abzurufen.
Beispiel:
%Vor%In diesem Beispiel können Sie eine Abfrageoperation verwenden, um Folgendes zu erhalten:
Um zurückzukehren, muss eine Scan-Operation verwendet werden:
Um Scan-Operationen bei häufig verwendeten Operationen zu vermeiden, die einen lokalen sekundären Index (LSI) oder globalen sekundären Index (GSI) erstellen.
Beispiel:
%Vor%Damit können Query-Operationen abgerufen werden:
Tags und Links amazon-dynamodb