DynamoDBとは
キーバリューストア型のデータストアのマネージドサービス
- NoSQLデータベース
- データは3つのAZに分散して格納される
- 格納容量に上限がない
- データ取得のレイテンシーが低いため、キャッシュの用途にも利用出来る
- ビッグデータ処理、大量データ処理が必要なアプリケーション、Web行動データ、ログ管理等に利用
- トランザクション機能は備えていない
テーブル設計
- テーブル:データのコレクション
- 項目:項目間で一意に識別可能な属性グループであり、テーブルを構成する要素
- 属性:各項目を構成する要素
プライマリーキー
ハッシュキーのみでユニーク、もしくはハッシュキー&レンジキーの2つでユニークのいずれかのタイプが指定可能
1. ハッシュキー
- KVSにおけるキーに相当するデータを一意に特定するためのIDなどのこと
- テーブル作成時に1つの属性を選び、ハッシュキーとして宣言
- 単独での重複を許さない
2. レンジキー
- テーブル作成時に2つの属性を選び、1つをハッシュキー、もう1つをレンジキーとして宣言
- 2つの値の組み合わせによって1つの項目を特定
- 単独であれば重複が許される
インデックス
1. 暗黙的なキー
- データを一意に特定するため特定するために暗黙的にキー(ハッシュキーやレンジキー)として宣言して検索に使用するインデックス
- 1テーブルに1つ宣言する
2. 明示的なキー
-
ローカル・セカンダリ・インデックス(LSI):プライマリキーのタイプが、ハッシュキー&レンジキーの場合のみ設定可能で、別の規則でのインデックスを可能にする(テーブル作成時に作成)
-
グローバル・セカンダリ・インデックス(GSI):ハッシュキーの属性の代わりになり、ハッシュキーをまたいだ自由な検索を可能にする(テーブル作成後に作成)
読み込みの種類
以下2種類の読み込みはクエリ発行ごとに指定可能
1. 結果整合性の読み込み
・デフォルトの読み込み
2. 強力な整合性の読み込み
・書き込まれたデータが3つのAZに完全に保存されたデータのみを読み込む
・結果整合性の読み込みと比較してRCUを2倍消費する
※ 書き込みは少なくとも2つのAZでの書き込み完了が確認出来たら完了
DynamoDB Local
DynamoDBのエンジンのみのライブラリ
AWS環境にアプリケーションをデプロイしなくてもローカル環境でDynamoDBとアプリケーションの連携テストを実行可能
セキュリティ
アクセス制御
- テーブルへのアクセス制御にはIAMポリシーを使用
- DynamoDBテーブルにアクセスする際は、アクセスを許可したIAMポリシーをアタッチしたIAMロールやIAMユーザーを使用する
暗号化
- KMSを利用してデータの暗号化が出来る
- 暗号化設定はテーブル作成時にのみ可能
- 使用するKMSのキーは全テーブル共通
- 暗号化されたテーブルへのアクセスには、KMSへのアクセス許可があるIAMポリシーが必要