Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

Amazon DynamoDBについて調べてみた。

f:id:overworker:20210304234231p:plain:h200

Amazon DynamoDBの基本を調べてみました。

DynamoDBの特徴

  • フルマネージド型のデータベースサービス
    • フルマネージド型:AWS側でいろいろやってくれるから、利用者側の管理範囲が少なくてよい。
  • NoSQL型のデータベースサービス
  • リージョンを指定して利用する
    • AZを意識しなくてよい(自動的に複数のAZに同期される)。
  • データ容量は無制限

DynamoDBのTable構造

f:id:overworker:20210618002937p:plain:h300
  • Table:データを管理する際のまとまり
  • ItemsTable内で管理される要素
  • AttributesItem内で管理される属性
    • PartitionKeyAttributesの一種。唯一の必須キー。
    • SortKeyAttributesの一種。Queryによる探索に利用可能。

Itemの操作

読み込み操作 書き込み操作
GetItem

TransactGetItems
BatchGet
Query
Scan
PutItem
Update
TransactWriteItems
BatchWriteItem
Delete
 

補足

  • GetPutUpdateDeletePartisionKeySortKayを指定してItemを決定する。
  • QueryPartisionKeyのみを指定したうえで、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
Adaptive capacity
  • パーティション全体としてのキャパシティのリミットには到達していないが、パーティション種毎に均等に分割した際のキャパシティのリミットには到達した場合、他のパーティションから余力の部分を均等に集めアクセスが集中しているパーティションにキャパシティを集中的に割り当てることができる。
    • ディレイがなくなった(昔は発動までの期間が5分~30分かかっていた(2018~2019)。)

データへのアクセス

テーブル構造 特徴 使用するAPI
リレーション
キー・バリュー型
PartitionKey、またはGSI GetItem
BatchGetItem
N:リレーション
親子関係
PartitionKeyとSortKeyを使ったテーブル、またはGSI Query
N:M tableとGSIを使用してPartitionKeyとSortKeyの要素をスイッチして設計 Query