キーバリュー型のデータベースです。
よくLambdaで使うデータベースとして使われるイメージがあります。
Amazon DynamoDB とは - Amazon DynamoDB
導入効果は高いものの、ハードルは高いというイメージが強くなりました。
ほぼ以下の用語に関する要約です。
AWS Black Belt Online Seminar 2017 Amazon DynamoDB (PDF)
ほぼ以下の用語に関する要約と、理解しづらかった箇所の補足です。
AWS Black Belt Online Seminar 2017 Amazon DynamoDB (PDF)
ただ、性能の算出方法については、用語が多すぎて理解しづらかったです。
公式ドキュメントの方も読みましたが、英語で読んでも難しい......。
読み込み/書き込みキャパシティーモード - Amazon DynamoDB
ほぼ以下の要約です。
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern (PDF)
GSIは親テーブルあたりデフォルト20までしか作成できないため、1つのGSIで複数の用で利用できるように定義する方法です。
メッセージ内容のようなデータサイズの変動が大きいキーについては、素直に別テーブルとするのが良いみたいです。
下記記事の要約です。
DynamoDB グローバルセカンダリインデックスを使用してクエリのパフォーマンスを向上させ、コストを削減する方法 | Amazon Web Services ブログ
詳細情報を全てテーブルに記入しつつ、よく検索するキーを別にGSIで指定することで通信量を削減できるみたいです。
互いに影響しないアクセスパターン(恐らくSKやフィルター機能などで検索対象が被らないようなクエリのこと?)がある場合に、親テーブルと同じPKを指定するGSIを作成しても効果があるらしいです。
下記ドキュメントのうち、気になった部分をかいつまんで要約してます。
DynamoDB を使用した設計とアーキテクチャの設計に関するベストプラクティス - Amazon DynamoDB
[country]#[region]#[state]#[county]#[city]#[neighborhood]
v1_hoge
を作成し、最新版を表す項目 v0_hoge
を最新版に上書きする
v0_
でクエリを限定して取得できるhoge
でクエリを限定して取得した上で v0_
を除外することで取得できる正直、この記事を読んだ方が理解は早いと思います。
DynamoDB でリレーショナルデータをモデル化するためのベストプラクティス - Amazon DynamoDB