Web ブラウザで DBMS を使用するための SQLite WASM サポートを追加

SQLiteの

ACID 準拠のリレーショナル データベース管理システムであり、C で書かれた比較的小さなライブラリに含まれています。

たくさん SQLite 開発者が実装するプロジェクトを開発中 ライブラリをコンパイルする機能 中間 WebAssembly コード これは Web ブラウザーで実行でき、JavaScript 言語で Web アプリケーションからデータベースを操作するのに適しています。

目的 プロジェクトの 機能するJavaScriptリンクを提供することです これは、機能的に SQLite API と同じです。 Web 開発者には、sql.js または Node.js のスタイルでデータを操作するための高レベルのオブジェクト指向インターフェイスが提供され、低レベルの C API と、非同期の作成を可能にする Web Worker メカニズムに基づく API がラップされます。別々のスレッドで実行されるコントローラ。

Web Worker ベースの API を介したスレッド化の複雑さを隠すために、 の変種 メカニズムに基づくプログラミングインターフェース 約束する。

Web アプリケーションが SQLite の WASM バージョンに格納するデータは、現在のセッション内に配置することも (ページのリロード後に失われる)、クライアント側で永続化することも (セッション間で永続化する) こともできます。

永続的なストレージとして、ローカル ファイル システムにデータを配置するバックエンドが用意されています。 OPFS (Origin-Private FileSystem、ファイル システム アクセス API の拡張機能、現在 WebKit および Chromium ベースのブラウザーでのみ利用可能) と、window.localStorage および window.sessionStorage API に基づくブラウザー ローカル ストレージを使用します。

localStorage/sessionStorage を使用する場合、データは適切なキー/値ストアにマップされますが、OPFS を使用する場合は、3 つのオプションがあります: WASMFS を使用して仮想 FS をシミュレートすることと、SQLite ベースの VFS レイヤーを提供する個別の sqliteXNUMX_vfs 実装です。 .

Emscripten コンパイラは、WASM 表現で SQLite を構築するために使用されます。. その結果、JavaScript プロジェクト (HTML および JavaScript サンプル) に含めることができる sqlite3.js および sqlite3.wasm ファイルが作成されます。

特定の目的の このプロジェクトの言及:

ターゲット以外に記載されている場合を除き、SQLite3 C API の機能の多かれ少なかれ完全なラッパーを提供し、WASM の C との同等の機能が許す範囲で提供します. 実際には、少なくとも次の API を提供します.

  • できるだけネイティブに近い低レベルの sqlite3 API をバインドします。
  • より高レベルの OO API で、より sql.js および node.js スタイルの実装に似ています。
  • ワーカー メッセージを介して上記の API と通信するワーカーベースの API。 これは、ワーカー スレッドにインストールされた下位レベルの API を使用して、メイン スレッドで使用するように設計されており、ワーカー メッセージを介してそれらと通信します。
  • ユーザーのスレッド間通信の側面を完全に隠すワーカー API の Promise ベースのバリアント。
  • 可能な限り、利用可能な JS API を使用してクライアント側の永続ストレージをサポートします。 この記事の執筆時点では、これには Source Private File System (OPFS) と、window.localStorage および .window.sessionStorage バックエンドを介した (非常に限定された) ストレージが含まれます。

用として 非特定の目的:

  • WASM は Web 中心のテクノロジであり、UTF-8 はその領域のエンコーディングの王様であるため、UTF3 関連の sqlite16 API をサポートする現在の計画はありません。
  • ブラウザ外の WASM ランタイムのサポートは広く行われていますが、このプロジェクトは現在 (2022 年後半)、ブラウザ ターゲットのみに焦点を当てています。 Web 関連の実装の詳細が優先され、API の JavaScript コンポーネントは特にブラウザー クライアントに焦点を当てていますが、下位レベルの WASM モジュールは非 Web WASM 環境で動作する必要があります。
  • 古いプラットフォームまたはニッチなプラットフォームとの互換性。 WASM は最新の Web 用に設計されており、最新のプラットフォームが必要です。 同様に、非推奨の sqlite3 ライブラリ オプションは、WASM インターフェイスから完全に削除されます。

WebAssembly サポートのコードがプロジェクトのメイン リポジトリに追加されました。 SQLite に基づく WebSQL API とは異なり、WASM SQLite はブラウザーから完全に分離されており、そのセキュリティには影響しません (Google は、WebSQL を介してナビゲーターを攻撃するために悪用される可能性がある SQLite のいくつかの脆弱性の後、Chrome での WebSQL のサポートを中止することを決定しました)。 )。

最後にあなたが それについてもっと学ぶことに興味がある、詳細を確認できます 次のリンクで。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。