ChatGPTによる引用(2025/01/18時点)
Amazon DynamoDBとは?¶
Amazon DynamoDB は、AWS(Amazon Web Services)が提供する フルマネージド型のNoSQLデータベースサービス です。スケーラビリティ、パフォーマンス、可用性に優れ、大規模なアプリケーションでも高速なデータ処理を実現します。
1. 特徴¶
✅ フルマネージド¶
DynamoDBはAWSが完全に管理するため、サーバーメンテナンス、スケーリング、レプリケーション などをユーザーが意識する必要がありません。
✅ 高可用性とスケーラビリティ¶
- 水平スケーリング により、大量のデータを処理可能。
- リージョンをまたいだレプリケーション(Global Tables) に対応。
✅ 高速なパフォーマンス¶
- キー・バリュー型(Key-Value) や ドキュメント指向(Document) のデータモデルに対応し、ミリ秒単位のレスポンス を実現。
- インデックス を活用することで、柔軟なクエリが可能。
✅ 柔軟なデータモデル¶
- スキーマレス で、テーブルごとに項目(アイテム)の構造を自由に定義可能。
- JSON形式 のデータを保存可能。
✅ 自動スケーリング¶
- オンデマンドキャパシティ(On-Demand Capacity) により、トラフィックの増減に応じて自動でスケール。
- プロビジョンドキャパシティ(Provisioned Capacity) では、事前に読み書き性能を指定可能。
2. データモデル¶
DynamoDBの基本的なデータ構造は テーブル(Table) で構成され、各テーブルは アイテム(Item) の集合です。
📌 基本的な用語¶
| 用語 | 説明 |
|---|---|
| テーブル(Table) | データの格納単位 |
| アイテム(Item) | テーブル内の個々のデータ(リレーショナルDBの「行」に相当) |
| 属性(Attribute) | アイテムの個々のデータフィールド(リレーショナルDBの「列」に相当) |
| パーティションキー(Partition Key) | プライマリキーの一部で、データの分散管理を決定 |
| ソートキー(Sort Key) | (オプション)プライマリキーに追加可能なキー |
📌 キー設計の例¶
① 単一のパーティションキー¶
1 2 3 4 5 | |
→ UserId を一意の識別子として使用。
② パーティションキー + ソートキー¶
1 2 3 4 5 | |
→ UserIdごとに複数の注文(OrderId)を管理できる。
3. クエリ & インデックス¶
DynamoDBは SQLのようなクエリ を使えませんが、キーを使った検索 や インデックス を活用することで柔軟なデータ取得が可能です。
✅ クエリ(Query)¶
1 2 3 | |
→ UserId = '12345' のデータを取得。
✅ スキャン(Scan)¶
1 2 3 | |
→ Age が 25 を超えるすべてのアイテムを取得。
✅ グローバルセカンダリインデックス(GSI)¶
1 2 3 4 5 6 | |
→ Age をキーとして検索できるようにする。
4. 料金体系¶
DynamoDBの料金体系は 使用量ベース で、主に以下の2つのプランがあります。
✅ オンデマンドキャパシティ¶
- リクエスト数に応じて自動スケール。
- 小規模アプリや変動の激しいワークロード向け。
✅ プロビジョンドキャパシティ¶
- 事前に読み書きキャパシティを設定。
- 予測可能な負荷に対してコストを抑えられる。
5. まとめ¶
DynamoDBは スケーラブルで高可用性のNoSQLデータベース であり、大規模アプリケーションのデータストアに最適です。
DynamoDBの使用方法として、ローカル環境で DynamoDB をエミュレートDynamoDB-localを活用すれば、ローカル環境で開発を行いながら、本番環境にスムーズに移行できます。
ただし、SQLのようなリレーショナルな操作は得意ではないため、用途に応じた適切な設計が重要です。