Dynamodb de balayage dans l'ordre de tri
Salut j'ai une table dynamodb. Je veux que le service à me rendre tous les éléments de ce tableau et de la commande en cliquant sur l'un de ces attributs.
Dois-je créer un index secondaire global pour cela? Si c'est le cas, quelle devrait être la clé de hachage, quelle est la portée de la clé?
(Notez que la requête sur gsi devez spécifier un "EQ" de référence sur la clé de hachage de GSI.)
Grâce à un journal!
Erben
- Je suis confronté au même problème. Avez-vous résolu le problème?
Vous devez vous connecter pour publier un commentaire.
Si vous connaissez la HashKey, toute requête doit retourner les articles classés par Gamme de clés:
"Les résultats de la requête sont toujours triés par la touche range. Si le type de données de la gamme de clé est le Nombre, les résultats sont retournés dans l'ordre numérique; sinon, les résultats sont retournés dans l'ordre des caractères ASCII code de valeurs. Par défaut, l'ordre de tri est croissant. Pour inverser l'ordre d'utiliser la ScanIndexForward paramètre est défini sur false."
De requête et d'Analyse des Opérations - Amazon DynamoDB : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html
Maintenant, si vous avez besoin de revenir "tous les éléments", alors cela signifie un scan. Je ne pense pas que vous pouvez commander les résultats d'une analyse.
Une autre option est d'utiliser un GSI. (Exemple ici: https://stackoverflow.com/a/21786544/2959100). Vous voyez ici que la GSI ne contient que des HashKey. Les résultats, je suppose sera dans l'ordre de tri de cette clé (je n'ai pas vérifier cette partie dans un programme encore!)
Démarche que j'ai suivie pour résoudre ce problème est de créer un Index Secondaire Global comme ci-dessous. Vous ne savez pas si c'est la meilleure approche, mais de les poster si c'est utile à quelqu'un.
Restriction imposée sur l'API HTTP de l'utilisateur pour spécifier le nombre de jours à récupérer des données, par défaut est de 24 heures.
De cette façon, je peux toujours préciser le HashKey que le Courant de la date et du jour de l'RangeKey pouvez utiliser > et < les opérateurs lors de la récupération. De cette façon, les données sont également répartis à travers de multiples serveurs.
Dès à présent le dynamoDB scan ne peut pas vous renvoyer triés résultats.
Vous devez utiliser un requête avec une mondialisation de l'index secondaire (GSI) avec un hashkey et la gamme de champ. L'astuce est d'utiliser un hashkey qui est attribué la même valeur pour toutes les données de votre tableau.
Je vous recommande de créer un nouveau champ pour l'ensemble des données et de l'appeler "État" et de définir la valeur "OK", ou quelque chose de similaire.
Alors votre requête pour obtenir tous les résultats triés devrait ressembler à ceci:
Les docs pour savoir comment écrire GSI requêtes sont disponibles ici: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying