Amazon DynamoDB

Amazon DynamoDB は、AWSが提供するフルマネージドのNoSQLデータベースサービスです。サーバーレスでスケーラブルな設計により、どんな規模のトラフィックでも一桁ミリ秒の低レイテンシーを実現します。

概要

DynamoDB は「NoSQL」と呼ばれる種類のデータベースで、RDS・Auroraのようなリレーショナルデータベース(RDB)とは異なるアプローチでデータを管理します。

NoSQLとは

NoSQLは「Not only SQL」の略で、表形式(行と列)ではなくキーとバリューの組み合わせなど柔軟な形式でデータを格納するデータベースです。

CP試験で押さえるポイント

DynamoDB の主な概念

DynamoDB のデータ構造はRDBの「テーブル・行・列」と似た概念を持ちますが、呼び方が異なります。

DynamoDB の用語 RDB に例えると 説明
テーブル(Table) テーブル データを格納するコンテナ。ただし固定スキーマなし
項目(Item) 行(レコード) テーブルに格納された個々のデータ。各項目が異なる属性を持てる
属性(Attribute) 列(カラム) 項目内のデータフィールド。文字列・数値・リストなど様々な型
プライマリキー 主キー 各項目を一意に識別するキー(パーティションキー+ソートキーの組み合わせも可)

サーバーレス・スケーラビリティ

DynamoDB はフルマネージドかつサーバーレスのサービスです。ユーザーはDBのインスタンスやクラスターを管理する必要がなく、1日に数件のリクエストから秒間数百万件のリクエストまで、自動でスケールします。キャパシティの設定は「オンデマンドモード(使った分だけ課金)」か「プロビジョンドモード(あらかじめキャパシティを指定)」から選べます。

DAX(DynamoDB Accelerator)とグローバルテーブル

DAX(DynamoDB Accelerator)

DAXはDynamoDB専用のインメモリキャッシュサービスです。通常のDynamoDBがシングルデジットミリ秒のレイテンシーを実現するのに対し、DAXを使うとマイクロ秒(マイクロ秒=ミリ秒の1/1000)レベルの超低レイテンシーが実現できます。ゲームやリアルタイムのリーダーボードなど、極めて高速な応答が求められるケースに有効です。

グローバルテーブル

グローバルテーブルは、複数のAWSリージョンにDynamoDBテーブルを自動的にレプリケーションする機能です。東京・バージニア・フランクフルトなど複数リージョンのユーザーが、それぞれ最寄りのリージョンのテーブルにアクセスできるため、グローバルユーザー向けアプリケーションで低レイテンシーアクセスを実現できます。

関連サービスとの違い・使い分け

DynamoDB(NoSQL)と RDS/Aurora(SQL)はどちらもデータベースですが、適したユースケースが異なります。

比較項目 Amazon DynamoDB Amazon RDS / Aurora
データモデル NoSQL(キーバリュー型) リレーショナル(SQL)
スキーマ スキーマレス(柔軟) 固定スキーマが必要
スケーラビリティ 自動で無制限にスケール インスタンスサイズ変更が必要
レイテンシー 一桁ミリ秒(DAX利用でマイクロ秒) ミリ秒〜秒(クエリ複雑度による)
JOIN・複雑クエリ 不得意 得意
主なユースケース ゲーム・IoT・モバイルアプリ・セッション管理 ECサイト・業務システム・金融システム
管理 サーバーレス(完全マネージド) マネージドだがインスタンス管理あり

確認問題

付録:公式ドキュメント・Black Belt 動画

さらに深く学びたい方は、AWS公式の以下のリソースを参照してください(いずれも外部サイトが開きます)。

公式ドキュメント

AWS Black Belt Online Seminar(動画・解説資料)