Web SQL の非推奨化と削除

Web SQL Database API。この API を使用すると、 ユーザーのコンピュータに構造化された方法でデータを保存する SQLite データベース エンジンなど)を 2009 年 4 月に導入 および 2010 年 11 月に放棄されました。 これは Safari の基盤である WebKit に実装され、 Blink エンジン(Chrome に搭載)、Gecko(Firefox に搭載) この機能を実装して WebKit は 2019 年に削除しました

World Wide Web Consortium(W3C) 励まし ウェブデータベースを導入して Web Storage API テクノロジー、 localStorage および sessionStorage, または IndexedDB。 これらのテクノロジーは、Key-Value ストアと Cloud Storage に関して 構造化データの入手が難しいという 欠点があります 強力なクエリ言語を使用できます。ユーザーがウェブでの SQL を使いたいと思うのには理由があります。

Web SQL のサポート終了と削除手順

  • [ 完了。]Web SQL のサポートは終了し、サードパーティ コンテキスト用に削除されました: Chromium 97( 2022 年 1 月 4 日)。
  • [ 完了。]安全でないコンテキストでの Web SQL アクセスは、 Chromium 105( 2022 年 1 月 4 日)以降、警告メッセージ Chrome DevTools の [Issue](問題)パネルに表示されました。

Chrome DevTools の [Issues] パネルに、セキュアでないコンテキストで Web SQL が表示されるという警告が表示される機能は、非推奨になりました。

  • [ 完了。]安全でないコンテキストでの Web SQL アクセスの廃止 Chromium 110 以降( 2022 年 1 月 4 日)。「 機能を引き続き使用する場合は、エンタープライズ ポリシーChromium 110( 2022 年 1 月 4 日)から Chromium 123 に移行 ( 2022 年 1 月 4 日)。
  • [ 完了。]すべてのコンテキストでのウェブ SQL アクセスは、 Chromium 115( 2022 年 1 月 4 日)になっていて、警告メッセージが表示される 。
  • [ 完了。] デプリケーション トライアルから 引き続き使用する Web SQL は Chromium 117 から利用可能になりました ( 2022 年 1 月 4 日)から Chromium 123( 2022 年 1 月 4 日)。 デプリケーション トライアルについて詳しくは、以下をご覧ください。 オリジン トライアルを使ってみる
  • [ 完了。]すべてのコンテキストで Web SQL アクセスが利用できなくなった Chromium 119 から。

次のステップ

冒頭で述べたように Web Storage API たとえば localStorage および sessionStorage, または IndexedDB 標準が優れた代替手段になることが多くありますが、すべてのケースで圧倒的に有利です。

ストレージをウェブ デベロッパーに任せる理由

Wasm の登場により、SQL または NoSQL ソリューションがウェブに登場しました。一例 DuckDB-Wasm であり、もう 1 つは absurd-sql。こうした制作を基に 開発者コミュニティがイテレーションして 新しいストレージを作成できると ブラウザ ベンダーより高速かつ高品質です。

Web SQL を削除するだけではありません。実際 新しい P-MAX キャンペーンを 何か オープンソース コミュニティによって保守され、 修正や新機能を導入する負担なしに、自由に更新できる ブラウザに直接読み込みます。当社の目標は 開発者が独自の ML 環境を ウェブに公開しました

さらに、この例が新しいエコシステムの 発展させる必要があるでしょう。Google Cloud コンソール ファイル システム アクセス ハンドル 最後に、カスタム ストレージ ソリューションを実現できる新しいプリミティブを提供します。 構築しました。

Web SQL のサポートを終了する理由

サステナビリティとセキュリティに関する懸念

Web SQL 仕様はサステナブルに実装できないため、 イノベーションと新機能を追求しています標準の最後のバージョンは文字どおり と述べている 「User Agent は Sqlite 3.6.19" でサポートされている SQL 言語を実装します。

SQLite は最初は 悪意のある SQL ステートメントを実行するように設計されているのに、Web SQL を実装すると、 ブラウザはこのとおりに行う必要があります。常に最新のセキュリティとコンプライアンスの 安定性の修正により、Chromium での SQLite の更新が指示されます。これは直接的な SQLite 3.6.19 とまったく同じように動作するという Web SQL の要件と競合します。

API シェイプ

Web SQL は、経過時間を表示する API でもあります。2000 年代後半の子どもであることから 「コールバックの地獄」の典型的な例です。次のコードサンプルのように (提供元: Nolan Lawson) 説明します。ご覧のとおり、SQL ステートメント( SQLite SQL 言語)は文字列として渡されます。 変換できます。

openDatabase(
  // Name
  'mydatabase',
  // Version
  1,
  // Display name
  'mydatabase',
  // Estimated size
  5000000,
  // Creation callback
  function (db) {
    db.transaction(
      // Transaction callback
      function (tx) {
        // Execute SQL statement
        tx.executeSql(
          // SQL statement
          'create table rainstorms (mood text, severity int)',
          // Arguments
          [],
          // Success callback
          function () {
            // Execute SQL statement
            tx.executeSql(
              // SQL statement
              'insert into rainstorms values (?, ?)',
              // Arguments
              ['somber', 6],
              // Success callback
              function () {
                // Execute SQL statement
                tx.executeSql(
                  // SQL statement
                  'select * from rainstorms where mood = ?',
                  // Arguments
                  ['somber'],
                  // Success callback
                  function (tx, res) {
                    // Do something with the result
                    var row = res.rows.item(0);
                    console.log(
                      'rainstorm severity: ' +
                        row.severity +
                        ',  my mood: ' +
                        row.mood,
                    );
                  },
                );
              },
            );
          },
        );
      },
      // Error callback
      function (err) {
        console.log('Transaction failed!: ' + err);
      },
      // Success callback);
      function () {
        console.log('Transaction succeeded!');
      },
    );
  },
);
<ph type="x-smartling-placeholder">

もしこのコードを実行しても 作成されたテーブルを Chrome DevTools で検査する 結果は次のとおりです。

Chrome DevTools の [Web SQL] セクションを調べると、mydatabase というデータベースに、mod(テキスト)と severity(整数)という列を含む「rainstorys」というテーブルがあることがわかります。1 つのエントリは「暗い気分」で、重大度は 6 です。

実装者によるサポートの不足

あまり知られていない API の形(少なくとも今の視点では)は別として、Mozilla は たくさんあった 懸念 SQLite で構築される Web SQL について:

「Google では、[SQLite] は一般的なウェブに公開される API の正しい基盤ではないと考えています とりわけ重要なのは、信頼できる SQL のサブセット化された標準の標準です。また、組織に対する変更を SQLite に変更し、後でウェブに影響するようにします。また、主要なブラウザの活用は考えていません。 リリース(およびウェブ標準)を SQLite にすることをおすすめします。」

Mozilla の懸念については、 その他の歴史については、 W3C Web Applications Working Group の議事録 (さらに詳しい情報については、 IRC ログ)と、 メーリング リストのアーカイブ)。 また Nolan Lawson のブログ投稿 何が起きたのかがよくわかります。

フィードバック

このガイドでお知らせしたサポート終了の手順について何かご不明な点がある方は、 ご意見やご感想がありましたら、 blink-dev メーリング リスト。 このグループのメンバーは、誰でも参加でき、誰でも投稿できます。

謝辞

この記事は Joe Medley によってレビューされ、 Ben Morss Joshua Bell