HTML5を超えて:データベースAPIとIndexedDBパス

IndexedDBは、大量の構造化データをブラウザーに保存し、インデックスを使用して高性能のデータ検索を実行するための進化するWeb標準です。 Mozillaはこの仕様に技術的に多大な貢献をしており、Firefox 4 (FF RC4でサポート-約Per。)で実装する予定です。 有名なWeb開発者と、Webに構造化データを保存するためのエレガントなAPIの実装について話しました。 Safari、Chrome、およびOperaは、 SQL APIに文字列引数で渡されるSQLクエリを使用するWeb SQL Databaseテクノロジーをサポートしています。 開発の審美的な要素も注目に値するように思われ、そのようなソリューションはクライアントWebアプリケーションにとってあまりエレガントではありません。 IndexedDB仕様の編集者に開発者の意見を伝え、 Microsoft話しました。MicrosoftIndexedDBが Webにとって悪い解決策はないことに気付きました。 Chromeチームの実装が間近に迫っているため、アーキテクチャの選択と、 IndexedDBがWeb SQL Databaseよりも優れたWebソリューションであると思われる理由を説明する必要があります。





Webアプリケーションは、IE 8 +、Safari 4 +、Chrome 4 +、Opera 10.5、Firefox 2+でサポートされているlocalStorageとsessionStorageをすでに利用して、シンプルなJavaScriptインターフェースを使用してキーと値のペアを保存できます。 Web Storage標準 (localStorageおよびsessionStorageを含む)はすでに実装されており、少量のデータの保存には非常に適していますが、大量の構造化データの保存には適していません。 多くのデータベースはサーバー側であり、SQLを使用して構造化データを処理しますが、JavaScript APIでのクライアントでの使用は疑わしいです。



SQL? どのSQLですか?



ほとんどのWeb開発者はSQLに精通しています。 クライアント(JavaScript、CSS、マークアップなど)とサーバー側(PHPやデータベースの操作など)の両方で動作する必要があります。 ただし、SQLが広く使用されているにもかかわらず、SQLテクノロジーを定義する単一の標準はありません。 具体的には、WebDatabase APIのベースとなるSQLiteSQL-92のほとんどをサポートしていますが、顕著なギャップがあります。 しかし、SQLiteは仕様ではなく、すぐに開始できるテクノロジーです! そして、SQL SQLiteのどの部分がサポートしているかを理解できる唯一のドキュメントは、SQLite チュートリアルです。 Web SQLデータベースを適切にするには、SQLのどの部分がWeb開発に重要かを判断することから始める必要があります。 JavaScriptにもっとエレガントな方法が既にあるのに、まったく異なる言語をドラッグするのはなぜですか?



SQLiteの利点とトラップ



SQLiteはアプリケーションにとって非常に便利なテクノロジーのようであり、 Firefox拡張機能と信頼できるコードで利用できるようにしました。 しかし、このAPIをすべてのWebコンテンツに拡張することは適切ではないと思います。特に、必要なSQLのサブセットを説明する明確で広く適用可能な標準がないためです。 さらに、SQLiteの変更が将来Webに影響を与えることは望ましくありません。ほとんどのブラウザーをSQLiteにドッキングすることは賢明ではないと考えています。 IndexedDBにはこの問題はありません。 SQLiteテクノロジーにIndexedDBを実装しても、開発者はSQLiteの変更から隔離されます。 使用されるインターフェイスは、SQLite構文に基づいていません。



美学とウェブ開発者



昨年(2009年-約)、 MozillaでWebストレージについて議論するサミットを開催しました。 Web開発者に、Webの構造化データウェアハウスインターフェイスをどのように見たいかを尋ねてください。 多くの人が、SQLite APIをサポートしていると述べています。 彼らは複数のブラウザでWeb SQL Databaseを実験しましたが、機能するものは単なるアイデアよりも優れています。 それにもかかわらず、誰もが、より良いアーキテクチャの選択ができたらいいのではないかという考えと、より単純なモデルがいかに人生を楽にするかという考えに熱意を表明しました。 その後、開発者がアプリケーションのニーズを完全に満たすと主張するBツリーの最も単純なインターフェイスをどのように記述するかを観察しました。 これにより、他のスキームについて考えるようになりました。 SQLコマンドを記述する文字列の使用にはネイティブJavaScriptの優雅さが欠けていることが明らかになり、代替手段を探し始めました。 Microsoftと一緒に、IndexedDBの提案を提出し、積極的な参加者として標準化プロセスに関与しました。



別の記事では、 IndexedDBとWeb SQL Database比較し、前者の方がセマンティックが単純であることを実証しました。 IndexedDBを使用すると、サードパーティのJavaScriptライブラリでbi-treeインターフェイスを使用して基本的なプリミティブを無視できます。IndexedDBに基づいたBrowserCouchなどのプロジェクトを期待しています。 IndexedDBを使用する最も勇敢なWeb開発者は、SQLのインターフェイスを構築することもできます。 最初にブラウザーで動作するSQLベースのAPIを作成するのは間違っていましたが、そのようなインターフェイスはIndexedDBに基づいて適切に実装できます。






翻訳者から:

私は(まだ完全な成長ではありませんが、時間の問題です)2つのタスクに直面しました:サーバーへのクライアントリクエストの数を減らし、一定の接続を必要とせず、一時的な同期のみを必要とするデスクトップアプリケーションの構築にWeb開発能力を使用することです。

これらの問題を解決するのに役立つテクノロジーの検索を開始すると、IndexedDBおよびWeb SQL Databaseという用語に出会いました。 そのとき、私は興味を持ちました:なぜMozillaは独自の道を進んだのですか?

なぜなら 私は解決策を探し始めたばかりです。これは、翻訳と著者の両方のサイクルの最初の記事であり、これらの技術とその比較について説明するものだと思います。

正しい道筋に導くことができる詳細なコメントを希望し、解決策とその比較の説明でお返しします。




All Articles