2012-02-01 6 views
9

amazon Dynamo DBをレールで使用したいですが、私はページングを実装する方法を見つけませんでした。amazon Dynamo DBをレールに使用する場合のページ分割の実装方法

ORMとしてAWS::Record::HashModelを使用します。

このORMは、このような制限をサポートしています。

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

をしかし、私はダイナモDBに次のMySQLクエリを実装する方法を考え出したことができませんでした。

SELECT * 
    FROM `People` 
LIMIT 1 , 30 

答えて

23

LIMITを使用してクエリを発行します。返されたサブセットにフルテーブルが含まれていない場合は、 "LastEvaluatedKey"値が返されます。次のクエリでは、この値をExclusiveStartKeyとして使用します。それで...

DynamoDB Developer Guideより。

+2

この答えは、DynamoDBのは、今述べた '' LastEvaluatedKey'とExclusiveStartKey'(前進)と一方向にページネーションを提供考慮していません。少なくとも、「previous」および「next」オプションを使用した標準ページネーションは、DynamoDBでそのまま使用できません。 – Srle

+0

@Srle、LastEvaluatedKeyおよびExclusiveStartKeyを使用してNEXT操作を行う方法を提供しました。クエリの順序を逆にしてPREVIOUS操作を取得することができます。これは、そのままの状態でDynamoDBで利用できます。 –

+0

@ nickolay.laptev例、要点、または両方の方向をサポートするものを提供することができますか? – Srle

1

クエリで「ページサイズ」を指定すると、結果セットのサイズを設定できます。 DynamoDBの応答には、ページサイズごとに最後のキーを示す 'LastEvaluatedKey'が含まれています。レスポンスに 'LastEvaluatedKey'が含まれていない場合は、フェッチする結果が残っていないことを意味します。 次回のフェッチ時に 'LastEvaluatedKey'を 'ExclusiveStartKey'として使用します。

こちらがお役に立てば幸いです。

DynamoDB Pagination

関連する問題