Slide 26
Slide 26 text
NoSQLでRDBのクエリのような使い方をしてしまう問題
● NoSQLはハッシュキーでスケールアウトできる
○ ハッシュキーで自動的にシャーディング(パー
ティショニング)される
○ ただしキーでしかエンティティを解決できない
● エンティティの属性でもクエリしたい…
○ GSIを多用する
■ 個数の上限がある
○ 上限があるなら、転置インデックスを作ろう
■ エンティティの更新以外にインデックス
データも更新する必要がある
■ エンティティの取得の前にインデックス
の解決が必要になる
NoSQLで複雑なクエリ要件を取り込もうとしてシステムが複
雑化する…
DynamoDB
アプリケーション
A-1
B-1
A-2
B-2
DynamoDB
{ A-1, 技術部, KATO } B-1
{ A-2, 総務部, SATO } B-2
GSIで部署名で検索できるように …
EMP
{ A-1, 技術部, KATO }
{ A-2, 総務部, SATO }
EMP_DEPT_IDX
{ 技術部, [ A-1, A-3 ] }
{ 総務部, [ B-2, B-4 ] }
逆引きする際は、EMP_DEPT_IDXでIDを解決
してからEMPを引くことになる…
転置インデックス