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 size
Query, Scanで取得可能な容量上限
Query
Scan
の結果セットにはデータ制限( 1MB
)があります。
データ制限を越えると、クエリ応答
に LastEvaluatedKey
がセットされます。
参考
マネジメントコンソールからテーブル作成

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

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

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

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

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


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