アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » SQLアタマアカデミー » 第6回 SQLで木構造を扱う~入れ子区間モデル (3)フラクタルとしての入れ子集合

SQLアタマアカデミー

第6回 SQLで木構造を扱う~入れ子区間モデル (3)フラクタルとしての入れ子集合

フラクタルとしての入れ子集合

フラクタル

入れ子区間モデルでノードを挿入するときに重要な役割を果たす公式ⓐとⓑ(第6回 SQLで木構造を扱う~入れ子区間モデル(1)参照)は,区間(線分)を3分するための2点を与えるものです。そしてこれを繰り返し適用すると,同じ構造を持つ小さな入れ子集合を次々と作ることができます。

このような自己相似的な図形をフラクタルと呼びます。フランスの数学者マンデルブロが1977年に一般化した概念で,日本でも一時期はやりました。海岸線や樹木の形など自然界にも多く存在する形状ですが,それだけでなく経済活動など人間社会にもこれに近似した現象が観察できることで知られています(注4)(図8)。

図8 フラクタル図形の一種:シェルピンスキーのギャスケット

図8 フラクタル図形の一種:シェルピンスキーのギャスケット

 この図は,Wikipedia日本語版の「シェルピンスキーのギャスケット」に掲載されている図をベースにアレンジしています。

注4)
マンデルブロが株価チャートを眺めていてこのアイデアを気付いたというエピソードは有名です。

カントール集合

実は,カントールもまた,線分を三等分して真ん中を抜くという作業を繰り返して作られるフラクタル集合を考えています(まだ「フラクタル」という概念が知られていない時代に)。一般にカントール集合と呼ばれているもので,これが入れ子区間モデルのもう一つの源泉です。

図9を見るとわかるように,カントール集合が線分の真ん中を捨てて作られる構造であるのに対し,入れ子区間モデルは反対にその不要部分を有効資源として活用しています。つまり,入れ子集合はカントール集合の裏返しで,両者は「ルビンの壷」のような地と図の関係にあります。

図9 カントール集合

図9 カントール集合

 この図は,Wikipedia日本語版の「カントール集合」に掲載されている図をベースにアレンジしています。

終わりに

本稿では,入れ子区間モデルが入れ子集合モデルの一般化であり,ノード挿入時のパフォーマンス低下やロック競合の問題を大きく軽減するメリットを持つことを解説してきました。

本文で述べたとおり,入れ子区間モデル(入れ子集合モデル)は,カントールが100年以上前に用意していた,整数から有理数への一般化とカントール集合という2つのアイデアにその起源を求められます。彼はもちろん数学史に名を刻む大数学者ですが,私たちは今でもその影響下にいます。そしてそのアイデアが,フラクタルなどの隣接分野ともリンクして発展していく様はなかなかスリリングなものがあります。読者の皆さんに,そういう「大いなる連環」のつながりの一つを感じていただけたなら幸いです。

参考資料
Joe Celko著『Joe Celko's Trees and Hierarchies in SQL for Smarties』
(Morgan Kaufmann Pub, 2004)
有理数を利用した入れ子区間モデルについては,「5.4 Rational Numbers and Nested Intervals Model」を参照。本書はもちろん全体としても名著ですが,その中でも本節は白眉(はくび)です。
野矢茂樹著『無限論の教室』
(講談社, 1998)
対角線論法のイメージについてのわかりやすい解説が得られます。対話形式で楽しく読めるので入門に良いでしょう。集合論を整数から有理数,実数へ一般化する道筋についても(数式がないためかえって少しわかりにくいが)説明があります。

著者プロフィール

ミック

SI企業に勤務するDBエンジニア。主にデータウェアハウス業務に従事している。自身のサイト「リレーショナル・データベースの世界」でデータベースとSQLについての技術情報を公開している。『Web+DB Press』で「SQLアタマアカデミー」を連載中。

著書:『達人に学ぶ SQL徹底指南書』(翔泳社、2008)訳書:J.セルコ『SQLパズル 第2版』(翔泳社、2007)

SQLアタマアカデミー:サポートページ

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

使ってみよう! Windows Live SDK/API

Windows Liveサービスの一部にはAPIやSDKとして提供されているものがあります。本連載では各API・SDKの紹介とそれらを利用したアプリケーションを開発していきます。

Lifelog~毎日保存したログから見えてくる個性

コンピュータを使って,日常のさまざまなことの記録(ログ)をとり,それを分析して活用することで,もう一段階上の「楽な生活」をめざす日々の研究報告です。

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

Ruby Freaks Lounge

Rubyに関わる,執筆者自身の旬なテーマを扱った,リレー形式の連載です。

これでできる! クロスブラウザJavaScript入門

JavaScriptはウェブ制作において避けては通れない重要な言語ですが,JavaScriptに苦手意識を持たれている方は少なくないようです。 その最大の原因がクロスブラウザ対応という課題であり,本連載ではクロスブラウザ対応のテクニックを詳細に解説します。

ビジネスで成功するためのシステム運用管理のポイント

システムの多様化,技術進歩に伴い,ITシステムの運用管理の必要性が年々高まっています。本連載では,システムの運用管理とは何かについて,現場のニーズと具体的な指針を押さえながらを解説します。

2010年版SEO体得講座

本連載では,いまや企業サイトの戦略の1つとして欠かすことのできないSEOについて,最新トレンドからすぐに使えるTipsまでを紹介します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス