DynamoDB 入門編 2

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。
こんにちは。開発グループの坂本です。 今回も前回の「DynamoDB 入門編」に続き、「DynamoDB」のクエリをみていきたいと思います。
前回のPut、Get、Scanに続いて今回確認するクエリは、「Query」です。 目次
  1. 今回利用するテーブルの確認
  2. Query
  3. 比較演算子
  4. BETWEEN
  5. BEGINS_WITH
  6. ソート
  7. まとめ
  1. 今回利用するテーブルの確認 今回は「成績表Report_Card)」テーブルを作成して操作してみたいと思います。
学生ID「Studentid」とテスト日「Date」を「Primary Key」にし、数学、国語、理科、社会のテストの点数を「Attribute」に入れました。
「Report_Card」テーブル
StudentidDateMathReadingScienceSocial
1"2012-09-10"90809085
2"2012-09-10"60657560
1"2012-12-10"65908580
2"2012-12-10"80506555
1"2013-03-10"55809075
1"2013-06-10"70856080
  2. QueryQuery」ではハッシュキーとレンジキーを使って「Item」を絞り込むことができます。 ハッシュキーはイコール指定で、レンジキーの方で比較演算子やBETWEENを使って「Item」を絞り込むイメージです。
それでは、どういった絞り込みができるか実際に試してみたいと思います。
3. 比較演算子 まずは、比較演算子を使って絞り込んでみます。比較演算子として以下の表のものが使えます。
EQ等しい (Equal.)
LE以下 (Less than or equal.)
LTより小さい (Less than.)
GE以上 (Greater than or equal.)
GTより大きい (Greater than.)
以下のようなコードを実行して結果を確認していきます。 /home/ec2-user/dynamo_query_le.php ComparisonOperator」に利用する比較演算子を指定します。ハッシュキーは常に「EQ(等しい)」指定で、レンジキーの「ComparisonOperator」の指定を変更することで欲しい結果を絞ります。
今回は「LE(以下)」を指定しました。
実行します。
実行結果

学生IDが1番の人の2013年3月10日以前の数学のテストの結果を取得できました。
4. BETWEEN 続いて、「BETWEEN」を使ってテスト日が2012年12月10日から2013年6月10日の「Item」を絞り込んでみます。 /home/ec2-user/dynamo_query_between.php BETWEEN」の場合は「AttributeValueList」に配列を一つ足して、どこからどこまでの間なのかを指定します。 実行します。
実行結果


5. BEGINS_WITHBEGINS_WITH」を使ってテスト日が2013年の「Item」だけ絞り込みます。 /home/ec2-user/dynamo_query_begins_with.php 実行します。
実行結果


6. ソート デフォルトは昇順ですが、「ScanIndexForward」を足して指定を「false」にすると、降順に並べ替えることができます。 /home/ec2-user/dynamo_query_begins_with2.php 実行します。
実行結果

一つ前に確認した「BEGINS_WITH」の結果がテスト日の降順に並び替わりました。
7. まとめ 今回は、「Query」を使った「Item」の絞り込み方法を確認してみました。
SQLのような絞り込みではないですが、今回のようにレンジキーに日付や時刻を入れて時間で絞りこむような場合は、いろいろと使える用途があるのではないでしょうか。

次回は、「BatchGetItem」というクエリを試してみたいと思います。  

AWS運用自動化サービス「Cloud Automator」