Amazon DynamoDB とは
フルマネージド型の NoSQL データベースサービス
データベースの分散とスケーリングを自動で管理してくれるAWSのサービス
また、書き込み読み込みにどれだけのリソースを割り当てるかを制御できパフォーマンスの管理を簡単に行うことができる。
なぜ DynamoDB を使うか
AWSの他のサービスと連携しやすいDBというのが一番の理由
また、サービスの規模が拡大してアクセスが増大してもプログラムの変更なしでスケール可能というのも大きい。
DynamoDB の開発
開発ではいちいちブラウザでアクセスしてどうこうは面倒なためcliツールを利用します。
aws-cli のインストールと設定
はとりあえず本題とは異なるためリンクでお茶を濁します。
(各自セットアップをよろしくお願いいたします。)
aws-cliでの操作
テーブル作成
#! /usr/bin/env bash
aws dynamodb create-table \
--table-name Music \
--attribute-definitions \
AttributeName=Artist,AttributeType=S \
AttributeName=SongTitle,AttributeType=S \
--key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
アイテム追加
#! /usr/bin/env bash
aws dynamodb put-item \
--table-name Music \
--item \
'{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Call Me Today"}, "AlbumTitle": {"S": "Somewhat Famous"}}' \
--return-consumed-capacity TOTAL
aws dynamodb put-item \
--table-name Music \
--item '{ \
"Artist": {"S": "Acme Band"}, \
"SongTitle": {"S": "Happy Day"}, \
"AlbumTitle": {"S": "Songs About Life"} }' \
--return-consumed-capacity TOTAL
Query実行 with jsonファイル
このコマンドを実行する前にjsonファイルの作成が必要になります。
aws dynamodb query --table-name Music --key-conditions file://key-conditions.json
以下のようにkey-conditions.jsonファイルを作成してください。
{
"Artist": {
"AttributeValueList": [
{
"S": "No One You Know"
}
],
"ComparisonOperator": "EQ"
},
"SongTitle": {
"AttributeValueList": [
{
"S": "Call Me Today"
}
],
"ComparisonOperator": "EQ"
}
}
ローカルのDynamoDBでの開発
ローカルでDynamoDBを構築しAWSへのアクセスなしで開発をしたいという状況があることと思います。
その場合はdockerを利用することでローカルの環境構築が可能です。
難しいことはありません。
以下のコマンドを実行してください。
docker run -d -p 8000:8000 amazon/dynamodb-local
このコマンドで起動したローカルのDynamoDBにアクセスするには以下のように--endpoint-urlパラメータにローカルDynamoDBのURLを指定します。
aws dynamodb list-tables --endpoint-url http://localhost:8000