Wasm を正式にサポートする SQLite 3.40 がリリース – Web SQL が生まれ変わる? • DEVCLASS

SQLite チームはバージョン 3.40.0 をリリースし、Wasm へのコンパイルを公式にサポートしています。

これにより、Web 開発者はローカル データベース クエリに SQL を使用し、ブラウザーのローカル ストレージまたはセッション ストレージ、またはできれば OPFS (Origin-Private FileSystem) を使用できますが、これに対するサポートは現在制限されています。 「2022 年後半の時点で、必要な API を備えているのは Chromium から派生したブラウザーの最新バージョンだけです」と、SQLite の作成者は述べています。

もう 1 つの問題は、SQLite の Wasm サポートがまだベータ版であり、次のリリースで最終化されることが期待されていることです。

SQLite は組み込みのオープン ソース SQL データベース エンジンです。 Oracle や SQL Server などと直接競合することはありませんが、特に macOS、Windows、Android、iOS の一部として出荷されているため、非常に人気があります。

これは、2009 年に行われ、2010 年に標準として放棄されたブラウザでの SQLite の実装である Web SQL を思い出す開発者にとって既視感のように感じるかもしれません。しかし、仕様作業は停止しています。 仕様は行き詰まりに達しました。関心のある実装者はすべて同じ SQL バックエンド (Sqlite) を使用していますが、標準化の道を進むには複数の独立した実装が必要です。」

それにもかかわらず、2021 年 10 月にリリースされた Chromium 97 でサードパーティのコンテキストのために非推奨となり、削除されましたが、Google Chrome は引き続き Web SQL と共に出荷されます。

SQL はリレーショナル データを使用するための標準であり、ブラウザー API に SQL を含めることは、ますますリッチになる Web アプリケーションのコンテキストで理にかなっています。 Google が Web SQL を放棄することに消極的であることは、開発者支持者である Thomas Steiner によるこのドキュメントで見ることができます。彼は、IndexedDB などの Web SQL の公式の代替は、「キー/値ストアと構造化データに関しては強みを示していますが、認められています。また、強力なクエリ言語がないなどの弱点もあります。 人々が Web 上の SQL を望むのには理由があります。」

12 年前の W3C の声明にもかかわらず、Web SQL は Chromium から完全に削除されたわけではなく、Steiner 氏は、「最後のステップは、すべてのコンテキストで Web SQL を完全に削除することですが、日付は設定されていません」と述べています。

SQLite の発表は、ブラウザでの SQL に対する Google の熱意と関連していることが判明しました。 「私たちは SQLite コミュニティと協力して、WebAssembly (Wasm) に実装された SQLite に基づく Web SQL の代替品について取り組んでおり、これは近い将来にリリースされる予定です。 ドロップインの代替品を探している開発者向けに、shim スクリプトを提供できるかどうかを調査しています」と Steiner 氏は述べています。

なぜ WEB SQL は放棄されたのですか? SQLite は問題であると同時に解決策でもありました。 このエンジンは信頼性、パフォーマンス、およびサイズが小さいことで高く評価されているため、Web SQL の実装は単に SQLite API を使用するのではなく、SQLite でした。 これにより、Web 標準の要件に反する特定の製品への依存が作成されました。 「すべてのブラウザー開発者は、プラットフォームの一部として SQLite を受け入れる必要があります。 これはさまざまな理由で不可能かもしれませんが、少なくともその理由の 1 つは、すべての Web ブラウザが SQLite 内の潜在的なセキュリティ問題に直面しているということです」と、Mozilla のソフトウェア エンジニアである Vladimir Vukićević は 2009 年に述べています。

その結果、Web SQL は廃止されましたが、ローカル ストレージへの SQL クエリに対する開発者の要求は満たされませんでした。 Wasm にコンパイルされた SQLite は、ブラウザーに同梱されるのではなく、アプリケーションの一部としてダウンロードされるため、この問題を解決します。

Leave a Comment

Your email address will not be published. Required fields are marked *