Wählen Sie beim Erstellen einer Dynamodb-Tabelle Primärschlüssel und lokale Sekundärindizes (LSIs) aus, damit eine Abfrageoperation die gewünschten Elemente zurückgibt.
Abfrageoperationen unterstützen nur eine gleichwertige Operatorauswertung des Primärschlüssels, sind jedoch vom Sortierschlüssel abhängig (=, <, <=,>,> =, zwischen, beginnen).
Scanvorgänge sind im Allgemeinen langsamer und teurer, da der Vorgang jedes Element in Ihrer Tabelle durchlaufen muss, um die von Ihnen angeforderten Elemente zu erhalten.
Beispiel:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
In diesem Beispiel können Sie eine Abfrageoperation verwenden, um Folgendes abzurufen:
- Eine Kunden-ID mit einem bedingten Filter für AccountType
Ein Scanvorgang müsste verwendet werden, um Folgendes zurückzugeben:
- Alle Kunden mit einem bestimmten AccountType
- Artikel basierend auf bedingten Filtern nach Land, dh Alle Kunden aus den USA
- Artikel, die auf bedingten Filtern von LastPurchase basieren, dh allen Kunden, die im letzten Monat einen Kauf getätigt haben
Um Scanvorgänge bei häufig verwendeten Vorgängen zu vermeiden, erstellen Sie einen lokalen Sekundärindex (LSI) oder einen globalen Sekundärindex (GSI).
Beispiel:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
GSI: AccountType + CustomerId
LSI: CustomerId + LastPurchase
In diesem Beispiel können Sie mit einer Abfrageoperation Folgendes erhalten:
- Eine Kunden-ID mit einem bedingten Filter für AccountType
- [GSI] Ein bedingter Filter für Kunden-IDs für einen bestimmten Kontotyp
- [LSI] Eine Kunden-ID mit einem bedingten Filter für LastPurchase