ventajas que español desventajas caracteristicas amazon-dynamodb

amazon dynamodb - que - ¿Cuál es la diferencia entre escaneo y consulta en dynamodb? ¿Cuándo usar escaneo/consulta?



mongodb español (3)

Una operación de consulta como se especifica en la documentación de DynamoDb:

Una operación de consulta solo busca valores de atributo de clave principal y admite un subconjunto de operadores de comparación en valores de atributo clave para refinar el proceso de búsqueda.

y la operación de escaneo:

Una operación de escaneo escanea toda la tabla. Puede especificar filtros para aplicar a los resultados para refinar los valores que se le devuelven, después de la exploración completa.

Cuál es mejor basado en consideraciones de rendimiento y costo.


Al crear una tabla de 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 clasificación.

Las operaciones de escaneo son generalmente más lentas y más caras, ya que la operación debe recorrer cada elemento de su tabla para obtener los elementos que solicita.

Ejemplo:

Table: CustomerId, AccountType, Country, LastPurchase Primary Key: CustomerId + AccountType

En este ejemplo, puede utilizar una operación de consulta para obtener:

  1. Un CustomerId con un filtro condicional en AccountType

Una operación de escaneo debería usarse para devolver:

  1. Todos los clientes con un tipo de cuenta específico
  2. Artículos basados ​​en filtros condicionales por país, es decir, todos los clientes de EE.
  3. Artículos basados ​​en filtros condicionales por LastPurchase, es decir, todos los clientes que hicieron una compra en el último mes

Para evitar operaciones de escaneo en operaciones de uso frecuente, cree 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:

  1. Un CustomerId con un filtro condicional en AccountType
  2. [GSI] Un filtro condicional en CustomerIds para un tipo de cuenta específico
  3. [LSI] Un CustomerId con un filtro condicional en LastPurchase

En términos de rendimiento, creo que es una buena práctica diseñar su tabla para que las aplicaciones utilicen Query lugar de Scan . Debido a que una operación de escaneo siempre escanea la tabla completa antes de filtrar los valores deseados, lo que significa que se necesita más tiempo y espacio para procesar las operaciones de datos, como leer, escribir y eliminar. Para más información, consultar el documento oficial.


Tiene una clave de partición / clave de partición de la tabla dynamodb como customer_country . Si utiliza la consulta, customer_country es el campo obligatorio para realizar la operación de consulta. Todos los filtros se pueden hacer solo artículos que pertenecen a customer_country .

Si realiza una exploración de tabla, el filtro se realizará en todas las claves de partición / clave principal. Primero se recuperaron todos los datos y se aplicó el filtro después de obtener de la tabla.

p.ej:

aquí customer_country es la clave de partición / clave principal y la id es la clave de clasificación

----------------------------------- customer_country | name | id ----------------------------------- VV | Tom | 1 VV | Jack | 2 VV | Mary | 4 BB | Nancy | 5 BB | Lom | 6 BB | XX | 7 CC | YY | 8 CC | ZZ | 9 ------------------------------------

  • Si realiza una operación de consulta, se aplica solo en customer_country valor de customer_country . El valor solo debe ser igual operador (=).

  • Así que solo se recuperan los elementos iguales a ese valor de clave de partición / clave principal.

  • Si realiza una operación de escaneo, recupera todos los elementos en esa tabla y filtra los datos después de tomar esos datos.

Nota: No realice una operación de escaneo que exceda su RCU.