← 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つずつ図にしていく。