HTML5の標準化で表面化したSQLの非互換性問題

2009年5月12日

HTML5の仕様として検討され、先日独立した仕様となったWeb Storageですが、仕様を策定するにあたりSQLの互換性が問題になっています。

Web Storage Editor's Draft

Web Storageは、Webブラウザ上にデータベースを実装し、Webアプリケーションからデータベースへアクセスできるようにする、という仕様です。名前/値のペアのシンプルなデータ形式だけでなく、アプリケーションがSQLを発行して直接データベース操作する方法も提供しようとしています。

しかしデータベースをかじった人であれば誰でもご存じのように、SQLが標準化されているというのはあくまで名目上のことです。実質的には製品ごとにSQLの方言があり、実装レベルもまちまちで互換性はありません。そのため、ある製品で動作したSQL文がそのままほかの製品で動くことは期待できません。

現在のところ、Web Storageの先行実装としてグーグルが開発したGears、アドビのAIR、Safariなどがあり、データベースにはすべてSQLiteを用いています。

しかし今後ほかのデータベース、例えばオープンソースのFirebirdなどを用いたWeb Storageの実装が登場した場合、SQLiteの実装を前提にして動作していたWebアプリケーションが動作しなくなる可能性があります。

だからといって、Web Storageを、SQLiteという特定の実装を前提にした仕様にするわけにもいきません。

そのため、現在Web Storgeのワーキンググループでは、Web StorageのAPIでSQLを用いるのが望ましいことなのかどうか議論しているとのことです。5月9日現在のWeb Storageのエディターズドラフト 第4章 Structured storageにはこう記述されています。

The working group is currently debating whether SQL is the right abstraction for this API.

HTML5 Web Storage and SQL at Vladimir Vukićević

Mozilla CorporationのVladimir Vukićević氏が、ブログ「HTML5 Web Storage and SQL」でこの問題を指摘しています。

Vukićević氏は、SQLiteの特定のバージョンを前提にした仕様は「ひどいもの」だとしています。

Because there are no guarantees that SQLite won't make any incompatible changes. For example, a future SQLite 4 may introduce some changes or some new syntax which wouldn't be supported by earlier versions.
なぜなら、SQLiteが今後のバージョンで過去のバージョンと互換性を持たせるかどうか保証していないからだ。例えば、将来のバージョンであるSQLite 4では、過去のバージョンと互換性のない新しいシンタックスへの変更があるかもしれない。

この問題を解決するには、Webアプリケーションのデベロッパは何を必要としているのか? という問題に立ち返って考えることが必要だというのがVukićević氏の意見。

Instead of all of this, I think it's worth stepping back and consider exactly what functionality web developers actually want.

続いてjLinqや、CouchDBPersevereなどの名前を挙げて、オブジェクト指向データベースの方が、この問題をよりよく解決できるのではないか? と提案しています。

SQL文のサブセットを細かく定義するといった手法では、この問題は解決しないだろうと僕も思います。では、提案されているようなオブジェクトデータベースで解決できるのかどうかというと、そこは詳しくないので分からないのですが、JavaScriptのオブジェクトとうまくマッピングして操作するといった手法を使えば、SQLよりも互換性の問題をうまく解決できるような気がします。

こうした複雑な部分をHTML5の仕様から分離した点は正解だと思いますが、Web Storageの仕様と実装はまだまだ時間がかかりそうですね。

関連記事 on Publickey

関連記事 on the Web

あわせて読みたい

HTML/CSS Web技術 Web標準 Firefox




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本