dynamodb create aws amazon-web-services amazon-dynamodb

amazon web services - create - Escaneo de Dynamodb en orden ordenado



create a table in dynamodb (3)

Hola, tengo una tabla de dinámica. Quiero que el servicio me devuelva todos los elementos de esta tabla y el orden es ordenando un atributo.

¿Necesito crear un índice secundario global para esto? Si ese es el caso, ¿cuál debería ser la tecla hash, cuál es la tecla de rango? (Tenga en cuenta que la consulta en gsi debe especificar un comparador "EQ" en la clave hash de GSI).

Gracias un registro!

Erben


A partir de ahora, el análisis dynamoDB no puede devolver los resultados ordenados.

Debe usar una consulta con un nuevo índice secundario global (GSI) con un hashkey y un campo de rango. El truco es usar una clave hash que se le asigna el mismo valor para todos los datos en su tabla.

Recomiendo hacer un nuevo campo para todos los datos y llamarlo "Estado" y establecer el valor en "Aceptar", o algo similar.

A continuación, su consulta para obtener todos los resultados ordenados se vería así:

{ TableName: "YourTable", IndexName: "Status-YourRange-index", KeyConditions: { Status: { ComparisonOperator: "EQ", AttributeValueList: [ "OK" ] } }, ScanIndexForward: false }

Los documentos sobre cómo escribir consultas GSI se encuentran aquí: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying


El enfoque que seguí para resolver este problema es crear un Índice Secundario Global como el siguiente. No estoy seguro de si este es el mejor enfoque, pero publicarlo si es útil para alguien.

Hash Key | Range Key ------------------------------------ Date value of CreatedAt | CreatedAt

Limitación impuesta al usuario de la API HTTP para especificar el número de días para recuperar datos, de manera predeterminada a 24 horas.

De esta forma, siempre puedo especificar la HashKey como el día de la fecha actual y RangeKey puede usar los operadores> y <mientras recupera. De esta forma, los datos también se distribuyen en múltiples fragmentos.


Si conoce HashKey, cualquier consulta devolverá los elementos ordenados por la clave de rango:

"Los resultados de la consulta siempre se ordenan por la clave de rango. Si el tipo de datos de la clave de rango es Número, los resultados se devuelven en orden numérico, de lo contrario, los resultados se devuelven en orden de valores de código de caracteres ASCII. De forma predeterminada, el orden de clasificación es ascendente. Para invertir el orden, use el parámetro ScanIndexForward establecido en falso. " Operaciones de consulta y escaneo - Amazon DynamoDB: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

Ahora, si necesita devolver "todos los artículos", significa un escaneo. No creo que puedas ordenar los resultados de un escaneo.

Otra opción es usar un GSI. (Ejemplo aquí: https://.com/a/21786544/2959100 ). Aquí puede ver que GSI contiene solo HashKey. Los resultados, supongo, estarán en orden de esta clave (¡aún no he verificado esta parte en un programa!)