Dev Study
AWSサービスの内部原理 コース

2. DynamoDBはSSDに載っている — パーティションという物理の単位

1つの「表」に見えるテーブルの正体は、SSD 上に散らばった複数のパーティションの集まりです。図で追っていきましょう。

① 見た目は「表」、実体は「SSD 上のパーティションの集まり」

テーブル "Pets"画面上は行と列の表
実体は…
パーティション ASSD 上の割り当て
パーティション BSSD 上の割り当て
パーティション CSSD 上の割り当て

テーブルは1枚のファイルではなく、SSD に格納されたパーティションの集まり。各パーティションは複数の AZ に自動複製される。

② 書き込み: パーティションキーをハッシュして置き場所を決める

put({ AnimalType: "Dog" })
パーティションキーの値を
hash("Dog")内部ハッシュ関数
出た値のパーティションへ
A"Cat"
B"Dog"
C"Bird"

get("Dog") も同じハッシュを通るので、何十億件あってもパーティション B へ一発で到達。キーを指定しない Scan は全パーティションを舐めるので遅い。

③ SSD だからキー1発が速い(記憶装置の物理とつながる)

SSD(半導体)どの番地も一定で速い
HDD(円盤)回転を待つので遅い

「SSD はランダムアクセスが速い」という基礎の性質が、そのまま「キー指定なら一定の速さで取れる」というサービスの約束になっている。

④ パーティションは物理。だから上限があり、偏ると詰まる

パーティション Bアクセス集中(ホット)
A空き
C空き
  • ・1 パーティションには物理的な処理上限がある(= 1 台のサーバーの能力)
  • ・容量やスループットが足りなくなると、DynamoDB が自動でパーティションを追加・分割する
  • ・特定キーに偏るとテーブル全体は余裕でも、その1枚の上限で頭打ち → キーは散らせ

「なぜキーを散らせと言われるか」の答えがこれ。全体像は次のレッスン以降で1つずつ図にしていく。

公式ドキュメントで詳しく ↗