7k star,一个好玩的开源软件
PGlite: 轻量级的Postgres WASM构建
工具简介
PGlite是由ElectricSQL开发的轻量级Postgres构建,打包为WebAssembly(WASM)并集成到TypeScript客户端库中。它允许在浏览器、Node.js、Bun和Deno环境中运行Postgres,而无需安装任何其他依赖项。PGlite的压缩包仅有3MB,并支持多种Postgres扩展,包括pgvector¹。
如何快速开始
浏览器环境
安装和导入:
你可以使用常用的包管理器安装PGlite,或者通过CDN引入:import { PGlite } from "@electric-sql/pglite"; // 或者使用CDN import { PGlite } from "https://cdn.jsdelivr.net/npm/@electric-sql/pglite/dist/index.js";
创建数据库实例:
创建一个内存中的Postgres实例:const db = new PGlite(); await db.query("select 'Hello world' as message;"); // 返回结果: { rows: [ { message: "Hello world" } ] }
持久化数据库:
如果需要将数据库持久化到indexedDB:const db = new PGlite("idb://my-pgdata");
Node.js和Bun环境
安装:
使用npm安装PGlite:npm install @electric-sql/pglite
导入和使用:
import { PGlite } from "@electric-sql/pglite"; const db = new PGlite(); await db.query("select 'Hello world' as message;"); // 返回结果: { rows: [ { message: "Hello world" } ] }
持久化到文件系统:
const db = new PGlite("./path/to/pgdata");
工具特点
轻量级:
PGlite的压缩包仅有3MB,适合在资源受限的环境中使用¹。多环境支持:
PGlite可以在浏览器、Node.js、Bun和Deno中运行,提供了极大的灵活性¹。无需额外依赖:
PGlite无需安装任何其他依赖项,即可在多种环境中运行Postgres¹。支持Postgres扩展:
PGlite支持多种Postgres扩展,包括pgvector,这使得它在处理复杂数据类型时非常强大¹。持久化选项:
PGlite不仅可以作为一个临时的内存数据库使用,还可以将数据持久化到文件系统(Node.js/Bun)或indexedDB(浏览器)中¹。单进程模式:
由于WASM的限制,PGlite采用单进程模式运行,这与传统的Postgres多进程模型不同¹。这种模式主要用于命令行操作和恢复过程¹。高效的查询处理:
PGlite能够高效地处理SQL查询,提供了与传统Postgres相似的性能和功能¹。
结论
PGlite作为一个轻量级的Postgres WASM构建,提供了在多种环境中运行Postgres的能力,且无需额外依赖。它的轻量级特性、多环境支持和持久化选项使其成为开发者在构建实时、反应式和本地优先应用时的理想选择。
¹: GitHub – electric-sql/pglite