はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- あると良いExcel やスプレッドシートを触った経験(必須ではありません)
※ コマンドラインや SSH などの操作は一切ありません。すべてブラウザのコンソール上で完結します。
※ データベースを学んだことがなくても大丈夫です。必要な考え方は、このページの中でひとつずつ説明します。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
まずは用語だけ、やさしく確認
- テーブル
- データをまとめて入れておく「入れ物」。Excel の1つのシートのようなものです。
- 項目
- テーブルに入っているデータ1件分。Excel の1行に近いイメージです。
- 属性
- 1件のデータが持っている情報。Excel の1つのセル(列の値)に近いイメージです。
- パーティションキー
- 項目を探し出すための「鍵」となる値。同じ鍵を持つ項目は2つ存在できません。
DynamoDB は、たとえば「番号付きのロッカー」のようなものだとイメージしてください。ロッカーの番号(パーティションキー)を伝えれば、中を1つずつ調べなくても、一瞬で目的の荷物(項目)を取り出せます。今回はそのロッカーを1つ用意して、荷物の出し入れを体験します。
データベースと聞くと難しそうに感じるかもしれませんが、もともとは「情報を整理して、あとから探しやすくしまっておく場所」のことです。住所録やExcelの表も、広い意味ではデータベースの一種といえます。DynamoDB は、その中でも「キーを指定すれば一瞬で見つかる」ことに特化したサービスです。表計算ソフトのように列をあらかじめ全部決めておく必要はなく、項目ごとに持っている属性が違ってもかまいません。
今回はテーブルを1つ作り、項目を出し入れする一連の操作を体験します。データを追加し、取得し、更新し、削除するという基本の動きを、実際にコンソールを触りながら確かめましょう。
そもそも、データベースは何のためにあるの?
アプリやサービスが情報を記録し、あとから必要な情報だけを取り出すための保管庫です。ネットショップの注文履歴やゲームのスコアなど、私たちが普段使っているサービスの裏側でも、当たり前のように使われています。
リレーショナルデータベース(MySQLなど)と何が違うの?
リレーショナルデータベースは複数の表を結合して複雑な条件で検索するのに向いています。DynamoDBは「キーを指定して直接取りに行く」ことに特化していて、その分、桁違いに速く・大量のアクセスにも安定して応答できます。今回はその「キーで直接探す」という感覚を体験します。
項目ごとに持っている属性が違ってもいいの?
はい。テーブルを作るときに決めるのは「パーティションキー」(項目を一意に識別するための主キー)だけです。それ以外の属性は、項目ごとに自由に追加・省略できます。
DynamoDB テーブルを1つ作成し、コンソールの「項目を作成」「項目の表示/編集」から、項目の追加・取得・更新・削除をひととおり行う。
つくる構成
今回は構成図を描くようなネットワーク構築はありません。代わりに、テーブル作成時に入力する内容のイメージを示します。テーブル名と、項目を一意に識別するためのパーティションキーを決めるだけで、テーブルの準備は完了します。
入力する主な項目(例)
項目を実際に入れていくと、こんなイメージになります。パーティションキーの値(ロッカーの番号)はそれぞれ違いますが、それ以外の属性(商品名や価格など)は項目ごとに違っていても、一部が未入力でも問題ありません。
要件
以下の要件を満たし、DynamoDB テーブルへの項目の出し入れをひととおり体験してください。
| No | 要件 |
|---|---|
| 1 | リージョンは「東京(ap-northeast-1)」を使用する。 |
| 2 | DynamoDB テーブルを1つ作成する(テーブル名は自由、例:Products。パーティションキー名は自由・型は文字列、例:ProductId)。 |
| 3 | コンソールの「項目を作成」から、パーティションキーの値と、自由に決めた属性(例:商品名、価格)を持つ項目を2〜3件追加する。 |
| 4 | 追加した項目の1件を選んで属性を更新し、別の1件を削除する。 |
構築の進め方
「テーブルを作る → 項目を入れる → 取得・更新する → 削除する」という順番で、データの出し入れを一通り経験します。
-
マネジメントコンソールにサインインし、リージョンを東京に合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
DynamoDB コンソールでテーブルを作成する
DynamoDB コンソールを開き、「テーブルを作成」から、テーブル名とパーティションキーを決めます(例:テーブル名
Products、パーティションキーProductId(文字列))。「型」は気にしすぎなくて良いパーティションキーの「型」は、その値をどう扱うかの種類です。今回のように「P001」のような文字や数字が混ざった値であれば、迷ったら文字列(String)を選んでおけば大丈夫です。
設定はデフォルトのままでよいテーブルクラスや読み書きの容量モードなど、その他の設定は今回はデフォルトのままで構いません。まずはテーブルが作れることを確認しましょう。
-
1件目の項目を作成する
作成したテーブルの「項目を探索」から「項目を作成」を開きます。パーティションキーの値と、自由な属性(例:商品名、価格)を入れて1件目の項目を作成します。
-
2〜3件目の項目を追加する
同様の手順で2〜3件追加します。パーティションキーの値が、それぞれ違う値になっていることを確認しましょう。
属性は項目ごとに違っていい1件目には「価格」を入れたが2件目には入れない、といった違いがあっても問題ありません。DynamoDB では項目ごとに持つ属性が異なってもかまいません。
-
項目を1件選んで更新する
「項目を探索」の一覧から項目を1件選んで開き、属性の値を変更して保存します。一覧に戻り、値が変わっていることを確認しましょう。
-
別の項目を1件削除する
手順5とは別の項目を1件選び、削除します。一覧からその項目が消えることを確認しましょう。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。
「3件追加したつもりが、一覧には2件しかない」
項目を作成するたびに、パーティションキーの値を毎回違うものにしていたか見直してみましょう。パーティションキーの値が同じだと、項目が一意に定まらず、新しい項目が古い項目を置き換えてしまう、という挙動に関係しています。
「追加したはずの項目が一覧に表示されない」
一覧の更新(リロード)をしていない可能性や、検索・フィルタの条件が残ったままになっている可能性があります。画面のどこにフィルタの入力欄があるか、一度見直してみましょう。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。DynamoDB コンソールを開いて、次を順に確かめましょう。
- テーブルの一覧に、作成したテーブルが表示されている。
- 「項目を探索」を開くと、追加した件数(2〜3件)の項目が表示されている。
- 更新した項目を開くと、変更した属性の値が新しい値になっている。
- 削除した項目が、一覧から消えている。
- 残っている項目それぞれのパーティションキーの値が、すべて異なっている。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- パーティションキーの値は、何を基準に決めるとよさそうでしょうか。
ヒント
パーティションキーは項目を一意に識別するための値です。複数の項目で同じ値になってしまうと、項目が置き換わってしまいます。「一意性が保てる値かどうか」という観点から考えてみましょう。 - 項目ごとに持っている属性が違っていても問題が起きにくいのは、なぜでしょうか。
ヒント
リレーショナルデータベースでは、テーブルを作る前に列(スキーマ)をすべて決めておく必要があります。DynamoDB は、パーティションキー以外の属性をあらかじめ固定しない、という設計の特徴を持っています。この違いから考えてみましょう。 - 大量の項目(例えば数百万件)から特定の1件を探すとき、パーティションキーを指定して探す方法と、全件を順番に確認する方法では、何が違ってきそうでしょうか。
ヒント
全件を順番に確認する方法は、項目数が増えるほど時間がかかります。パーティションキーを指定する方法は、項目数が増えても応答にかかる時間がほとんど変わらない、という特徴があります。この違いが何をもたらすか考えてみましょう。
後片づけ
このハンズオンで作成したテーブルを削除し、リソースを整理しましょう。
- 作成したテーブルを削除する:DynamoDB コンソールの「テーブル」一覧から、このハンズオンで作成したテーブル(例:
Products)を選び、削除する。
削除するのは、このハンズオンで自分が作ったテーブルだけ
テーブルの一覧には、すでに別の用途で使っている他のテーブルが並んでいるかもしれません。間違えて削除しないよう、このハンズオンのために作成したテーブルだけを選んで削除してください。
コストに関する注意: DynamoDB はオンデマンドモードであれば使った分だけの課金で、今回程度の少量の読み書きは無料利用枠の範囲内に収まることが多いです。ただし、テーブルを削除せず放置すると、保存容量に応じた料金がわずかに発生し続ける点に注意してください。後片づけの手順に沿って、不要になったテーブルは削除しましょう。