こんにちは。KOUKIです。
とある企業でWeb系エンジニアとして働いています。
最近AWSを触ることが多くなってきました(嬉しいことに!)。
AWSサービスの一つであるDynamoDBにも触る機会があったため、操作方法について記事にしました。
<目次>
DynamoDBローカル
DynamoDBは、「高速で予測可能なパフォーマンスとシームレスなスケーラビリティを実現する、完全マネージド型の NoSQL データベースサービスです。」と公式に書いてありますが、初見だとなんのこっちゃ?と思います。
私が実際に触った感想だとRedisのようにKey-Valueの形でデータを保存できるデータベースでした。キャッシュサーバーとして使われる用途もありそうですね。
DynamoDBはAWSのサービスですが、開発・テスト用途にDynamoDBローカルが提供されていて、Docker環境上で動かせます。
Dockerをインストールする必要がありますが、以下のコマンドでDynamoDBローカルを動かすことができます。
1 2 |
# DynamoDBローカルコンテナを立ち上げる docker run --rm --name dynamodb -p 8000:8000 amazon/dynamodb-local |
DynamoDBローカルにアクセス
DynamoDBローカルコンテナを立ち上げた後、「http://localhost:8000/shell/」にアクセスしてください。

この画面からDynamoDBを操作できます。
DynamoDB操作
時間ができたらGo言語からDynamoDBにアクセスするプログラムを作りたいと思いますが、ひとまず画面上から操作してみましょう。
テーブルを表示する
他のDBと同様にDynamoDBにもテーブルの概念があります。まずは、テーブル一覧を表示させてみましょう。
コマンドは、JavaScriptで記述でき、「listTables」コマンドを使います。
1 2 3 4 5 |
// Table表示 dynamodb.listTables({}, function(err, data) { if (err) ppJson(err) else ppJson(data) }); |
このコードを先ほどの画面に貼り付けて実行します。※➡️で実行できます。

現状は、テーブルがないので空になります。
テーブルの作成
次は、テーブルを作成しましょう。「createTable」コマンドを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// Table作成 var params = { TableName: 'Booker', // table名 AttributeDefinitions: [ { AttributeName: 'ID', // カラム名 AttributeType: 'N', // Number型 }, { AttributeName: 'Name', // カラム名 AttributeType: 'S', // String型 }, // ... more attributes ... ], KeySchema: [ // スキーマーを設定 { AttributeName: 'ID', KeyType: 'HASH' }, { AttributeName: 'Name', KeyType: 'String' } ], ProvisionedThroughput: { ReadCapacityUnits: 1, WriteCapacityUnits: 1, }, }; dynamodb.createTable(params, function(err, data) { if (err) ppJson(err) else ppJson(data) }); |

もう一度、テーブル一覧を表示してみます。

「Booker」が作成されたことがわかります。
テーブル定義の表示
テーブル定義を表示してみましょう。「describeTable」コマンドを使います。
1 2 3 4 5 6 7 8 |
// Table定義表示 var params = { TableName: 'Booker', }; dynamodb.describeTable(params, function(err, data) { if (err) ppJson(err) else ppJson(data) }); |

データの格納
次は、データを格納しましょう。「put」コマンドを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// データ格納 var params = { TableName: 'Booker', Item: { ID: 1, Name:'Harry Potter', } }; docClient.put(params, function(err, data) { if (err) ppJson(err) else ppJson(data) }); |

データの取得
データを取得してみましょう。「scan」コマンドを使います。
1 2 3 4 5 6 7 8 |
// データ取得 var params = { TableName: 'Booker', }; dynamodb.scan(params, function(err, data) { if (err) ppJson(err) else ppJson(data) }); |

テーブルの削除
テーブルを削除しましょう。「deleteTable」コマンドを使います。
1 2 3 4 5 6 7 8 |
// テーブルの削除 var params = { TableName: 'Booker', }; dynamodb.deleteTable(params, function(err, data) { if (err) ppJson(err) else ppJson(data) }); |

チートシート
実は、DynamoDBローカルの画面上からチートシートが確認できます。「</>」ボタンを押下してください。



ここを確認すれば、簡単ですね^^
おわりに
DynamoDBはRedisよりも扱いが難しい気がします。
多分スキーマー設定のところと、エラーメッセージが出た時何が原因なのかよくわからない部分が難しさを加速させていると思います。
しかし、DynamoDBはとても安価で、高速処理が得意な技術なので、マスターしたいですね^^
それでは、また!
コメントを残す
コメントを投稿するにはログインしてください。