PGlite 可嵌入 WASM PostgreSQL
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/pglite-embeddable-wasm-postgres
技能介绍
为什么需要它
前端应用想做本地数据持久化,传统方案要么依赖后端数据库,要么用 IndexedDB / localStorage 自己拼装存储层。前者有网络往返延迟,后者缺少 SQL 查询能力,数据模型一复杂就容易失控。更麻烦的是,当你需要一个完整的数据库事务、联表查询或聚合函数时,这些轻量方案往往力不从心。PGlite 想解决的问题就是:能不能在浏览器里跑一个真正的 PostgreSQL,而且不用搭服务器?
它是怎么工作的
PGlite 本质上是一个用 WebAssembly 编译的 PostgreSQL 构建版本,打包成 TypeScript 库。核心能力包括:
- 完整 SQL 支持:你可以在浏览器或 Node.js 环境里执行标准 SQL 语句,包括事务、子查询、窗口函数等
- 多种运行时:除了浏览器,还支持 Node.js、Bun 和 Deno
- 两种持久化模式:可以作为临时内存数据库使用,也可以持久化到文件系统(Node/Bun/Deno)或
IndexedDB(浏览器) - 体积可控:gzip 后仅约 3.7MB,对于前端应用来说可以接受
关键步骤上,它把 Postgres 编译成 WASM 模块,通过 TypeScript API 暴露数据库操作接口。你不需要连接远程服务,直接在应用进程内就能完成建表、插入、查询和事务处理。
适用边界与注意事项
需要注意几点:
- 资源占用:虽然体积不大,但实际运行时内存消耗取决于你加载的数据量和并发连接数
- 构建要求:如果要从源码编译 WASM 模块,需要 Docker、Node v20+ 和 pnpm 工具链
- 并发模型:浏览器环境下数据库运行在主线程或 Worker 中,高并发写入场景需要自行评估性能
- 持久化限制:浏览器端的
IndexedDB存储受浏览器配额和清理策略影响,不适合存储超大数据量
使用场景
- 前端原型开发时,需要在浏览器里快速验证 SQL 查询逻辑,不想先搭后端服务
- 离线优先的网页应用,要求数据能持久化到浏览器且支持完整事务处理
- Node.js CLI 工具需要本地临时数据库做数据清洗,不想安装 PostgreSQL 服务
- 多端同步应用的本地缓存层,要求在浏览器和 Node 环境用同一套 SQL 接口操作数据
适合人员
- 前端工程师,想在浏览器端做数据驱动的交互原型,避免每次改查询逻辑都重启后端
- 全栈开发者,为离线优先应用设计本地数据层,需要保证 SQL 查询能力和事务一致性
- Node.js 工具开发者,需要轻量级嵌入式数据库处理临时数据,不想维护独立数据库服务
- WASM 技术研究者,关注 PostgreSQL 在非传统服务器环境下的运行时表现和能力边界