Al crear una tabla Dynamodb, seleccione Claves primarias e Índices secundarios locales (LSI) para que una operación de consulta devuelva los elementos que desea.
Las operaciones de consulta solo admiten una evaluación de operador igual de la clave principal, pero condicional (=, <, <=,>,> =, entre, comenzar) en la clave de ordenación.
Las operaciones de escaneo son generalmente más lentas y costosas ya que la operación tiene que iterar a través de cada elemento de su tabla para obtener los elementos que está solicitando.
Ejemplo:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
En este ejemplo, puede utilizar una operación de consulta para obtener:
- Un CustomerId con un filtro condicional en AccountType
Debería usarse una operación de escaneo para regresar:
- Todos los clientes con un tipo de cuenta específico
- Elementos basados en filtros condicionales por país, es decir, todos los clientes de EE. UU.
- Elementos basados en filtros condicionales de LastPurchase, es decir, todos los clientes que realizaron una compra en el último mes
Para evitar operaciones de escaneo en operaciones de uso frecuente, se crea un índice secundario local (LSI) o un índice secundario global (GSI).
Ejemplo:
Table: CustomerId, AccountType, Country, LastPurchase
Primary Key: CustomerId + AccountType
GSI: AccountType + CustomerId
LSI: CustomerId + LastPurchase
En este ejemplo, una operación de consulta puede permitirle obtener:
- Un CustomerId con un filtro condicional en AccountType
- [GSI] Un filtro condicional en CustomerIds para un AccountType específico
- [LSI] Un CustomerId con un filtro condicional en LastPurchase