【AWS】DynamoDBとは何?どんなときに使う?
AWS DynamoDB(ダイナモ・ディービー)は、Amazonが提供するフルマネージド型のNoSQLデータベースサービスです
一言でいうと、「サーバーの管理を気にせず、高速でスケーラブルなデータストアを使える仕組み」です
1. DynamoDBとは?
従来のリレーショナルデータベース(RDB)では、テーブルを正規化してデータを整然と管理し、SQLを使って複雑なクエリを実行できます
一方で、スケーラビリティ(処理能力の拡張)や高可用性を実現するには設定が複雑になります
DynamoDBはこの課題を解決するために設計されており、以下の特徴を持ちます
- 完全マネージド:サーバーの運用・スケーリング・バックアップなどをAWSが自動で実施
- 高スループット:1秒あたり数千件〜数百万件のリクエストにも対応可能
- 自動スケーリング:トラフィックに応じて読み書き容量を自動で調整
- 高可用性:データは自動的に複数のAZ(アベイラビリティゾーン)に複製保存
つまり、「アプリケーション開発に集中したい人」にぴったりのデータベースです
2. DynamoDBの基本構造
DynamoDBは「テーブル」を単位としてデータを管理します
しかし、RDBのようにカラム構造を厳密に決める必要はありません
各レコード(アイテム)は柔軟に異なる属性(カラム)を持つことができます
| 構成要素 | 説明 |
|---|---|
| テーブル(Table) | データの集合。例:Users、Ordersなど |
| アイテム(Item) | テーブル内の1件のデータ(RDBの行に相当) |
| 属性(Attribute) | アイテムの1つ1つの要素(RDBのカラムに相当) |
| パーティションキー(Partition key) | データを一意に識別し、物理的な保存場所を決めるキー |
| ソートキー(Sort key) | 同じパーティション内での並び順を決めるためのキー(任意) |
例として、「ユーザー情報」を管理するテーブルを考えましょう
以下のようにシンプルな構造で始められます
- テーブル名:Users
- パーティションキー:userId
- 属性:name, email, createdAt など
3. RDBとの違いを意識する
DynamoDBを使ううえで最初に戸惑うのは「SQLが使えない」点かもしれません
代わりに、GetItem、PutItem、Query、Scan といったAPI操作でデータを扱います
また、結合(JOIN)や複雑な検索は不得意です
その代わりに、アクセスパターンを事前に設計することで、読み書きが圧倒的に速くなります
DynamoDBは「どんなデータをどう検索するか」を最初に決めてから設計するのがコツです
この考え方を「アクセスパターン駆動設計(Access Pattern Driven Design)」と呼びます
4. どんな場面で使われる?
DynamoDBは次のようなケースに強みを発揮します
- ゲームやECサイトのリアルタイムユーザーデータ管理
- IoTデバイスのログ・センサーデータの蓄積
- チャットアプリやSNSのメッセージ履歴
- Webサービスのセッション情報やキャッシュデータ
また、AWS Lambdaとの相性も良く、サーバーレス構成で使われることが多いです
ぜひ、ご参考ください!
是非フォローしてください
最新の情報をお伝えします
