DynamoDBとは
DynamoDBは、Amazon Web Services (AWS) が提供する完全にマネージドされた NoSQL データベースサービスです。
スケーラビリティとパフォーマンスを重視し、大規模なデータストレージと高速なデータアクセスを提供します。
以下はDynamoDBの主な特徴とその基本的な概念です。
主な特徴
1. スケーラビリティ:
DynamoDBは自動的にスケーリングし、トラフィックの増加に応じて性能を維持します。
データベースのサイズやリクエストの量に応じて、ストレージと読み書きのキャパシティを調整します。
2. 高可用性と耐障害性:
データは複数のリージョンにわたってレプリケートされ、ハードウェアの障害やデータセンターの障害から保護されます。
この設計により、DynamoDBは高い可用性を提供します。
3. パフォーマンス:
高速なデータアクセスが可能で、低レイテンシーの読み書きを提供します。
インデックス機能やクエリ機能を利用して、効率的にデータを取得できます。
4. フレキシブルなデータモデル:
DynamoDBはドキュメントデータベースおよびキーバリュー型データベースとして機能します。
テーブル、アイテム、属性という基本的な概念を使用してデータを構造化します。
5. トランザクションサポート:
DynamoDBはACIDトランザクションをサポートしており、複数のアイテムにまたがる一貫性のあるトランザクションを提供します。
6. セキュリティ:
IAM(Identity and Access Management)を通じて細かいアクセス制御が可能で、データの暗号化もサポートしています。
基本的な概念
- テーブル:
データはテーブルに格納されます。
テーブルはスキーマを持ち、アイテムの構造や属性を定義します。
- アイテム:
テーブルに格納される個々のデータエントリで、キーと属性から構成されます。
各アイテムは一意の主キーを持ちます。
- 属性:
アイテムの各データ要素で、フィールドや値のペアで構成されます。
属性はデータの種類に応じて異なる形式を取ることができます。
- 主キー:
各アイテムを一意に識別するためのキーです。
主キーはパーティションキー(ハッシュキー)またはパーティションキーとソートキーの組み合わせから構成されることがあります。
- インデックス:
クエリのパフォーマンスを向上させるために使用します。
グローバルセカンダリインデックス(GSI)やローカルセカンダリインデックス(LSI)などがあります。
- クエリとスキャン:
テーブルからデータを取得するための操作です。
クエリは主キーまたはインデックスを使用して特定のアイテムを効率的に取得します。
スキャンはテーブル全体を調べてデータを取得しますが、効率が劣ることがあります。
DynamoDBはその高いパフォーマンスとスケーラビリティにより、Webアプリケーション、モバイルアプリケーション、ゲーム、IoT(モノのインターネット)など、さまざまな用途で利用されています。