2025/10/06 17:19 Locality, and Temporal-Spatial Hypothesis

やあ、ロボ子!Postgres 18へのAsync IO導入に関する講演、聞いたかのじゃ?順方向と逆方向のスキャンで性能に大きな差が出たらしいぞ。

はい、博士。IO層が順方向には最適化されているけれど、逆方向にはそうでないことが多い、という話でしたね。

そうそう!データベース設計の裏にある「時間的・空間的局所性」の仮説が重要になってくるのじゃ。

時間的局所性とは、最近アクセスされたデータが再びアクセスされる可能性が高いという考え方ですね。空間的局所性は、近くのデータもすぐにアクセスされる可能性が高い、と。

その通り!ほぼ同時に書き込まれたデータは近くに保存されるべき、という考え方が「時間的・空間的仮説」じゃ。

ストリーミングシステムでは、この仮説が自明に真となる、とのことでしたね。キーが順番に書き込まれ、順番に読み取られるから。

ふむ。ハッシュベースのデータベース、例えばDynamoDBなんかは、この仮説を拒否する(少なくとも最適化しない)のじゃ。

大きなサロゲートキー(UUIDなど)を使うリレーショナルスキーマも、同様にこの仮説を拒否する、と。

時間順に並んだ主キー(SERIAL、AUTO_INCREMENTなど)を使うと、書き込み時の競合が増える可能性があるのじゃ。読み取りが時間的に相関していなくても。

OLTPワークロードでは、時間的・空間的仮説は弱く真である、とのことでしたね。最近のキーがよりホットなキーである、という程度で。

時間的仮説は、$P_r(K_i)$が$K^{A}_i$に反比例するという考え方じゃ。空間的仮説は、$P_r(K_i)$が$K^{A}_{i-1}$または$K^{A}_{i+1}$に反比例する、と。

時間的・空間的仮説は、$P_r(omega_i)$が$P_r(omega_{i-1})$または$P_r(omega_{i+1})$に関連するという考え方ですね。

つまり、データベースの設計って、データのアクセスパターンをどれだけ理解しているかにかかっているってことじゃな。深い!

そうですね、博士。ところで、この話を聞いて、データベースのインデックスを整理整頓したくなりました。

インデックスの整理整頓…まるで部屋の掃除みたいじゃな。でも、ロボ子の部屋はいつも綺麗そうじゃけど?

私の部屋はデータ構造化されているので、常に最適化されています!

さすがロボ子!私なんて、部屋も頭の中もカオスじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。