SQL.js v1.13 发布:现代工具链升级与数据库监控新特性

SQL.js v1.13 发布:现代工具链升级与数据库监控新特性

sql.js sql.js:这是一种在浏览器中运行SQL的实现,无需服务器支持。它允许开发者在前端执行SQL查询和操作数据库。 sql.js 项目地址: https://gitcode.com/gh_mirrors/sq/sql.js

SQL.js 是一个将 SQLite 数据库引擎编译为 WebAssembly 的 JavaScript 库,它允许开发者在浏览器和 Node.js 环境中运行完整的 SQLite 数据库。这个轻量级解决方案为 Web 应用带来了本地数据库能力,无需服务器端支持即可实现复杂的数据存储和查询功能。

SQLite 核心引擎升级至 3.49 版本

SQL.js v1.13 最重要的更新是将底层 SQLite 引擎升级到了 3.49 版本,这一升级带来了显著的性能提升和新功能支持:

查询优化器改进

新版本对查询规划器进行了多项优化,特别是在处理复杂查询时表现更为出色。对于包含星型连接(star joins)的查询,优化器现在能够更智能地选择执行计划,减少不必要的计算开销。同时,对 IN 操作符的处理也进行了改进,使得包含大量 IN 条件的查询执行效率更高。

新增 SQL 功能

开发者现在可以使用 SQLite 3.47+ 引入的多个新特性:

  • 增强的 iif() 函数现在支持多个参数,提供了更灵活的条件表达式处理能力
  • JSON 操作符 ->> 现在支持右侧负索引,简化了从 JSON 结构中提取元素的操作
  • 新增 json_pretty() 函数,能够生成格式化的 JSON 输出,便于调试和展示
  • 数值字面量现在支持使用下划线作为分隔符(如 1_000_000),提高了大数字的可读性
  • 日期时间函数增加了 ceilingfloor 修饰符,为时间计算提供了更多选择

Emscripten 4 工具链升级

SQL.js 现在使用 Emscripten 4 进行编译,这一重大更新带来了底层架构的现代化改进:

现代 JavaScript 输出

Emscripten 4 生成的 JavaScript 代码更加符合现代标准,虽然仍然保持对旧浏览器的兼容性,但在支持现代 JavaScript 特性的环境中能够获得更好的性能表现。这种改进对于大型数据库操作尤其有益,可以减少解析和执行开销。

LLVM 编译器升级

底层编译器工具链已更新至 LLVM 19.1.6,这一升级带来了更高效的代码生成和优化能力。对于 SQL.js 用户而言,这意味着更紧凑的 WASM 二进制文件和潜在的性能提升,特别是在复杂查询和大量数据操作场景下。

Node.js 工作线程兼容性

新版本显著改进了在 Node.js 环境中的工作线程支持:

  • 工作线程脚本现在完全兼容 Node.js 的原生 worker_threads 模块
  • 开发者可以更轻松地在 Node.js 应用中实现数据库操作的并发处理
  • 移除了对 Puppeteer 的测试依赖,转而使用 Node.js 原生工作线程进行测试,简化了开发环境配置

新增 updateHook 数据库监控 API

v1.13 版本引入了一个强大的新特性——Database.updateHook API,它允许开发者监控数据库中发生的所有数据变更:

db.updateHook(function(op, dbName, tableName, rowid) {
    console.log(`操作类型: ${op}, 数据库: ${dbName}, 表: ${tableName}, 行ID: ${rowid}`);
});

这个低层级 API 提供了以下功能:

  • 实时监控 INSERT、UPDATE 和 DELETE 操作
  • 获取变更发生的具体数据库、表名和行ID信息
  • 可用于实现审计日志、数据同步或缓存失效等高级功能

开发者工具改进

为了提升开发体验,新版本增加了专门的 worker 调试脚本,帮助开发者更容易地诊断和解决工作线程环境中的问题。同时,测试套件现在更加健壮,特别是针对工作线程相关功能的测试覆盖率有所提高。

总结

SQL.js v1.13 通过升级核心引擎和工具链,为开发者带来了更强大的数据库能力和更现代化的开发体验。无论是性能优化、新功能支持还是开发工具改进,这个版本都标志着 SQL.js 项目向着更成熟、更专业的方向迈进了一大步。对于需要在浏览器或 Node.js 环境中使用 SQLite 的开发者来说,升级到 v1.13 版本将能够获得更好的性能和更丰富的功能集。

sql.js sql.js:这是一种在浏览器中运行SQL的实现,无需服务器支持。它允许开发者在前端执行SQL查询和操作数据库。 sql.js 项目地址: https://gitcode.com/gh_mirrors/sq/sql.js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

史跃蓉Jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值