3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DynamoDBテーブル設計 パーティションキーとソートキー

Last updated at Posted at 2021-08-09

はじめに

AWSのフルマネージドNoSQLサービス、DynamoDBのテーブル設計をする機会があった。
以前に右も左も分からない状態で設計をしたことがあったが、学びがあったので自分用にメモ。

パーティションキー (PK)

RDBでいうところのプライマリキーである。ソートキーが異なれば重複可👌

パーティションキーごとに、物理的な保存場所が異なる。
DynamoDBはキャパシティーユニットに応じてスケーリングできる。

この時、パーティションキーの値がなるべく分散するように設計する。
特定のキーにアクセスが集中すると、スケーリングしても速度が上がらず結果的に性能不足になってしまうからだ。

したがって、日付などの分散しにくい値はよくない。
なるべく分散する値を選んで設計しよう。

ソートキー (SK)

パーティションキーで指定した値を取り出す際の順序が決まるキー。
これ単体で検索(クエリ)することはできず、パーティションキーと組み合わせて検索する。

その名の通り順番を決めるキーなので、UNIXタイムスタンプなどソートしたい要素を指定すると良いだろう。

結論

  • PK
    • 物理的に保存する場所を定義
    • なるべく分散する値
  • SK
    • PKと組み合わせて検索
    • ソートしたい要素
    • 任意

おまけ

以前はRDBしか使ったことがなかったのでたくさんのカラムを持つテーブル設計をしてしまったが、NoSQLではある程度JSONとしてObjectやArrayをカラムに記録する設計も大アリのようである。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?