この投稿はPostgreSQL Advent Calendar 2013の2日目の記事です。
昔々、あるところに一人の研究者がいました。
研究者の同僚たちは、お客さんにソフトウェアを売る仕事をしていました。 その頃は、たくさんの会社が自分たちの抱える顧客情報や取引情報をデジタルデータ化して、ソフトウェアを使って商売をする動きが盛んになり始めており、研究者の同僚たちはとても沢山お金を儲けていました。
なかでも、その稼ぎ頭となっていたのがデータベースシステム、つまり会社が抱える情報の管理を一手に担うソフトウェアでした。研究者の同僚たちは、そのデータベースシステムと、データベースシステムをつかうためのアプリケーション・ソフトウェアを書いては、色々な会社に売りつけて、お金を儲けていました。
ビジネスとしてはとてもうまくいっていたのですが、同僚たちには悩みがありました。 彼らの作っているデータベースシステムの仕組みの上では、アプリケーション・ソフトウェアを作るのがとても大変だったのです。彼らのデータベースシステムは、階層型データベースシステムという仕組みを使っていました。階層型データベースシステムでは、全てのデータは木構造で格納されており、データを取り出すためにはその木構造を順番に辿ってゆくプログラムをアプリケーション・ソフトウェアで実装する必要があったのです。アプリケーション・ソフトウェアを作る度に、同じようなデータの木構造を辿る処理を書かなくてはならないため大変です。しかも、データが変わるとその辿り方も変わってしまうので、データごとに微妙に処理を変えてあげる必要があります。お客さんが扱いたいデータの種類が増える度に、アプリケーション・ソフトウェアを作りなおしてあげる必要があったのです。それがバグの温床となって、同僚たちは苦労していました。
とはいえ、いくら手間がかかろうが、お金が儲けられることはよいことです。 研究者の同僚たちは、階層型データベースシステムを苦労しながら使って、沢山のデータベースシステムを売り、お金を儲けていました。
その様子を、研究者はじっと眺めていました。
そしてあるときふと気が付きました。 結局、アプリケーション・ソフトウェアは「どんなデータを取り出したいのか」が大事であって、その取り出し方はデータベースシステム側に任せてしまってもよいのではないだろうか、と。
そうして、研究者はそのアイディアを一遍の論文にまとめあげ、コンピュータの学会論文誌へと投稿します。 この論文による業績が評価され、この研究者はコンピュータ業界で最も権威ある賞とされるチューリング賞を受賞することとなります。そう、その研究者こそがリレーショナル・データベースを提唱した Edger F. Codd 博士だったのです。
Codd博士によって1970年に投稿された論文 "A Relational Model of Data for Large Shared Data Banks" では、リレーショナルデータモデルが、ほとんど完成された形でまとめられています。 しかしながら、その理論の記述は数学的で、発表当時はその重要性はあまり十分に理解されず、しばらくの間取り沙汰されることはなかったようです。
Codd博士の提案するリレーショナルデータモデルの最も重要な点の一つは、論理的なデータモデルと物理的なデータフォーマットを分離することにありました。つまり、どんな風にデータが保存されているのか、どんな風にデータを取り出せばよいのかを知らずとも、「自分がどんなデータを必要としているのか」さえ伝えれば、それを返してくれるデータベースシステムの最も基礎となる理論です。
当時Codd博士が所属していたIBMは、IMSという階層型データベースシステムが売れに売れていました。 階層型データベースシステムは、アプリケーションを書くためにデータの格納形式を知らなければならず、データの取得方法をアプリケーションに記述する必要がありました。そのため、開発に手間はかかっていたのですが、熟練したプログラマにとっては、意のままにデータベースシステムからデータを取り出すことができ、性能チューニングも思いのままでした。すこし昔にはアセンブラでプログラムを書いたほうが早い、という凄腕プログラマがごろごろいた事と似ているのかもしれません。
階層型データベースシステムIMSを開発して大儲けしていたIBMでは、リレーショナルモデルのようなある種のブラックボックス的なデータベースシステムを作るという発想は受け入れられにくかったのかもしれません。階層型データベースシステムを熟知した職人プログラマからすると、自分たちのテクニックがそうそう簡単に自動化できるはずがない、できてたまるか、という思いもあったのかもしれません。
そんなわけで、世の中にリレーショナルモデルという革新的な一石を投じたCodd博士がいるIBMは、実は世界で最初のリレーショナルデータベースシステムの開発には乗り出していなかったのです。今うまく行っている方法があると、なかなかそれを捨てられない。イノベーションのジレンマは歴史のあらゆる所に顔をのぞかせます。
しかしながら、Codd博士の発表した論文に目をつけた一人の研究者がいました。その名は Michael Stonebraker博士。世界で最初のリレーショナルデータベースシステムの開発プロジェクトとなるINGRESを率い、そしてその後にはINGRESの後継としてPostgresの開発を手がけたその人です。
Stonebraker博士はCodd博士の発表したリレーショナルモデルの論文に感銘を受け、リレーショナルモデルに基づいたデータベースシステムを開発するべくINGRESプロジェクトを開始します。時は1973年、Codd博士の論文発表から3年が経とうとしている頃でした。
この頃、コンピュータ業界では新たな潮流が生まれつつ有りました。ミニコンピュータの台頭です。ミニコンピュータとは、いわゆる現在のパーソナルコンピュータの先駆けともいえる、安価なコンピュータシステムのことです。当時のコンピュータ業界では、IBMのつくるいわゆるエンタープライズ向けの高価なメインフレームマシンが大きなシェアを占めていたのですが、それに手を出せない人たちが飛びついたのがミニコンピュータでした。そして、ミニコンピュータ市場の勃興に呼応するように、ベル研究所ではKen Thompson 達によってミニコンピュータ上で動作する汎用オペレーティングシステムUNIXの開発プロジェクトが始まります。
UNIXはもともとアセンブリで実装されていましたが、Dennis Ritchie 達によってUNIX開発のためにC言語が開発され,1973年にはC言語に移植されました。そう、まさにINGRESプロジェクトが始まったその年です。ミニコンピュータ、そしてUNIXに出会った Stonebraker 博士は、これを開発環境として使うことを決意します。開発マシンとして選ばれたのが、DEC(Digital Equipment Corporation)のPDP-11/70でした。ちなみに、UNIXが最初にベル研究所以外の場所でインストールされたのがこのINGRESプロジェクトであり、インストール時には Ken Thompson と Dennis Ritchie が5MBのディスクを抱えてやってきたそうです。
こうして、世界初のリレーショナルデータベースシステムを開発するべくINGRESプロジェクトは産声をあげたのです。
次回(未定)、INGRESによって生み出されたリレーショナルデータベースシステムの技術。乞うご期待。
宣伝
先月末のいい肉の日に性能測定ツールPerfMonger 0.5.0をリリースしました。データベースサーバの性能測定のお供に、是非どうぞ。
ツイート