LoginSignup
6
3

More than 1 year has passed since last update.

【AWS】DynamoDBをコンソール上から使ってみる

Last updated at Posted at 2021-12-05

Arch_Amazon-DynamoDB_64@5x.png

はじめに

どーも、のぶこふです。

re:Inventも終わり、年の瀬が一層近く感じますね。
まだまだアップデートは把握しきれてませんが、毎年こうして大規模アップデートや新サービスの発表などはワクワクします。

あ、この記事はGFAMアドベントカレンダー2021の5日目の記事です。

今回は、DBサービスの一つである「DynamoDB」に焦点を当てていきます。
ソースコードは触らずに、DynamoDBコンソールからの動作確認のみを行います。

今回のサービス一覧

Service名とか 概要
DynamoDB 12 マネージドなNoSQLDB

DynamoDB

まずは、簡単に概要を抑えておきます。

  • 完全マネージド型のNoSQLデータベースサービス
  • ハイスケーラブル、低レイテンシー

管理不要、高い信頼性

  • SPOFが存在しない
  • データは3箇所のAZに保存
  • ストレージは必要に応じて、自動的にパーティショニングされる

プロビジョンドスループット

  • デーブルごとにReadとWriteのスループットキャパシティを割り当てることができる。
  • 例えば・・・
    • 初期設定:Read:1,000、Write:100
    • 書き込みワークロードが上がった:Read:500、Write:1,000
  • この値は、DB運用中にオンラインで変更可能

ストレージ容量制限無し

  • 使った分だけの従量課金
    • ディスクやノードの増設作業は不要

整合性モデル

  • Write
    • 少なくとも2つのAZで書き込み完了確認がとれた時点
  • Read
    • デフォルト
      • 「結果整合性」のある読み込み
        • 最新の書き込み結果が、即時読み取り処理に反映されない可能性がある
    • Consistent Read Option
      • GetItem、Query、Scanでは「強力な整合性」のある読み込みオプションが指定可能
        • Readリクエストを受け取る前までのWriteが全て反映されたレスポンスを保証
        • Capacity Unitを2倍消費

Capacity Unit?

  • ユニットと呼ばれる単位
  • それぞれ25ユニットまで無料
  • Write
    • 最大1KBのデータを1秒に1回書き込み可能
  • Read
    • 最大4KBのデータを1秒に1回読み取り可能
      • 強い一貫性を持たないのであれば、1秒に2回読み取り可能

ユースケース

  • KVS
    • ユーザ情報の格納
  • 広告やゲーム等のユーザ行動履歴DB
    • ユーザIDごとに複数の行動履歴を監理
  • モバイルアプリのバックエンド
    • モバイルアプリから直接参照
  • その他
    • バッチ処理のロック監理
    • フラッシュマーケティング
    • ストレージのインデックス

DynamoDBの構成

  • HTTPベースのAPIが提供されている image.png

テーブル設計

image.png

テーブル操作(一部

名称 操作
GetItem Partation Keyを条件として指定し、1件のアイテムを取得
PutItem 1件のアイテムを書き込む
Update 1件のアイテムを更新
Delete 1件のアイテムを削除
Query Partation KeyとSort Keyの複合条件にマッチするアイテム群を取得※
BatchGet 複数のPRIMARY KEYを指定してマッチするアイテム群を取得
Scan テーブルを総なめ※

※最大1MBのデータを取得可能

使い方

テーブルの作成

  1. DynamoDBコンソールを開く
  2. リージョンを確認しておく
  3. テーブルの作成を選択する
    image.png

  4. 「テーブルの作成」を選択する

  5. 作成まで、しばし待つ(1分くらい)
    image.png

項目名 設定値
テーブル名 User
パーティションキー UserId:文字列
ソートキー 無し
設定 デフォルト設定
デフォルト設定 特になし
タグ Key:Name、Value:Test

アイテムの作成

※SDKを介して作成したり、追加したりのほうが汎用的だと思いますが、まずはマネコンから・・・

  1. 作成したテーブル詳細を開く
  2. アクション > Create Item を選択する
    image.png

  3. フォーム、またはJSONで情報を入力して、「項目の作成」を選択する

// JSONの例
{
 "UserId": "0001",
 "Name": "Nobkovskii"
}

アイテムの検索

  1. 「項目」から、対象のテーブルを選択する
  2. 検索条件を入力して、「実行する」を選択する

    1. 対象が存在する例 image.png
    2. 対象が存在しない例 image.png

テーブルの削除

  1. 対象のテーブルを選択して、「削除」を選択する
    image.png

  2. 「削除」と入力して、「テーブルの削除」を選択する
    image.png

DynamoDB Accelerator(DAX)

リアルタイム処理や一時的なアクセス集中への対応など、読み取りが多い場合に爆速になってくれるやつ。
逆に、書き込みが多い・読み取りが少ない場合は、効果は今ひとつ。

  • フルマネージド型高可用性インメモリキャッシュ3
    • DynamoDBに特化
      • DynamoDB APIと互換性があり、アプリケーションのロジックを変更する必要は無し。
    • ミリセカンド→マイクロセカンドへの、最大10倍のパフォーマンス向上を実現する!
    • キャッシュがあれば使う、なければオリジンから取得してキャッシュする
  • マネジメントコンソールやSDKから簡単に使える
  • VPC環境で動作

おわりに

今回は、DynamoDBの概要調査と、コンソール上から簡単に触ってみました。
本来はSDKを介して、アイテムのCRUD(追加・検索・更新・削除)をしていくのが筋だと思いますが、概要を掴むということで、コンソール上からの操作までとしました。
テーブルの作成や項目追加も、サクッとできて、良い感じでした。

今回の内容だけでは「DynamoDBの良さ」は、全然理解に至らないので、アプリなどに組み込ませて使ってみたいです。

今回はここまでです。
ありがとうございました。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3