DynamoDBのキー構造
パーティションキー ソートキー action detail
madonna 20240101100101 GET { … }
madonna 20240101100103 POST { … }
madonna 20240102100105 GET { … }
tommyleejones 20240101090124 GET { … }
NBEPOOBͷ(&5ΞΫγϣϯ͚ͩநग़͍ͨ͠߹ʁ
• actionフィールドはパーティションキーでもソートキーでもない
‣ actionフィールドを検索条件にはできない
‣ パーティションキー=madonnaで3件抽出後、filterをすることになる
‣ もしmadonnaのデータが1億件あったら??
Slide 14
Slide 14 text
LSIの登場🎉
Slide 15
Slide 15 text
LSIとは
• Local Secondary Index(LSI)
‣ 追加のソートキーと考えればOK
‣ 1テーブルにつき最大5つのLSIを作成できる
‣ テーブル作成時のみ作成が可能
‣ 後から追加はできない!
‣ ソートキーと同じでパーティションキー+LSIで検索する
パーティションキー ソートキー action detail
madonna 20240101100101 GET { … }
madonna 20240101100103 POST { … }
madonna 20240102100105 GET { … }
tommyleejones 20240101090124 GET { … }
-4*ʹ͢Δ
Slide 16
Slide 16 text
さて問題です
Slide 17
Slide 17 text
次の問題です
パーティションキー ソートキー action
(LSI)
detail
madonna 20240101100101 GET { … }
madonna 20240101100103 POST { … }
madonna 20240102100105 GET { … }
tommyleejones 20240101090124 GET { … }
ಛఆͷͷɺશϢʔβͷ(&5ΞΫγϣϯ͚ͩ
நग़͍ͨ͠߹Ͳ͏͢Ε͍͍ʁ
Slide 18
Slide 18 text
次の問題です
パーティションキー ソートキー action
(LSI)
detail
madonna 20240101100101 GET { … }
madonna 20240101100103 POST { … }
madonna 20240102100105 GET { … }
tommyleejones 20240101090124 GET { … }
ಛఆͷͷɺશϢʔβͷ(&5ΞΫγϣϯ͚ͩ
நग़͍ͨ͠߹Ͳ͏͢Ε͍͍ʁ
நग़݅ʹʮύʔςΟγϣϯΩʔ͕ඞਢʯͳͷͰ
ϢʔβΛލͬͯҰؾʹݕࡧ͕Ͱ͖ͳ͍😔
Slide 19
Slide 19 text
GSIの登場🎉
Slide 20
Slide 20 text
GSIとは
• Global Secondary Index(GSI)
‣ テーブルに設定されているパーティションキー
とは異なるパーティションキー・ソートキーを作ることができ
る
‣ 1テーブルにつき最大20個のGSIを作成できる
‣ テーブル作成時だけじゃなく後からでも作成が可能
‣ 内部的にはテーブル更新時に非同期でレプリケートされる感じ
で
別のテーブルを作っているイメージ(射影)
パーティ
ションキー
ソート
キー
actio
n
detail
madonna 20240101
100101
GET { … }
madonna 20240101
100103
POS
T
{ … }
madonna 20240102
100105
GET { … }
tommyleejon
es
20240101
090124
GET { … }
GSIパーティ
ションキー
GSIソート
キー
userid detail
GET 20240101
100101
madonna { … }
POST 20240101
100103
madonna { … }
GET 20240102
100105
madonna { … }
GET 20240101
090124
tommyleej
ones
{ … }