PocketBase 的自我描述是「一个文件里的实时后端」。翻成大白话:下载一个 exe,双击跑起来,你就有了一套带数据库的后端服务,REST API、管理后台、账号体系、文件上传、实时订阅全都自带了,不用写一行服务端代码。
32 MB 一个 exe,0.58 秒起服务
官方 Windows 包 12,833,751 字节,解开是一个 pocketbase.exe,33,470,976 字节。没有安装程序,没有 Node,没有单独的数据库进程,SQLite 直接编译在二进制里。
pocketbase_0.40.5_windows_amd64.zip 12,833,751 字节
└─ pocketbase.exe 33,470,976 字节
进程到 /api/health 返回 200 0.58 秒
常驻内存 40,504 K
数据目录 pb_data\ 自动生成
启动命令就一句,端口自己指定。绑 127.0.0.1 是只给自己用,改成 0.0.0.0 就是局域网可访问。
pocketbase.exe serve --http=127.0.0.1:8090
第一次跑会在同目录生成 pb_data,里面是 SQLite 文件和日志。整个后端的状态就是这一个文件夹,备份直接拷走。
第一次启动会打一串东西出来
它不只是打印个地址,还会把 REST API 前缀、Dashboard 入口、以及一个带 token 的初始化链接一起吐在控制台里。粘进浏览器就能设管理员账号。
Server started at http://127.0.0.1:8090
├─ REST API: http://127.0.0.1:8090/api/
└─ Dashboard: http://127.0.0.1:8090/_/
不想开浏览器也行,命令行一句话建账号:
pocketbase.exe superuser upsert [email protected] "你的密码"
建完拿这个账号去换 token,接口就通了。实测 auth-with-password 返回 200,token 后面所有请求都要带。
后台就是一张表
进 /_/ 看到的是左边 Collections 列表、右边数据表格。表头就是字段名,单元格直接显示值,布尔字段是 True / False 的色块,数字右对齐,每行末尾一个箭头点进详情。
Collections
users ← 内置的账号表(id / email / verified / name / avatar)
notes ← 自己建的
System
不用记 SQL,左侧「New collection」点开填字段名和类型就能建表。实测建一个 notes 表,4 个字段(title 文本 / body 文本 / done 布尔 / score 数字),1 次 API 调用返回 200,界面 1 秒内出现新表。
每张表下面还有一个「API preview」按钮,点开列出这张表自动生成的 5 个接口(list / view / create / update / delete),每个都带完整 URL 和示例请求体,复制就能用。这是它和普通数据库工具最大的区别:不是让你查数据,是替你暴露接口。
写 100 条,0.14 秒
用 API 循环插 100 条记录,每条带 5 个字段,从第一条发到第 100 条返回,总耗时 0.14 秒。
| 操作 | 次数或条数 | 耗时 | 换算 |
|---|---|---|---|
| 创建记录 POST | 100 | 0.14 秒 | 724 条/秒 |
| 列表查询 GET 50 条 | 20 | 1.1 毫秒 | 中位 |
| 列表查询最快 | 20 | 0.9 毫秒 | 最小 |
| 列表查询最慢 | 20 | 1.7 毫秒 | 最大 |
| 启动到健康检查 | 1 | 0.58 秒 | 冷启动 |
| 常驻内存 | 1 | 40504 KB | 空载 |
724 条/秒是单线程一条一条发的,不是批量接口。真实业务里更常见的是并发写入,那个数字会受 SQLite 的写锁影响,会比这个低一些。列表查询 1.1 毫秒这个数说明读路径很快,SQLite 加了索引之后更明显。
数据落地在 pb_data\data.db,120 条记录跑完是 4,096 字节(一页),旁边还有一个 data.db-wal 197,792 字节,是预写日志。WAL 会在检查点之后合并回主文件,所以看体积要看 checkpoint 之后的值。
它到底是后端,不是应用
这一点最容易误会。装完之后你没有博客、没有论坛、没有网盘,只有 1 个空后端和 5 个接口。前端要自己写,或者接现成的模板。
它替你做的是那些「每个项目都要重写一遍」的部分:账号注册登录、权限规则(谁能读谁能写,写成表达式)、文件上传和缩略图、实时订阅(SSE 推消息)、后台管理界面、数据导入导出。
反过来说,如果你想找一个「装完就能用的成品」,它不合适,去看同类的成品应用。它的定位更靠近「一个人也能撑起一个后端」,适合做小工具的服务端、给静态页面加数据存储、做内部系统的原型。
几个要注意的地方
SQLite 是单写入者的模型。同时开 10 个写入连接持续压,就会报 database is locked 错误,官方给的解法是开 WAL 模式(默认已开)再把写操作串行化,不是靠加机器解决。单机写入超过几百条/秒这种场景,它不支持。
默认没有 HTTPS,也没有多机部署能力,pb_data 在 1 台机器上就是 1 份数据。要做多实例得自己上对象存储和外置数据库,那就失去「一个文件」的意义了。
还有一点:它的版本号还在 0.x(当前 0.40.5),升级时偶尔有破坏性改动,升级前要看 CHANGELOG。包里那个 CHANGELOG.md 就是官方原文,建议先扫一眼。
没测的部分列一下,5 项:实时订阅(SSE)的实际延迟 / 文件上传与缩略图 / 权限规则的复杂表达式 / 从 SQLite 迁到 Postgres / 反向代理加 HTTPS,都没跑。









