添加了 SQLite WASM 支持以在 Web 浏览器中使用 DBMS

SQLite的

是一个符合 ACID 的关系数据库管理系统,包含在一个用 C 编写的相对较小的库中

MGI 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. 权利:您可以随时限制,恢复和删除您的信息。