DynamoDB(NoSQLデータベースサービス)の特長について取り上げます。また、マネジメントコンソールから実際にテーブルを作成してみます。
目次
DynamoDBの概要
特長
- Key-Value型のNoSQLデータベースサービス
- 事実上無制限のスループットとストレージ
- 管理作業をまかせられる
- レプリケーション
- ソフトウェアのパッチ適用
- クラスタースケーリング
- バックアップ & リカバリ
- オンデマンドバックアップ
- ポイントインタイムリカバリ
DynamoDBストリームをトリガーとしたLambadaの実行- 項目の追加、変更、削除をイベントとして検出
キャパシティーユニットによる利用量の事前に設定が可能- 1秒あたりの
読み込み書き込みの回数上限を決めて料金が決定される
- 1秒あたりの
構成要素( Table, Item, Attribute )
RDSと比較すると以下のようになります。
| DynamoDB | RDS |
|---|---|
| テーブル(Table) | テーブル |
| 項目(Item) | レコード |
| 属性(Attribute) | カラム |
プライマリキー
- テーブルの各項目を一意に識別
- 2種類をサポート
- 1つの属性(
パーティションキー)で構成 - 2つの属性で構成(
パーティションとソートキー)
- 1つの属性(
セカンダリインデックス
- プライマリキー以外の属性で、データに効率的にアクセスできるようにする
- 2種類をサポート
- グローバルセカンダリインデックス(GSI)
- ローカルセカンダリインデックス(LSI)
下記例で GSI と LSI の違いを確認します。

- GSI
- 全データの中から
PostIdを指定して抽出
- 全データの中から
- LSI
- ある
UserIdの中からPostIdを指定して抽出
- ある
データの読み込み
( GetItem, Query, Scan )
- テーブルから単一の項目取得
GetItem
- テーブルから複数項目取得
Query- キーを条件に特定範囲内の検索
Scan- テーブル全体を検索
- 負荷が大きい
参考
各種上限
1項目あたりの上限
1つの項目サイズは 400KB を上限としています。容量上限を越えると下記エラーが出ます。
Item size has exceeded the maximum allowed sizeQuery, Scanで取得可能な容量上限
Query Scan の結果セットにはデータ制限( 1MB )があります。
データ制限を越えると、クエリ応答 に LastEvaluatedKey がセットされます。
参考
マネジメントコンソールからテーブル作成

プライマリキーを設定しています。

グローバルセカンダリインデックスを設定しています。

ローカルセカンダリインデックスを設定しています

キャパシティモードを設定できます。

キャパシティ計算ツールでコストの計算をすることができます。
作成したテーブルです。


プライマリキー GSI LSIを利用した抽出ができます。