添加了 SQLite WASM 支持以在 Web 瀏覽器中使用 DBMS

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 應用程序存儲在 WASM 版本的 SQLite 中的數據可以位於當前會話中(頁面重新加載後丟失),也可以保留在客戶端(跨會話保留)。

對於永久存儲,後端已準備好將數據放在本地文件系統上 使用 OPFS(Origin-Private FileSystem,文件系統訪問 API 的擴展,目前僅在基於 WebKit 和 Chromium 的瀏覽器中可用)和基於 window.localStorage 和 window.sessionStorage API 的瀏覽器本地存儲。

使用 localStorage/sessionStorage 時,數據被映射到適當的鍵/值存儲,而使用 OPFS 時,有兩種選擇:使用 WASMFS 模擬虛擬 FS,以及提供基於 SQLite 的 VFS 層的單獨 sqlite3_vfs 實現。 .

Emscripten 編譯器用於以 WASM 表示形式構建 SQLite. 結果是 sqlite3.js 和 sqlite3.wasm 文件,您可以將它們包含在您的 JavaScript 項目(HTML 和 JavaScript 示例)中。

具體目標 提到了這個項目:

除非在非目標中註明,為 sqlite3 C API 提供或多或少完整的功能包裝,只要 WASM 與 C 的功能奇偶校驗允許。事實上,至少提供以下 API。

  • 綁定一個在使用上盡可能接近原生的低級 sqlite3 API。
  • 更高級別的 OO API,更像 sql.js 和 node.js 風格的實現。
  • 一個基於 worker 的 API,通過 worker 消息與上述 API 進行通信。 這設計用於主線程,在工作線程上安裝較低級別的 API,並通過工作消息與它們通信。
  • Worker API 的基於 Promise 的變體,完全隱藏了用戶的線程間通信方面。
  • 盡可能使用可用的 JS API 支持客戶端持久存儲。 在撰寫本文時,這包括源私有文件系統 (OPFS) 和(非常有限的)通過 window.localStorage 和 .window.sessionStorage 後端存儲

至於 非特定目標:

  • 由於 WASM 是一種以 Web 為中心的技術,而 UTF-8 是該領域的編碼之王,因此目前沒有支持與 UTF3 相關的 sqlite16 API 的計劃。
  • 雖然對瀏覽器外 WASM 運行時的支持很普遍,但該項目目前(2022 年末)僅專注於瀏覽器目標。 儘管與 Web 相關的實現細節優先,並且 API 的 JavaScript 組件專門針對瀏覽器客戶端,但較低級別的 WASM 模塊“應該”在非 Web WASM 環境中工作。
  • 與舊平台或小眾平台的兼容性。 WASM 專為現代網絡而設計,需要現代平台。 同樣,棄用的 sqlite3 庫選項將從 WASM 界面中完全刪除。

WebAssembly 支持的代碼已添加到項目的主存儲庫中。 與基於 SQLite 的 WebSQL API 不同,WASM SQLite 與瀏覽器完全隔離,不會影響其安全性(在 SQLite 中存在多個可通過 WebSQL 攻擊 Navigator 的漏洞後,Google 決定放棄對 Chrome 中的 WebSQL 的支持) )。

最後,如果你是 有興趣了解更多,您可以查看詳細信息 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。