Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2009-11-02

ブラウザ上のデータベースに関して

14:28

2009-12-02 版。データベース API の名称変更。


現状の Web Database には Mozilla、Microsoft、Oracle が反対してる。

すなわち、生の SQL をそのまま触らせる現在の仕様には色々問題ある (これは僕の意見) と。


Mozilla のほうはここらへん。Jonas Sicking さんや Vladimir Vukićević (ウキチェヴィッチ?) さんなど。


Oracle のほうは Nikunj Mehta さんが中心。


Microsoft についてはソースを発見できなかったが、Nikunj さんがこう書いてる。下に追記。

There is currently a deadlock that has arisen out of a number of browser vendors refusing to go along with WebDatabase (notably Mozilla and Microsoft) and a lack of an alternative.

asymptotic tight bound: Now published - an alternative to SQL for database storage in Web browsers

その Nikunj さんが中心となって提案しているのが WebSimpleDB という草案。


Mozilla の Atul Varma さんは BrowserCouch という、CouchDB のようなインターフェイスのプロトタイプのライブラリを作ったりしている。


以上。状況が変わったらまた書く。


関連しそうなメールスレッド

標準が特定の SQL 方言に依存すべきではない、という点では一致が取れているように見える。OODB じゃなくても index された JSONQuery で十分じゃないの? などの意見もある。XQuery はどうよ? とか。Apple の Maciej さんとか上述の Jonas さんとかも登場。


WebSimpleDB の利点的なもの。

  • Provides transactional access to a local, persistent data store
  • Provides in-order retrieval of keys
  • Enables efficient query over values
  • Support storage of duplicate values for keys
  • Fully specified as an API and does not require SQL
  • Simpler programming model with both synchronous and asynchronous versions

Web Database は改名しそうな勢い

Hixie さんや Maciej さんも言ってるので改名するでしょう。たぶん Web SQL Database に。

WebSimpleDB ももしかしたら変わるかも。

下に追記。


Microsoft は WebSimpleDB を支持

Microsoft の Pablo Castro さんのメール。完全に見落としてた。

The short story is that we believe Nikunj's WebSimpleDB proposal, which basically describes a minimum-bar web database API and enables a whole set of diverse options to be built on top, is the right thing to do.

Web Data APIs from Pablo Castro on 2009-10-31 (public-webapps@w3.org from October to December 2009)

ただし、Chromium.org の Jeremy Orlow さんは、「最初から規格が全部入りの API を提供しようとするのはこれまでの歴史から見ても間違ってる」的なことを言ってる。

getElementsByTagName とかやってた時代があり、jQuery 等があり、ようやく querySelector が仕様として登場したことなどを考えても、ブラウザは最低限の何でもできる規格だけを提供してあとはライブラリの発展に任せればいいじゃん、という意見。

僕の意見は、Jeremy さんの言ってることはもっともなんだけど、SQLite に依存しすぎな Web Database についてはちょっと違うかなーと思う。今の Web Database 実装は、与えられたものをほぼそのまま SQLite に渡すよ、みたいなことになってるけど、じゃあ SQLite がアップデートしたらブラウザは新しいバージョンにアップデートすべきなの? それとも互換性のために古い版を使うべきなの? という混乱が予想されるし、もし後から便利な API を含めようとした場合、SQL そのものを拡張するなら SQLite からのフォークが必至になってくるし。

また変更があれば追記する。


Web Applications Working Group Teleconference から

11月2日に Web Applications Working Group Teleconference という会議があったもよう。興味深いものがいっぱいあるので書き出してみる。

chaals: at opera, we implemented web db

... we looked at web simple db. we found the nikunj one and simple

chaals: we found Nikunj to be more to our liking

chaals: I think we're likely to ship it

Opera は既に WebDB を実装していて、次バージョンにはおそらく載るだろう。しかし SimpleDB のほうが良いと思っている。


sicking: we don't have a data point

... we've had a lot of discussions, primarily with MS and Oracle

... Oracle stands behind Nikunj

... we've talked to a lot of developers

... the feedback we got is that we really don't want SQL

sicking: I don't think mozilla plans to ship it

Mozilla は実装するつもりはないらしい。

AB: Microsoft's position is that WebSimpleDB is what we'd like to see

... we don't think we'll reasonably be able to ship an interoperable version of WebDB

... trying to arrive at an interoperable version of SQL will be too hard

... what people want is a ...

... we think that WebDB (?) features is a starting point

... we don't plan to add to localStorage

Microsoft も WebDB ではなく SimpleDB を実装する (としたら実装したい)。

we don't plan to add to localStorage というのは、これ↓に対して

jorlow: a large percentage of a lot of the web apps that google is looking at

... would need a large percentage of what is in SimpleDB

... in order to make an extended localStorage usable

... it would be fine to make localStorage do it, but it would require a lot of SimpleDB

jorlow: Google is not happy with the various proposals

Chromium.org の Jeremy Orlow さん曰く、localStorage を拡張してはどうかと。他の反応は良くないみたい。localStorage には複雑なことをやらせないほうがいいだろうという意見が多い。

(僕は SimpleDB を localStorage に統合させるアイデアには賛成だけど、localStorage の API が最初からそういうふうには作られてないので、簡単なことを簡単にできるという利点を捨てることに反対が多い。ただ、cookie、localStorage、WebDB、SimpleDB と同じような仕様が併存している状況は誰にとっても良くないと思う)

IanF: We've implemented WebDB

... we're about to ship it

IanF: I don't think people are in disagreement that it's sad

... it's a bit too late

Google の Ian Fette さん。about to ship it というのはどういうこと? Chrome 3 には既に載ってるけど。

この "it's a bit too late" というのがこの問題を象徴している。

Apple の Maciej さんが言うように↓、もう既に使われているものをやめることはできないということ。

MJS: the Chrome implementation shares some but not quite all of the code

... beside shipping it, web sites have versions that target the iPhone and use it

... we can't easily drop it in the near future for that reason

... In principal, having a storage mechanism that is more sound than localStorage

... but more simple than WebDB would be good

... wrt localStorage, the current bits indeed have race conditions

... but adding APIs could possibly fix it

... SimpleDB / WebDB is probably impossible because of <too much something>

ちょっと Apple が恨めしい…


Web SQL

WebDB が通す SQL の構文について。

とりあえず現在は

User agents must implement the SQL dialect supported by Sqlite 3.6.19.

となっていて、Hixie さんが SQLite の構文をまとめることになった。

<ifette> RESOLUTION: hixie does minimal work to get this to a point the shipping browsers are happy with, if he goes nuts we will put up resources to finish it

Hixie さんとしては、SQLite 以外による実装をする意思が Mozilla にも Microsoft にも無いため、SQL 構文を定めるのは見送りたいとのこと。言い直すと、SQLite 依存に反対する2ブラウザがSQLite を使わずに同機能を実装するのではなく、最初から完全にパスするということなので、それだったら厳格に SQL 構文を定める価値は無いという意見。この仕様はこのまま勧告まで行かずに置いてかれることになるだろうということ。


Mozilla の立ち位置は Jonas Sicking さんのこのメールによく表れている。

Web Database が Web SQL Database に、WebSimpleDB が Indexed Database API に名称変更

Web SQL Database のほうは前から規定路線だったが、Indexed Database API のほうは良い名前がみつからず、Nikunj さんが提案した ISAM という名前も分かりにくい (かつ技術の名前ではないほうがいい) ということで Indexed Database になった。

また、1つの単語ではないのにスペースを入れずに繋げて書く意味がないということで、スペースを入れることになった。

 |