AWS Amazon DynamoDB -入門 テーブル・項目の作成-

前回AWS RDSでRDBMSをクラウドに立てました。

今回はDBつながりでDynamoDBを触ります。

 

NoSQLとRDBMSの特徴

NoSQLとRDBMSの違いについては、以下の記事が参考になりました。

 

  • RDBMSの特徴
    • 複雑なクエリが実行できる
    • スケールが難しい
  • NoSQLの特徴
    • スケールが容易
    • レスポンスが早い
    • 自由な形式

 

NoSQLの種類

NoSQLにも色々種類があって、DynamoDBはkey-valueストア型とドキュメント型の2つに対応しています。

 

DynamoDBは何ができるか

公式の動画が参考になるのでご覧ください。

ただし、チュートリアル部分は古くてあまり参考になりません。概要確認だと思ってください。

 

料金

DynamoDBは無料枠が設けられています。

AWSに登録するともらえる12ヶ月の無料枠とは別に、全てのAWSユーザに与えられます。

具体的には以下の範囲が無料です。ちょっと遊ぶ分には十分でしょう。

  • 1 か月あたり最大 2 億リクエスト
  • 25 GB のインデックス化データストレージ
  • DynamoDB ストリームからの 1 か月あたり 250 万件の読み込みリクエスト
  • DynamoDB Global Tables を 2 つまでの AWS リージョンにデプロイする機能

 

より詳しく計算したい場合は公式や以下のサイトを参考にしてみてください。

 

DynamoDBテーブルの作成

テーブル、項目、属性についての説明は公式をご確認ください。

 

RDBMSで置き換えてざっくり、項目はレコード、属性はカラムだと考えていれば良いと思います。

 

AWSマネジメントコンソールからDynamoDBを検索し、「テーブルの作成」を行います。

 

「テーブル名」と「プライマリーキー」を入力します。

今回は右上のチュートリアルに従って進めます。

音楽アプリケーションのデータをDynamoDBに保存するという想定のようです。

 

テーブル名の入力

これはなんでもいいですね。Musicと名付けます。

 

プライマリーキーの入力

RDBMSにおいてプライマリーキーはレコードを一意に識別するものでした。

DynamoDBにおいては「パーティションキー」とオプションの「ソートキー」を用いてアイテム(RDBでいうレコード)を識別します。

パーティションキーは値が広範囲で十分に分散するようなものを選択します。

Artist名ならば十分に分散するでしょう。

(例えば、日本の音楽データを入力すると考えた場合、パーティションキーに活動拠点を使うのはよくない例です。東京に偏ってしまうので。)

さらに、音楽データは同一のArtistに複数の歌が登録されます。従ってパーティションキーだけでは識別できないのでSongTitleをソートキーに追加します。

これにより、全てのデータがArtistとSongTitleで識別できるようになりました。

 

プライマリキーについて詳しくはこちらへ。

 

テーブル設定

これはデフォルトで作成します。

 

テーブル作成中

するとしばらくテーブル作成中と表示されます。10秒ほどで完了します。

 

これでテーブルは作成できました。

 

項目の追加

「項目」のタブを開きます。RDBMSのレコードに相当する概念のことです。

項目についての詳しい説明は公式へ。

 

英語ではアイテムと表現されており、NoSQL話ではアイテムという単語を使うことの方が多いと思いますが、ここでは項目で統一します。

では「項目の作成」をクリックして項目を追加します。

 

Artist: Akeboshi、SongTitle: windで作成しました。

項目が一つ追加されたことがわかります。

 

次は他のキーを付け加えてみましょう。

再び項目の作成を開き、左の十字ボタンをクリックするとAppend、Insert、Removeが出てきます。

Appendはクリックしたキーの下に、Insertは上に新しいキーを追加します。

Removeはキーを削除します。

 

ではReleaseYearを追加しましょう。

(DATE型がなかったので数値型にしました。)

 

RDBMSでは後からカラムを増やすのが気持ち悪かったりしますが、NoSQLではあえて正規化を求めないことで自由な拡張性を有している感じがわかりました。

 

おまけ

Progressはkōkuaの曲だよって意見があったらごめんなさい。

次回はjsonファイルからのバルクインサートを試します。

 

参考

コメントを残す