本文正在参与「技能专题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…

其实早在 2022 年 9 月,Google 的 Chrome 开发团队宣布与 SQLite 开发团队合作,并开发了 SQLite 的 WebAssembly 版别,作为代替的 Web SQL 数据库 API。WebAssembly 起源于 SQLite 开发团队的尽力。
3. 在浏览器体验 SQLite
打开网址sqlite.org/fiddle/

4. 项目的具体目标

依据官网介绍,主要有 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。