T1#research
SEQUEL 論文と System R ── SQL はここから始まった

メタデータ
- 日付
- 年代
- 1970s
- Tier
- T1
- 参照年表
- データベースの歴史
- 出典数
- 07
- 関連項目
- 02
- Tags
- #research
1974年5月、ミシガン州アナーバーで開かれた ACM SIGFIDET のワークショップで、IBM サンノゼ研究所の若い研究者2人が16ページの論文「SEQUEL: A Structured English Query Language」を発表した。Donald Chamberlin と Raymond Boyce が提案したのは、ほとんど英文のように読める形でデータベースに問い合わせる方法である。3年後、この言語は母音を失って SQL になる。
この記事が扱うのは、Codd の関係モデル論文(1970年)と最初の商用 SQL 製品 Oracle V2(1979年)のあいだの部分 ── 誰が言語を設計し、1974年の論文が実際に何を主張し、System R 計画がそれをどう実装したか、である。
Codd のシンポジウムから SQUARE へ
Chamberlin と Boyce が Ted Codd に初めて会ったのは1972年、Codd がニューヨーク州ヨークタウンハイツの IBM T.J. Watson 研究所で主催したシンポジウムだった。2人とも博士号を取ったばかりで(Chamberlin はスタンフォード、Boyce はパデュー)、CODASYL の Data Base Task Group(DBTG)言語を研究していた。DBTG では、問い合わせとはポインタの網をたどるプログラムのことだった。
Chamberlin は後年、このシンポジウムでの関係モデルとの出会いを啓示だったと書いている。DBTG なら込み入ったプログラムが要る問い合わせが、Codd の関係言語なら数行で書けた。2人は問い合わせを考案しては互いに別の言語で書かせる遊びを始め、そこから「上司より給料の高い社員の名前を求めよ」という例が生まれた。
同時に、壁も見えていた。Codd の関係代数と関係計算は簡潔だが、記号はキーボードで打てず、量化子や束縛変数といった記号論理の概念を前提にしている。最初の試みである SQUARE は、論理の代わりに表に対する「写像(mapping)」で問い合わせを表した。しかし添字を使う記法だったため、やはり打ち込めなかった。
1974年の SEQUEL 論文
1973年、2人は System R 計画に加わるためサンノゼ研究所へ移り、SEQUEL と名づけた新しい言語に取りかかった。
1974年の論文の要旨は、主張をはっきり書いている。束縛変数や量化子に頼らずに、表に対する単純な操作の集合を定め、それが一階述語計算と同等の表現力を持つことを示せる ── というものだ。想定利用者はプログラマだけではない。論文は会計士、技術者、建築家、都市計画家を挙げる。数学的な記法は覚えたがらないが、構造化された言語なら学ぶ意思のある人々である。
論文の最初の例は、今も SQL を書く人が毎日書いている形そのものだ。
SELECT NAME
FROM EMP
WHERE DEPT = 'TOY'
論文は SELECT-FROM-WHERE のブロックを言語の基本構成要素と呼び、対話システムなら空欄を埋めるテンプレートとして利用者に提示できるだろうと述べている。集合関数 SUM・COUNT・AVG・MAX・MIN、GROUP BY、和・積・差の集合演算も備え、巻末の付録に文法の全体を載せている。
SEQUEL は当初から、問い合わせだけでなくデータ定義も担う言語として構想されていた。対になる報告「Using a Structured English Query Language as a Data Definition Facility」は1973年12月に IBM 研究報告 RJ1318 として出たが、Chamberlin によれば IBM の外では一度も出版されなかった。有名になったのは問い合わせのほうの論文である。
Raymond Boyce の急逝
アナーバーでの発表から約1か月後、Boyce は昼食時に倒れ、脳動脈瘤の破裂で亡くなった。26歳だった。1995年の System R 同窓会で Chamberlin が語ったところでは、亡くなったのは1974年の父の日で、妻と乳児の娘が残された。短い経歴のなかで Boyce は、Codd とともに、現在ボイス・コッド正規形(BCNF)として教えられている正規形にも名を残している。
System R の3つのフェーズ
System R チームが1981年に Communications of the ACM へ書いた回顧論文は、計画を3つのフェーズに分けている。これらはしばしば「1974年」の一語に押し込まれるが、実際には5年余りにわたる。
| フェーズ | 時期 | 内容 |
|---|---|---|
| Phase Zero | 1974年〜1975年の大半 | SEQUEL のサブセットを実行する単一ユーザーのインタープリタ。Raymond Lorie のアクセス法 XRM の上に PL/I で書かれた。副問い合わせは扱えたが結合(join)は扱えなかった。コードは計画どおり破棄された |
| Phase One | 1976年の大半〜1977年 | 多ユーザーの完全版。ロックとログを担う格納層 RSS と、認可とアクセスパス選択を担う RDS の2層構成 |
| Phase Two | 1978年〜1979年 | サンノゼ研究所、IBM 社内の拠点、3つの顧客拠点での評価。最初の設置は 1977年6月 |
Phase One の2つの設計判断が、その後のすべての SQL システムの形を決めた。一つは Lorie の示した方法で、SQL 文を System/370 の機械語の断片を組み合わせたコンパクトなルーチンへコンパイルする。これによって SQL は、場当たり的な問い合わせだけでなくトランザクション処理にも使えるものになった。もう一つはオプティマイザで、IBM が Patricia Selinger の功績とする仕事である。アクセスパスを推定コストで選び、そのコストは CPU 時間と I/O 回数の重み付き和とされた。
言語は機械だけでなく人間でも試された。スタッフにいた言語学者 Phyllis Reisner は、サンノゼ州立大学の学生を集めて数か月にわたり SEQUEL を教え、学べるかどうかを調べた。Boyce・Chamberlin との共著で SQUARE と SEQUEL を比較した人間工学的評価が、1975年の National Computer Conference で発表されている。Chamberlin の後年の総括は苦笑まじりで、懸命に教えれば大学生に SEQUEL は教えられたし、学生の間違いの大半は構文とは無関係だった、というものだった。改訂版の設計「SEQUEL 2」は、初期利用者の経験を一部取り入れて、1976年11月の IBM Journal of Research and Development に載った。
顧客拠点は、同窓会の参加者の記憶では、ジェットエンジン部品の在庫管理に使ったハートフォードの Pratt & Whitney Aircraft、FDA への申請を支える臨床試験の結果を蓄積したカラマズーの Upjohn、そして少し遅れて Boeing だった。どの拠点でも System R は研究目的での設置に限られ、サポート付きの製品ではなかった。
SEQUEL が SQL になった経緯
Chamberlin は2012年の回想で、1977年に商標上の問題から SEQUEL の名を SQL に縮めたと書いている。申し立ての主について、1995年の同窓会では「たしか」と断ったうえで、SEQUEL は自社の登録商標だと主張した英国の Hawker Siddeley 社の名を挙げた。対処は機械的だった。APL のように L で終わる3文字の言語名にならって、SEQUEL から母音を抜いたのは自分だったと思う、と彼は語っている。
1981年の回顧論文も、言語を「SQL(旧称 SEQUEL)」と記している。どちらの資料も、改名の時期を年より細かくは示していない。
研究試作から業界標準へ
1981年の論文によれば、System R の研究試作はのちに DOS/VSE 向けの IBM 製品 SQL/Data System へと発展した。MVS 向けの DB2 がそれに続く。研究所から IBM 製品までの遠回りと、先に SQL を出荷したスタートアップの話は Oracle の記事に譲る。アナーバーの論文から12年後には、言語そのものが正式な国家規格にもなった ── 1986年の最初の SQL 標準を参照。
2012年に Chamberlin 自身が下した評価は、SQL は1974年の自分と Boyce が期待してよい理由のあった以上に成功した、というものだ。ただし、その成功は計画とは違う方向に出た。2人は計画担当者のような専門職がその場で問いを投げるための言語として設計し、普通の人が「walk up and use it(近づいてすぐ使える)」ほど簡単にしたかった。実際には、訓練を受けたデータベースの専門家が、預金やカード決済やオンラインオークションのような反復的なトランザクションを実装するのに使う言語になった、と彼は書いている。
この落差こそが、1974年の論文が成し遂げたことの尺度である。会計士が訓練なしにデータベースを使えるようにはならなかった。代わりに、コンパイルされ、最適化され、世界のトランザクションを運べるほど速く動く構文を関係モデルに与えた。結果として、そちらのほうがはるかに大きな意味を持った。
よくある質問
- SQL はいつ発明されたのか
- 原型の SEQUEL は1974年5月、IBM の Donald Chamberlin と Raymond Boyce の論文で公表されました。設計作業は1973年に始まっており、名前が SQL になったのは1977年です。
- なぜ SEQUEL は SQL に改名されたのか
- 1977年に商標上の問題が起きたためです。Chamberlin の回想では、英国の航空機メーカー Hawker Siddeley が SEQUEL を自社の登録商標だと申し立て、母音を抜いて SQL にしました。
- System R は製品だったのか
- いいえ。IBM サンノゼ研究所の研究用システムで、1977年6月からの設置先でもすべて実験目的に限られていました。のちに DOS/VSE 向けの製品 SQL/Data System へと発展しています。
出典
論文本文(IBM Almaden が公開していた PDF の Wayback 採取)。 要旨の主張、 SELECT-FROM-WHERE ブロック、 想定利用者、 SQUARE との関係。 ACM DL の書誌は会議年を1976と誤記しているが、 会議は1974年
Phase Zero / One / Two の年代、 XRM 上の PL/I インタープリタ、 結合を欠いた試作、 RSS と RDS、 1977年6月の初設置、 SQL/Data System への発展
1972年の Codd のシンポジウム、 SQUARE、 1973年のサンノゼ移動、 Boyce の死去(26歳)、 1977年の改名、 「walk up and use it」
当事者の座談記録。 Hawker Siddeley の商標の件、 母音を抜いた命名、 Reisner の被験者実験、 Pratt & Whitney・Upjohn・Boeing での共同研究、 Boyce の逝去日
二次資料The relational database — IBM Heritage
System R が1973年に着手されたこと、 Selinger のコストベース最適化、 Lorie のコンパイラ
最終更新: