【免费下载链接】pgmicro
An in-process reimplementation of PostgreSQL, backed by a SQLite-compatible storage engine
pgmicro 是一款进程内(in-process)的 PostgreSQL 重新实现,由兼容 SQLite 的 Turso 存储引擎驱动。它专为 AI Agent 场景设计:无需安装数据库服务、无需配置端口,一条命令就能获得一个说 PostgreSQL 方言的微型数据库,并通过内置的 MCP Server 让 AI 助手直接读写数据。本文解析它的无服务器架构,并手把手带你把 MCP Server 接入 AI 助手。
一、为什么 AI Agent 需要"临时数据库"?
传统 AI Agent 处理数据任务时,往往要连上远程 MySQL 或 PostgreSQL 服务——这对"分钟级生命周期"的会话来说太重了。AI Agent 时代的数据库画像正在变化:
- ⚡短生命周期:任务型临时库、会话存储,用几分钟就丢弃
- 📦单用户沙箱:每个 Agent、每个用户一个隔离实例
- 🚫零运维:没有服务进程、没有端口、没有账号体系
SQLite 长期是这类场景的王者,但很多开发者更喜欢 PostgreSQL 的类型系统、JSON 操作符和更强的查询能力。官方 README.md 点明了 pgmicro 的定位:解析 PostgreSQL 语言并直接编译为存储引擎可执行的字节码,既不嵌入 PostgreSQL,也不做 SQL 文本转译。
二、pgmicro 无服务器设计解析
1. 默认内存库,零配置启动
pgmicro 的默认数据库就是:memory:,启动即连上一个瞬态内存数据库:
pgmicro # Connected to a transient in-memory database.需要持久化时,只需传入一个文件路径,生成的就是标准 SQLite 格式文件(file命令会显示SQLite 3.x database),可被任意 SQLite 工具检查。CLI 入口逻辑见 pgmicro/src/main.rs,数据库默认值与--server服务模式的切换都在这里。
2. 原生编译管线:从 PG 语法树到字节码
pgmicro 的编译路径全原生,全程不生成任何 SQLite 文本 SQL:
- libpg_query 解析:使用 PostgreSQL 自己的解析器(通过
pg_querycrate),语法保真度 100% - Translator 转换:parser_pg/src/translator.rs 将 PG 语法树转换为 Turso 内部 AST,处理
::类型转换、SERIAL、$$dollar quoting$$等 PG 特有语法 - Turso 编译器:AST 经编译管线生成 VDBE 字节码,运行在 SQLite 兼容的 B-tree 存储之上
这意味着你写的 SQL 既享受 PostgreSQL 的表达力,又拥有嵌入式引擎的速度和单文件简洁性。
3. 亮点特性:实时物化视图
与 PostgreSQL 需要手动REFRESH MATERIALIZED VIEW不同,pgmicro 的物化视图是实时的——基于 DBSP 增量维护,底层表插入、更新、删除后视图自动反映变化,无需任何刷新步骤(详见 pgmicro/README.md)。
4. 可选的 PostgreSQL 线协议服务
如果传统 PG 客户端(如psql)必须接入,pgmicro 还能变身成轻量服务器:
pgmicro :memory: --server 127.0.0.1:5432实现代码位于 cli/pg_server.rs。它本质上是给"无服务器内核"套了一层网络协议外壳,内核仍是同一个进程内引擎。
三、MCP Server 实战:让 AI 助手直接操作数据库
MCP(Model Context Protocol)是让大模型工具化调用外部能力的标准协议。pgmicro 内置了完整的 MCP Server(源码:cli/mcp_server.rs,文档:cli/manuals/mcp.md),这是 AI Agent 接入数据库的"最后一公里"。
1. 一条命令启动 MCP 模式
pgmicro --mcp服务器通过 stdio 监听 JSON-RPC 请求,启动时不预连数据库,由 AI 用工具命令自行选择或创建数据库——这正是无服务器设计的体现。
2. 内置的 9 个工具
| 工具名 | 作用 |
|---|---|
open_database | 打开或创建数据库文件(支持:memory:) |
current_database | 查询当前打开的数据库路径 |
list_tables | 列出所有表 |
describe_table | 查看表结构(含生成列) |
execute_query | 执行只读 SELECT 查询 |
insert_data/update_data/delete_data | 数据增删改 |
schema_change | 执行 DDL(CREATE / ALTER / DROP) |
工具的输入 Schema 都采用标准 JSON Schema 描述,见 cli/mcp_server.rs。
3. 接入 AI 助手
以 Claude Desktop 为例,在配置文件中加入(使用可执行文件的完整路径):
{ "mcpServers": { "pgmicro": { "command": "/path/to/pgmicro", "args": ["--mcp"] } } }任何兼容 MCP 的客户端(Cursor、自定义 Agent 等)都可以用同样的方式接入。接入后的典型对话流:
你:数据库里有哪些表? AI 调用
list_tables→ 返回表清单你:添加一个 28 岁的用户 Bob AI 调用
insert_data,执行对应的 INSERT 语句
四、质量与性能:Agent 敢用的底气
Antithesis 分布式故障测试
pgmicro 经过 Antithesis 平台的自主分布式测试,模拟网络分区、节点故障等极端场景验证存储正确性:
MVCC 事务模型
引擎内置 MVCC(多版本并发控制),每行数据按事务版本链维护可见性,读不阻塞写:
设计细节可参阅 docs/internals/mvcc/DESIGN.md。
NYRKIÖ 性能回归监控
官方使用 NYRKIÖ 平台持续监测性能变化,防止引擎层面的隐性退化:
五、快速上手清单
- 无需安装,直接运行:
npx pg-micro - 全局安装 CLI:
npm install -g pg-micro - JS/TS 应用内嵌:
npm install pg-micro,API 与@tursodatabase/database兼容 - 接入 AI:
pgmicro --mcp即可
当前仍在快速迭代,未实现的 PG 特性(如COMMENT ON、事务隔离级别、触发器等)已按实现难度分级列出,见 pgmicro/TODO.md。
六、总结
pgmicro 用"解析 PG + 原生编译到嵌入式引擎"的路线,把 PostgreSQL 装进了一个单文件数据库:默认内存库零运维,文件模式标准 SQLite 格式,可选线协议服务器,再配上 9 个内置工具的 MCP Server,构成了一条完整的AI Agent → MCP → 临时数据库链路。如果你正在为 Agent 搭建"用完即弃"的数据层,pgmicro 目前是最轻量的 PostgreSQL 答案。
【免费下载链接】pgmicro
An in-process reimplementation of PostgreSQL, backed by a SQLite-compatible storage engine
相关推荐
如何为Searx添加无服务器数据库支持:DynamoDB与Firebase实时数据库终极指南
如何为Searx添加无服务器数据库支持:DynamoDB与Firebase实时数据库终极指南 Searx是一个隐私友好的元搜索引擎,支持用户自定义搜索源和私有引
后端搜索引擎ShareDrop无服务器数据库:Firebase实时特性
ShareDrop无服务器数据库:Firebase实时特性 引言:告别传统服务器的文件传输革命 你是否曾在多人协作时遭遇文件传输的痛点?邮件附件大小受限、云盘上
后端前端即时通讯探索 Serverless MySQL:无服务器时代的数据库新选择
探索 Serverless MySQL:无服务器时代的数据库新选择 在云计算日益普及的今天,Serverless架构正逐渐成为开发者的新宠。而当我们谈论Serv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考