はじめに

Dynamo のテーブルに GSI(グローバルセカンダリインデックス)を貼ってハッシュキー+ソートキーでクエリするパターンが通常の使い方かと思います。

ではソートキーを日付にしていた場合、同じ日付範囲のデータを一括で取得できる方法はありますでしょうか?

公式ドキュメントにはその辺の Tips なかったのですが、同僚から以下の記事を教えてもらいました。

DynamoDB の設計力をあげたい

これの設計2を参考にしました。

全データ共通のダミー列を用意して、以下の GSI を作成します。

  • パーティションキーはダミー列
  • ソートキーに日付

これで同じ日付範囲の複数データを引っ張ってくることが可能になります。

確かに美しいと言えないかもしれませんが、機転の効いた方法だと思いました。