第240819期 – pglite

第240819期 - pglite
7k star,一个好玩的开源软件

PGlite: 轻量级的Postgres WASM构建

第240819期 - pglite

工具简介

PGlite是由ElectricSQL开发的轻量级Postgres构建,打包为WebAssembly(WASM)并集成到TypeScript客户端库中。它允许在浏览器、Node.js、Bun和Deno环境中运行Postgres,而无需安装任何其他依赖项。PGlite的压缩包仅有3MB,并支持多种Postgres扩展,包括pgvector¹。

如何快速开始

第240819期 - pglite

浏览器环境
  1. 安装和导入
    你可以使用常用的包管理器安装PGlite,或者通过CDN引入:

    import { PGlite } from "@electric-sql/pglite";
    // 或者使用CDN
    import { PGlite } from "https://cdn.jsdelivr.net/npm/@electric-sql/pglite/dist/index.js";
    
  2. 创建数据库实例
    创建一个内存中的Postgres实例:

    const db = new PGlite();
    await db.query("select 'Hello world' as message;");
    // 返回结果: { rows: [ { message: "Hello world" } ] }
    
  3. 持久化数据库
    如果需要将数据库持久化到indexedDB:

    const db = new PGlite("idb://my-pgdata");
    
Node.js和Bun环境
  1. 安装
    使用npm安装PGlite:

    npm install @electric-sql/pglite
    
  2. 导入和使用

    import { PGlite } from "@electric-sql/pglite";
    const db = new PGlite();
    await db.query("select 'Hello world' as message;");
    // 返回结果: { rows: [ { message: "Hello world" } ] }
    
  3. 持久化到文件系统

    const db = new PGlite("./path/to/pgdata");
    

工具特点

  1. 轻量级
    PGlite的压缩包仅有3MB,适合在资源受限的环境中使用¹。

  2. 多环境支持
    PGlite可以在浏览器、Node.js、Bun和Deno中运行,提供了极大的灵活性¹。

  3. 无需额外依赖
    PGlite无需安装任何其他依赖项,即可在多种环境中运行Postgres¹。

  4. 支持Postgres扩展
    PGlite支持多种Postgres扩展,包括pgvector,这使得它在处理复杂数据类型时非常强大¹。

  5. 持久化选项
    PGlite不仅可以作为一个临时的内存数据库使用,还可以将数据持久化到文件系统(Node.js/Bun)或indexedDB(浏览器)中¹。

  6. 单进程模式
    由于WASM的限制,PGlite采用单进程模式运行,这与传统的Postgres多进程模型不同¹。这种模式主要用于命令行操作和恢复过程¹。

  7. 高效的查询处理
    PGlite能够高效地处理SQL查询,提供了与传统Postgres相似的性能和功能¹。

结论

PGlite作为一个轻量级的Postgres WASM构建,提供了在多种环境中运行Postgres的能力,且无需额外依赖。它的轻量级特性、多环境支持和持久化选项使其成为开发者在构建实时、反应式和本地优先应用时的理想选择。

¹: GitHub – electric-sql/pglite


© 版权声明

相关文章