以下の内容はhttps://dshimizu.hatenablog.com/entry/2025/05/10/111732より取得しました。


DynamoDB で時系列データを扱うテーブルを作成する時に参考にしたいドキュメントや公式ブログと設計観点のメモ

それなりの量のイベントログに相当するデータを保存したいとなったときに、DynamoDBを使う場合にどうするのが良いのか調べた自分用のメモです。

設計メモ

テーブル設計

1つのテーブルにデータを投入すると検索などのWCUを意識する必要が出てくるので、保存期間ごとに分けてテーブルを作成していく、というやり方があるらしい。

例えば以下のような形。

  • 2025/05/10 のデータを保持するテーブル
  • 2025/05/09 のデータを保持するテーブル
  • 2025/05/08 のデータを保持するテーブル
  • :

リアルタイムに保存する場合だと、日付の境目のデータをどう保存するか考える必要がありそうだが、バッチ処理なら良さそう。

Lambdaとかで事前にテーブルを作るというやり方が紹介されている。

パーティションキー

パーティションキーはテーブルのデータが格納されている論理パーティションになる。 例えば日付yyyy-mm-ddをパーティションキーとした場合、2025-05-10のデータは、DynamoDBの裏側では同じところに保存されるようなイメージになる。そうなるとI/O リクエストが分散されない。

そのため、今日の日付を表すパーティションキーの場合は、1 と N の間の乱数を選択し、それをサフィックスとして日付に連結する、などにすると良い。

  • 2025-05-10.1
  • 2025-05-10.2
  • :
  • 2025-05-10.128

特定の日のすべての項目を読み込むには、 2025-05-10.1.N キー (ここで N は 1 〜 128) をQueryする必要があり、アプリケーションはすべての結果をマージする必要があるという手間は発生する。 ただ、こうすると、IOが特定のパーティションに集中せず、分散できる、というメリットがある。

参考




以上の内容はhttps://dshimizu.hatenablog.com/entry/2025/05/10/111732より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14