Weitere Aspekte der Arbeit mit dem Query-Vorgang in DynamoDB - 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.

Weitere Aspekte der Arbeit mit dem Query-Vorgang in DynamoDB

In diesem Abschnitt werden weitere Aspekte des DynamoDB-Abfragevorgangs behandelt, darunter die Begrenzung der Ergebnisgröße, das Zählen gescannter und zurückgegebener Elemente, die Überwachung des Lesekapazitätsverbrauchs und die Steuerung der Lesekonsistenz.

Begrenzung der Anzahl an Elementen in der Ergebnismenge

Die Query-Operation ermöglicht Ihnen, die Anzahl der Elemente einzuschränken, die gelesen werden. Legen Sie dazu den Parameter Limit auf die maximale Anzahl Elemente fest, die zurückgegeben werden sollen.

Beispiel: Sie führen eine Query für eine Tabelle mit einem Limit-Wert von 6 und ohne Filterausdruck durch. Das Query-Ergebnis enthält die ersten sechs Elemente der Tabelle, die mit dem Schlüsselbedingungsausdruck der Anforderung übereinstimmen.

Angenommen, Sie fügen nun einen Filterausdruck der Query hinzu. In diesem Fall liest DynamoDB bis zu sechs Elemente und gibt dann nur diejenigen zurück, die mit dem Filterausdruck übereinstimmen. Das Query-Endergebnis enthält sechs oder weniger Elemente, selbst wenn mehr Elemente mit dem Filterausdruck übereinstimmen würden, wenn DynamoDB weitere Elemente gelesen hätte.

Zählen der Elemente in den Ergebnissen

Zusätzlich zu den Elementen, die mit Ihren Kriterien übereinstimmen, enthält die Query-Antwort noch die folgenden Elemente:

  • ScannedCount – die Anzahl der Elemente, die mit dem Schlüsselbedingungsausdruck übereinstimmten, bevor ein Filterausdruck (falls vorhanden) angewendet wurde.

  • Count – die Anzahl der Elemente, die verbleiben, nachdem ein Filterausdruck (falls vorhanden) angewendet wurde.

Anmerkung

Wenn Sie keinen Filterausdruck verwenden, haben ScannedCount und Count den gleichen Wert.

Wenn der Query-Ergebnissatz größer als 1 MB ist, repräsentieren ScannedCount und Count nur eine Teilmenge der Gesamtelemente. Sie müssen mehrere Query-Operationen ausführen, um alle Ergebnisse abzurufen (siehe Paginieren von Tabellenabfrageergebnissen in DynamoDB).

Jede Query-Antwort enthält die ScannedCount und Count für die Elemente, die von der betreffenden Query-Anforderung verarbeitet wurden. Um eine Gesamtsumme für alle Query-Anforderungen zu erhalten, könnten Sie eine laufende Zählung der Werte ScannedCount und Count vornehmen.

Durch die Abfrage verbrauchte Kapazitätseinheiten

Sie können Query für jede Tabelle oder jeden sekundären Index verwenden, sofern Sie den Namen des Partitionsschlüsselattributs und einen einzelnen Wert für dieses Attribut angeben. Query gibt alle Elemente mit diesem Partitionsschlüsselwert zurück. Sie können optional ein Sortierschlüsselattribut angeben und einen Vergleichsoperator verwenden, um die Suchergebnisse zu verfeinern. Query APIOperationen verbrauchen wie folgt Lesekapazitätseinheiten.

Wenn Sie Query eine ... DynamoDB verbraucht Lesekapazitätseinheiten von ...
Tabelle Die bereitgestellte Lesekapazität der Tabelle.
Globaler sekundärer Index Die bereitgestellte Lesekapazität des Index.
Lokaler sekundärer Index Die bereitgestellte Lesekapazität der Basistabelle.

Standardmäßig gibt eine Query-Operation keine Daten über seinen Lesekapazitätsverbrauch zurück. Jedoch können Sie den ReturnConsumedCapacity-Parameter in einer Query-Anforderung angeben, um diese Information zu erhalten. Folgende sind die gültigen Einstellungen für ReturnConsumedCapacity:

  • NONE – Es werden keine verbrauchten Kapazitätsdaten zurückgegeben. (Dies ist die Standardeinstellung.)

  • TOTAL – Die Antwort enthält die zusammengefasste Anzahl der verbrauchten Lesekapazitätseinheiten.

  • INDEXES – Die Antwort zeigt die zusammengefasste Anzahl der verbrauchten Lesekapazitätseinheiten, zusammen mit der verbrauchten Kapazität für jede aufgerufene Tabelle und jeden aufgerufenen Index, an.

DynamoDB berechnet die Anzahl der verbrauchten Lesekapazitätseinheiten auf der Grundlage der Anzahl der Elemente und der Größe dieser Elemente, nicht auf der Datenmenge, die an eine Anwendung zurückgegeben wird. Aus diesem Grund bleibt die Anzahl der verbrauchten Kapazitätseinheiten gleich, unabhängig davon, ob Sie alle Attribute (das Standardverhalten) oder nur einige von ihnen anfordern (mithilfe eines Projektionsausdrucks). Die Zahl ist auch gleich, unabhängig davon, ob Sie einen Filterausdruck verwenden oder nicht. Queryverbraucht eine Mindestlesekapazitätseinheit, um einen sehr konsistenten Lesevorgang pro Sekunde oder zwei eventuell konsistente Lesevorgänge pro Sekunde für ein Element mit bis zu 4 KB durchzuführen. Wenn Sie ein Element lesen möchten, das größer als 4 KB ist, benötigt DynamoDB zusätzliche Leseanforderungseinheiten. Bei leeren Tabellen und sehr großen Tabellen mit einer geringen Anzahl an Partitionsschlüsseln können zusätzliche RCUs Gebühren anfallen, die über die abgefragte Datenmenge hinausgehen. Damit werden die Kosten für die Query Bearbeitung der Anfrage gedeckt, auch wenn keine Daten vorhanden sind.

Lesekonsistenz für die Abfrage

Eine Query-Operation führt standardmäßig lEventually Consistent-Lesevorgänge aus. Dies bedeutet, dass die Query-Ergebnisse Änderungen aufgrund kürzlich abgeschlossener PutItem oder UpdateItem-Operationen, nicht wiedergeben könnten. Weitere Informationen finden Sie unter DynamoDB-Lesekonsistenz.

Wenn Sie Strongly Consistent-Lesevorgänge benötigen, legen Sie den ConsistentRead-Parameter in der Query-Anforderung auf true fest.