本文正在参与「技能专题19期 漫谈数据库技能」活动

  • 原文链接:chai2010.cn/post/2022/s…
  • 原文作者:chai2010(凹言语作者,KusionStack作者)

文章目录

  • 1. WASM 是什么
  • 2. SQLite 官方支撑 WebAssembly
  • 3. 在浏览器体验 SQLite
  • 4. 项目的具体目标

SQLite 官方的 wasm 项目总算来了!这表明 WebAssembly 在 SQLite 社区完全进入工业级使用阶段!

1. WASM 是什么

WebAssembly,又名 WASM,是一种规范,它界说了一种初级编程言语,合适 (A) 作为与许多其他言语穿插编译的目标,以及 (B) 通过浏览器中的虚拟机运行。它在设计时考虑了通过 JavaScript 编写脚本,它供给了一种将 C 代码(以及其他代码)编译为 WASM 并通过 JavaScript 编写脚本的办法,尽管 JavaScript 和 C 之间还存在巨大的编程模型差异,但它为不同言语和 JS 的交互带来了规范桥梁。

依据Ending 规律:“所有能够用WebAssembly完成的终将会用WebAssembly完成”。SQLite 官方支撑 WASM 只是再次证明和强化了规律有效性。实际上,在很早之前网上就有许多依据 LLVM 或 Emscripten 构建的 SQLite 库,它们最终能够被包装为 JS 库。

扩展阅览:WASM 作为 W3C 的 第 4 个规范,已经在不同的领域取得巨大的进展。比方 Docker 发布集成 WebAssembly 的首个技能预览版。一起大量编程言语已经开端支撑 WASM 平台(完整列表可参考wasmlang.org/),国内的 Go+、凹言语、KCL 装备言语 等都把对 WASM 的支撑作为较高的优先级。关于 WASM 的更多信息能够关注 《WebAssembly规范入门》。

2. SQLite 官方支撑 WebAssembly

sqlite.org/wasm/doc/ck…

SQLite3 官方支持 WebAssembly

其实早在 2022 年 9 月,Google 的 Chrome 开发团队宣布与 SQLite 开发团队合作,并开发了 SQLite 的 WebAssembly 版别,作为代替的 Web SQL 数据库 API。WebAssembly 起源于 SQLite 开发团队的尽力。

3. 在浏览器体验 SQLite

打开网址sqlite.org/fiddle/

SQLite3 官方支持 WebAssembly

4. 项目的具体目标

SQLite3 官方支持 WebAssembly

依据官网介绍,主要有 4 个目标:

  • 绑定一个初级的 sqlite3 API,在使用方面尽可能挨近原生 API。
  • 更高级别的面向对象风格 API,类似于 sql.js 和 node.js 款式的完成。
  • 依据 Worker 的 API,以支撑多线程环境更容易使用 SQLite 功能。
  • 依据 Worker API 的 Promise 包装,对用户完全躲藏了跨线程通信方面复杂性

不在此列的特性:

  • WASM 作为 Web 规范,我们只认 UTF8 一种编码格局,UTF16 支撑暂无方案
  • WASM 尽管不局限于 Web 环境,可是 WASM 版别的 SQLite 依然是聚焦 Web 环境的场景
  • WASM 只支撑较新的特性,老旧特性将被乘机清除掉

简而言之,在供给底层 API 才能的一起,针对面向对象、多线程等环节供给简单易用的 API。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。