「SQLアタマアカデミー」第6回

 『WEB+DB PRESS Vol.50』に「SQLアタマアカデミー」第6回が掲載されました。

 前回、リレーショナル・データベースと SQL木構造を扱うための新しい方法論「入れ子集合モデル」を解説しました。前回の終わりでは、このモデルの欠点がノード挿入時に無関係のノードまで変更対象となってしまうため、パフォーマンスやロックの問題が生じることにある、というところまででした。

 今回は、その解決編として、進化版の「入れ子区間モデル」を紹介する内容となっています。解決策は簡単、座標に有理数を使うことでした。言われてみればコロンブスの卵だけど、独力で思いついたぞ、という人いました?

 最近のエントリで何度か「資源の有限性」という問題を取り上げましたが、私たちがぶつかる問題の大半は、資源が有限であるから起きるといっても過言ではありません。入れ子集合モデルもその例に漏れず、整数はすぐに枯渇してしまいます(単調に大きくするだけなら無限なのだけどね)。

 これに対し、有理数のいいところは、本文でも説明したとおり稠密性を持つため、二点の区間の中から無限に点を取り出すことが可能となることです。これでノード挿入にかかわる問題を、全部とはいわないまでも大きく軽減することが可能になるのです。

 無限の資源というのは、この世界にはそうそう見当たるものではありません。でも、数はまさにその無限に使えるリソースなのです。IP アドレスのように数を組み合わせて作るものが、世界中の人に割り当てようと、原理的に枯渇しないのも、数が無限のリソースだからです。

 そして、この整数から有理数への一般化は、カントール集合論を作り上げる過程で辿った道でもあります。入れ子区間モデルは、カントール集合というフラクタルの反転図形です。私たちは、彼がたどった一般化の道を 100 年後にもう一度歩きなおしているわけです。

 というわけで、今回の記事は歴代の中で分量としては一番短いのですが、一番濃い内容を含むものとなりました。楽しんでいただけたら幸いです。