DynamoDB の設計でのよくあるアンチパターン(というか設計ミス)は、まず LSI を 5 つ以上貼ってしまった・・というパターンです。
一言で言えば、開発者泣かせな設計ですね笑
これをしてしまうと、恐らくマイグレーションの際にエラーで進まないと思います。
そしてそれを開発者が独断で無視して LSI を貼り付けないなどの対応をした場合は、当然先々で想定する検索が行えない可能性があります。
LSI は一方で、「セカンダリインデックスに対して強力な整合性のある読み込みを実現する場合には LSI を利用する必要がある」という面があるので、GSI と上手く併用して扱いたいですね。
私たちは、多くのケースで下記のような採用をしています。他にもユースケースがありそうですが・・。
DynamoDB の大原則として、検索要件が定まっていない時の開発はそもそも控えましょう。(OverLoading テクニックなどで工夫して導入するのを検討しましょう)
セカンダリインデックスを使用したデータアクセス性の向上 – Amazon DynamoDB
ローカルセカンダリインデックス – Amazon DynamoDB
DynamoDB のグローバルセカンダリインデックスの使用 – Amazon DynamoDB
GSI の設計をもとに、LSI の貼り付けは考えましょう。
GSI は上限緩和申請で1テーブル最大20個の枠を超えて作成することも可能です。
先々 BI ツールと連携するのを見越すなら、基本的に日付での検索を可能にしておくのがベターなので、createdAt, updatedAt には LSI を貼り付けておきましょう。
サーバーレス開発については、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎