Amazon DynamoDBの基本を調べてみました。
DynamoDBの特徴
- フルマネージド型のデータベースサービス
- フルマネージド型:AWS側でいろいろやってくれるから、利用者側の管理範囲が少なくてよい。
- NoSQL型のデータベースサービス
- リージョンを指定して利用する
- AZを意識しなくてよい(自動的に複数のAZに同期される)。
- データ容量は無制限
DynamoDBのTable構造
Table
:データを管理する際のまとまりItems
:Table
内で管理される要素Attributes
:Item
内で管理される属性PartitionKey
:Attributes
の一種。唯一の必須キー。SortKey
:Attributes
の一種。Queryによる探索に利用可能。
Itemの操作
読み込み操作 | 書き込み操作 |
---|---|
GetItem TransactGetItems BatchGet Query Scan |
PutItem Update TransactWriteItems BatchWriteItem Delete |
補足
Get
、Put
、Update
、Delete
はPartisionKey
とSortKay
を指定してItemを決定する。Query
はPartisionKey
のみを指定したうえで、SortKay
の内容で絞り込みを実施する。Attributes
は、「既存のAttributes
にのみ書き込む」や「Attributes
が存在しない場合のみ書き込む」等の操作が可能。
DynamoDBの機能
DynamoDB Transactions
- DynamoDBで複数のItem/複数のTableに対する読み込み、書き込み操作でASIDトランザクション操作が可能。
Local Secondary Index
PartitionKey
が同一でSortKey
以外の他のattributes
を絞り込み検索のために利用する。- あらかじめ設定をしておく必要がある。
Global Secondary Index
PartitionKey
をまたいで検索を行うためのインデックス
ポイントインタイムリカバリ (PITR)
- オペレーションによって DynamoDB テーブルが誤って上書きされたり削除されたりしないようにできる。
- DynamoDB テーブルデータを連続バックアップすることができる。
- 過去 35 日間の特定の時点に 2 つ目まで復元できる。
DynamoDBの設定項目・管理項目
フルマネージドサービス(≒メンテナンスフリー)
以下の項目は、AWS側で管理対象項目(※)となります。
ジャンル | AWS管理対象項目 |
---|---|
セキュリティ | OSパッチ適用 DBパッチ適用 アクセスコントロールリスト、監査、コンプライアンス対応 |
耐久性 | サーバー、ラック、データセンターの維持 W障害にともなうデータコピー バックアップ・リストア |
可用性 | 高可用性を実現する設計 モニタリング クロスリージョンレプリケーション |
性能 | パフォーマンスチューニング インデックス設計、作成 In-memory上でキャッシュ維持 |
拡張性 | キャパシティープランニング ホスト構築・投入作業 障害ホストの修復、撤去作業 |
※ AWSが管理内容の詳細を公開しているで、公開内容で不足がある場合は別途自分での管理が必要になります。
DynamoDBの設定項目
キャパシティ
- キャパシティーモード選択
- オンデマンドモード
- プロビジョンドモード
- リードキャパシティユニット(RCU):オートスケールも選択可能
- ライトキャパシティユニット(WCU):オートスケールも選択可能
BurstCapacity(プロビジョンドモード)
AutoScaling
- ターゲット使用率と上限、下限を設定するだけ
- リクエスト数に応じて自動的に容量の拡大、削減を実施
パーティションとスループットRCU/WCU
- テーブルスループットはパーティション均等に付与される
- 全体で合計値の性能が付与されるように設計されている
- アクセスされるキーに偏りがあると思うように性能が出ない(スロットリングが発生)
- 全体で合計値の性能が付与されるように設計されている
- 1パーティションはRCU3000 or WCU1000が割り当てられる上限
Adaptive capacity
- パーティション全体としてのキャパシティのリミットには到達していないが、パーティション種毎に均等に分割した際のキャパシティのリミットには到達した場合、他のパーティションから余力の部分を均等に集めアクセスが集中しているパーティションにキャパシティを集中的に割り当てることができる。
- ディレイがなくなった(昔は発動までの期間が5分~30分かかっていた(2018~2019)。)
データへのアクセス
テーブル構造 | 特徴 | 使用するAPI |
---|---|---|
リレーション キー・バリュー型 |
PartitionKey、またはGSI | GetItem BatchGetItem |
N:リレーション 親子関係 |
PartitionKeyとSortKeyを使ったテーブル、またはGSI | Query |
N:M | tableとGSIを使用してPartitionKeyとSortKeyの要素をスイッチして設計 | Query |