2012-02-01 6 views
9

Je souhaite utiliser la DB Dynamo d'Amazone avec des rails. Mais je n'ai pas trouvé de moyen d'implémenter la pagination.Comment implémenter la pagination lors de l'utilisation de la DB d'amazon Dynamo dans les rails

Je vais utiliser AWS::Record::HashModel comme ORM.

Cette ORM supporte des limites comme celui-ci:

People.limit(10).each {|person| ... } 

Mais je ne pouvais pas compris comment mettre en œuvre suivant la requête MySql Dynamo DB.

SELECT * 
    FROM `People` 
LIMIT 1 , 30 

Répondre

23

Vous émettez des requêtes en utilisant LIMIT. Si le sous-ensemble renvoyé ne contient pas la table complète, une valeur "LastEvaluatedKey" est renvoyée. Vous utilisez cette valeur comme ExclusiveStartKey dans la requête suivante. Et ainsi de suite ...

Depuis le DynamoDB Developer Guide.

+2

cette réponse ne prend pas en compte le fait que DynamoDB simplement fournir dans une direction pagination avec 'mentionné LastEvaluatedKey' et' ExclusiveStartKey' (aller de l'avant). La pagination standard avec au moins les options 'previous' et' next' n'est pas possible avec DynamoDB – Srle

+0

@Srle, Vous vous êtes procuré la méthode NEXT en utilisant LastEvaluatedKey et ExclusiveStartKey. Vous pouvez inverser l'ordre de la requête et obtenir l'opération PRECEDENTE. C'est disponible dans DynamoDB hors de la boîte. –

+0

@ nickolay.laptev pouvez-vous fournir un exemple, l'essentiel ou quelque chose avec le soutien des deux directions hors de la boîte? – Srle

1

Vous pouvez indiquer la taille de la page dans votre requête pour définir la taille de l'ensemble de résultats. La réponse de DynamoDB contient 'LastEvaluatedKey' qui indiquera la dernière clé selon la taille de la page. Si la réponse ne contient pas 'LastEvaluatedKey', cela signifie qu'il n'y a plus de résultats à récupérer. Utilisez 'LastEvaluatedKey' comme 'ExclusiveStartKey' lors de la récupération suivante.

J'espère que cela aide.

DynamoDB Pagination

Questions connexes