田舎の技術者が奮闘中

php ruby node.js javascript などのスクリプト言語とサーバー(Chef、Vagrant)に関して書きます。

rubyとAWS SDKでDynamoDBを操作する。ページング編

前回簡単な、DynamoDBの操作方法を記事に書きました。
今回はページングを実装してみます。

DESIGN HUNTERではこのように実装しています。
f:id:pikonori:20130525205228p:plain

クリックすると以下のように展開されます。

f:id:pikonori:20130525205300p:plain

DynamoDBはリクエストの上限やリミットを明記すると、次のハッシュキーを返します。
その帰ってきたハッシュキーを元に再度DynamoDBにリクエストかければOKです。

早速プログラムです。

gem install aws-sdk
require 'aws-sdk'

AWS.config(
           :access_key_id => '***',
           :secret_access_key => '***',
           :dynamo_db_endpoint => 'dynamodb.ap-northeast-1.amazonaws.com'
           )

dynamo_db = AWS::DynamoDB.new
table = dynamo_db.tables["table"]
table.hash_key = [:id, :string]

# DynamoDBに30ほど登録されているとする。
# もし残りのデータが存在するするのであれば、次のハッシュキーを渡す。
hash_key_element = table.items.where(:create_at).begins_with(date).select(:limit => 10)

# 次から検索したい場合はhash_key_elementをexclusive_start_keyに渡す。
table.items.where(:create_at).begins_with(date).select(:limit => 10, :exclusive_start_key => hash_key_element)

あとはif文とかで制御するだけでいいと思います。
結構簡単に出来ますね。