Amazon DynamoDB
Amazon DynamoDB は、AWSが提供するフルマネージドのNoSQLデータベースサービスです。サーバーレスでスケーラブルな設計により、どんな規模のトラフィックでも一桁ミリ秒の低レイテンシーを実現します。
概要
DynamoDB は「NoSQL」と呼ばれる種類のデータベースで、RDS・Auroraのようなリレーショナルデータベース(RDB)とは異なるアプローチでデータを管理します。
NoSQLとは
NoSQLは「Not only SQL」の略で、表形式(行と列)ではなくキーとバリューの組み合わせなど柔軟な形式でデータを格納するデータベースです。
- 固定スキーマが不要: 各レコード(項目)ごとに異なるカラム構成が持てる
- 水平スケーリングが得意: データ量やアクセス数の増大に対してシームレスに対応できる
- JOINやトランザクションが苦手: 複雑なリレーショナル処理は向かない場面がある
CP試験で押さえるポイント
- DynamoDB はサーバーレス。サーバーやDBクラスターのプロビジョニングが不要で、管理コストが低い
- どんな規模でも一桁ミリ秒(シングルデジットミリ秒)の低レイテンシーを保証
- スキーマレス(キーバリュー型)のため、RDSより柔軟なデータ構造が必要な場面に適する
- RDSとの使い分け:構造化されたSQLデータはRDS、スキーマ柔軟・大規模NoSQLはDynamoDB
- DAX(DynamoDB Accelerator)はDynamoDBのインメモリキャッシュ。レイテンシーをマイクロ秒レベルまで短縮
- グローバルテーブルは複数リージョンにデータを自動レプリケーションし、グローバルな低レイテンシーアクセスを実現
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公式の以下のリソースを参照してください(いずれも外部サイトが開きます)。