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」テーブル
Studentid Date Math Reading Science Social
1 “2012-09-10” 90 80 90 85
2 “2012-09-10” 60 65 75 60
1 “2012-12-10” 65 90 85 80
2 “2012-12-10” 80 50 65 55
1 “2013-03-10” 55 80 90 75
1 “2013-06-10” 70 85 60 80

 

2. Query

Query」ではハッシュキーとレンジキーを使って「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_WITH

BEGINS_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」