SQLの未来

 先週の土曜にビズアイユさん、坂井さんともに、慶應大学日吉キャンパスへ出かけてきました。目的は、遠山元道準教授の研究室へお邪魔してSuperSQL という新言語のお話を聞くこと。6時間超にわたって遠山先生自らプレゼンとQA までしていただくという非常に贅沢な時間でした。

 SuperSQL は、名前から連想するような SQL の拡張言語ではありません。これは遠山先生も強調していたのですが、私の理解した範囲で表現すると、これは HTML、LATEXAjax など「表示」をつかさどるプレゼンテーション・レイヤーと SQL というミドル・レイヤーをラップする言語です。

 もともと、歴史的には SQLプレゼンテーションを意識しない言語として開発されました。その目的はあくまで欲しいデータを検索することであって、見せ方は上位レイヤーの仕事なので自分は関知しない、という分業の方針に基づいています。これはモジュールの分離がしやすく拡張性に優れるというメリットがあったため、現在でも踏襲されている方針です。また、HTML と CSS のようにデータとその見せ方を分離するという思想は、Web の世界では珍しくない思想です。SuperSQL は、この二つのレイヤーをまるっと隠蔽したラッパーで、極めて単純なインタフェースを提供するものです。

 実は、こうしたラッパーは、今でも存在しています。Cognos、Microstrategy、BIEE といった BI ツールがそうです。これらのツールは、ユーザが GUI の簡単なインタフェースで求めるデータとそのレイアウトを決めてやると、中で物理 SQL を生成し、その結果セットを HTML や画像に変換してユーザへ返却します。ミドルとプレゼンテーションの二つのレイヤーを統合する機能と言ってよいでしょう。

 SuperSQLも BI ツールも、ユーザがデータ処理に割かねばならないコストを軽減するという共通の目的を持っていますが、これは正しい方向を向いています。何十年も前にコッドが指摘したように、ユーザがやりたいことはデータを取り出すことではなく、取り出されたデータを利用することだからです。これまでのシステムは、前者の処理をエンジニアが肩代わりしてやっていたのですが、本当はそういう仕事は全てシステムに押し付けてしまいたい、というのは DB を使ったことのある人なら誰しも考えることです。

 そのようなわけで、SuperSQL はその基本精神において、正しく SQL を継承しています(この名前は結構考えてつけられている気がする)。ラッパーが実用化されるときに最も大きな問題になるのはパフォーマンスですが(BI の開発案件はみんなこれで死屍累々)、それは現代の技術をもってしても効率的なコードを自動生成することが極めて難しいからです。その難問が解決されるならば、今後広く普及していく可能性のある技術です。