Slide 10
Slide 10 text
© Chatwork
NoSQLでRDBのクエリのような使い方をしてしまう問題
● NoSQLはハッシュキーでスケールアウトできる
○ ハッシュキーで自動的にシャーディング(パー
ティショニング)される
○ ただしキーでしかエンティティを解決できない
● エンティティの属性でもクエリしたい…
○ GSIを多用する
■ 個数の上限がある
● 上限があるなら、転置インデックスを作ろう
○ エンティティの更新以外にインデックスデータ
も更新する必要がある
○ エンティティの取得の前にインデックスの解決
が必要になる
10
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を引くことになる…
転置インデックス
NoSQLで複雑なクエリ要件を取り込もうとしてシステムが複
雑化する…使い方を考え直したほうがいい