Closed5

DynamoDBのパーティションキーは内部的にhash関数で分散されるとのこと

tamaco489tamaco489

ざっくりイメージ

  • DynamoDBがパーティションキーの値をもとに裏側で自動的に保存場所を振り分けてる。
  • スケーラビリティ担保する分散型DBのため、データを複数のパーティションに分けて管理してる。
  • 要するに表ではテーブルのkeyの項目として見えてるが、裏では何百、何千もの物理ノード(ストレージの塊的な)にデータをばらけさせてる。
tamaco489tamaco489

🔑 パーティションキーの役割

上記踏まえておそらくこんな感じだろうというイメージ

パーティションキー: "user-123"

→ DynamoDB が内部でハッシュ関数に通す
   hash("user-123") = 918382729

→ その数値によって 200個ある物理パーティションのうち、例えば #137 に保存される

こうすることで、特定のキーに偏りがなければ、全体的にデータがうまく分散されて高スループットが保たれるということなのかと。

tamaco489tamaco489

⚠️ 注意:「分散される = 速い」じゃない

分散の仕組み自体はDynamoDBが自動でやってくれるけど、パーティションキーの値に偏りがあると、そのキーばかりが特定の物理パーティションに集中する。
これが「ホットパーティション」と呼ばれる現象で読み書き制限に引っかかってパフォーマンス劣化の原因になる。

tamaco489tamaco489

✅ 対策:うまく分散するキーを選ぶ

  • ランダム性のある値(UUIDなど)
  • ユーザーごとのID(アクセスが分散される)
  • 一部で時間やカウンタを埋め込む(例:UserID#20250419)
このスクラップは5ヶ月前にクローズされました