2017/01/11

第1回 サーバレスアーキテクチャのお勉強 - DynamoDB

サガ スカーレット グレイス に手を出してしまいました…
序盤は大剣&斧のゴリ押し戦法で全滅しまくりでしたが、最近は小剣技の便利さに気付き、それなりに安定してきました。
そろそろ1周目が終わるかな?

それはさておき、昨年から引き続き サーバレスアーキテクチャ なWebアプリケーションの作成手法について勉強していきたいと思います。


DynamoDBについて

勉強会の開催情報は Amazon DynamoDB に格納していきます。

DynamoDBはNoSQLデータベースなので、Oracleなどのリレーショナルデータベースとはテーブル設計の考え方が異なります。

公式の開発者ガイド (http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html) に目を通しましたが、とても一度で理解できる内容ではないので、詳細はおいおい把握していこうと思います。

ちなみに、以降にスクリーンショットを掲載していますが、2017年1月時点のものであり、将来的に変更になる可能性大です。

テーブルの作成とデータの登録

(1) AWSのコンソールにサインインし、DynamoDB のリンクをクリックします。
テーブルの作成 というボタンがあるので、クリックします。

(2) 以下のような画面が表示されます。

今回、勉強会のイベント情報を管理したいので、 Events というテーブル名とします。
キーは EventId で良いでしょう。
で、実際の画面には開催日順にイベントが並んでいるのが普通だと思いますので、 ソートキーに Date を指定しておきます。

型は 文字列, バイナリ, 数値 の3種類しかないようなので、どちらも文字列にしておきます。

(3) テーブルを作成すると一覧画面が表示されます。

最初のうちは 状態 が作成中のままですが、そのうち 有効 となります。
リストから作成したテーブルを選択すると、右側に詳細情報が表示されます。

(4) 詳細情報の 項目 タブでデータの登録ができます。

DynamoDB では、テーブル作成時に指定した パーティションキーソートキー 以外の項目は任意に追加できます。

とりあえず、テストデータとして「ほげほげ」というデータを登録してみました。


DynamoDB のパフォーマンスを活かすためには パーティションキーやソートキーを工夫したり、RDBとはちょっと異なるテーブル設計にする必要があるみたいです。

今回のWebアプリではタグを付けてイベントを分類するくらいは実装したいと思っていますが、タグ情報を格納するテーブルなどは後に作成しようと思います。
全文検索は Elasticsearch Service を使うのかな?

ここまで書いといてアレですが、今回のような要件であれば Amazon RDS を使用すべきだった気もしますが…まぁ、勉強なのでいいか。

と、いうことで、次回はいよいよ Lambda を触ってみたいと思います。