Relyt One 发布:像代码一样分支的 Serverless Postgres
Relyt One 是 Serverless PostgreSQL 17,提供写时复制的分支、空闲时自动挂起的计算实例、内置向量检索和托管认证。本文介绍它的工作原理,以及如何在五分钟内从登录走到一个分支好的数据库。
本页目录
Relyt One 是面向开发者和 AI 智能体的 Serverless Postgres。你得到的是标准的 PostgreSQL 17:每个 Pull Request、每个预览环境、每次智能体运行都能有自己的数据库分支;没人用时计算实例自动挂起;大多数应用迟早要补上的那些组件也都已备好——连接池、向量检索、Open API 和托管认证。它可以免费开始使用,无需信用卡,用 GitHub 或 Google 登录,几分钟后就能拿到一个数据库。
本文介绍 Relyt One 是什么、为什么这样设计,以及实际用起来是什么样子:从第一条连接字符串,一直到一个装着生产数据、用完即弃的分支。
Postgres 是新应用的默认数据库,这是有充分理由的。但我们运行它的方式却没怎么变过。托管 Postgres 实例归根结底仍是一台机器:固定的 CPU 和内存,挂着一块磁盘,不管有没有人连上来,它都在运行。
这种模式有三重代价,每个团队迟早都会遇到。
环境太贵,所以总是不够用。 人人都想要一个和生产环境一模一样的预发数据库、每个 Pull Request 一个数据库、一个能让迁移安全失败的沙箱。可在「机器形态」的 Postgres 上,每多一个环境就要多开一个实例、多恢复一份 dump、多付一份账单。于是团队只好共用一个预发数据库,拿几行种子数据测试迁移,直到上了生产才发现那条 ALTER TABLE 有多慢。
空闲的数据库和繁忙的数据库一样贵。 个人项目、内部工具、预览环境和演示应用,一生中大部分时间都无事可做。一台永远开着的机器,会为这些「无事可做」照样收费。
智能体让这两个问题雪上加霜。 如果一个编程智能体能为每个任务创建一个数据库,试一下 schema 变更、跑一遍测试,然后把结果丢掉,那它远比只能和你共用开发数据库的智能体有用。但前提是:创建数据库要像创建 git 分支一样便宜、一样快。
Relyt One 从一种不同的架构出发,让这三个问题都不复存在。
核心思路是计算与存储分离。
存储是一个共享层,保存着数据的历史。计算实例是一个普通的 Postgres 17 进程,为某一个分支处理查询,并从存储层读取数据页。由于数据并不放在计算实例的磁盘上,三件过去很昂贵的事情变得便宜了。
分支是一条新的历史线,从父分支的某个时间点开始。创建分支不会复制数据:新分支与父分支共享所有数据页,直到其中一方修改了某一页,只有被修改的页才会占用新空间。正因如此,无论父分支装着 1 MB 还是 100 GB 数据,创建分支的成本都一样;也正因如此,控制台显示的是每个分支相对父分支的存储增量,而不是一份完整副本的大小。新分支的计算实例需要一小段时间来准备,而数据从分支创建的那一刻起就已经在那里了。
分支构成一棵树。你可以从 main 创建分支,再从这个分支继续创建分支。删除一个分支永远不会影响它的父分支或兄弟分支;还有子分支的分支,要等子分支都删除后才能删除。主分支不能删除,所以 main 始终都在。
你还可以从过去创建分支。如果项目保留了历史(最多保留最近 3 小时,在项目的历史保留设置中配置),新分支可以从这个窗口内任意时刻的父分支数据开始,而不必从「现在」开始。这在「迁移搞砸了的早上」特别有用:从部署前十分钟创建一个分支,看看那些行原本是什么样子,再把需要的数据复制回来。
每个分支都由自己的计算实例提供服务,规格以计算单元(CU)计量(1 CU = 1 vCPU + 4 GB RAM)。在预览分支上跑一轮繁重的测试,永远不会和生产环境争抢 CPU;智能体的实验也锁不住你的用户正在读取的表。
计算实例空闲一段时间后(默认约十分钟)会自动挂起:状态从 ACTIVE(运行中)变为 SUSPENDED(已挂起),不再占用 CPU。数据丝毫不受影响,因为它本来就不在计算实例上。下一个连接到来时,计算实例会自动恢复。对于那一大批每天只忙几分钟的数据库来说,这就是「为一台机器付费」和「为实际工作付费」的区别。
- PostgreSQL 17,而不是仿制品。 你的驱动、ORM、
psql、pgAdmin 和 DBeaver 无需任何改动即可使用。pg_trgm、citext、pgcrypto等扩展均可通过CREATE EXTENSION启用。 - 分支:可基于当前数据或最近几小时内的数据创建,每个分支都有自己的计算实例,可以通过控制台或 API 创建。
- 连接池:基于 PgBouncer 的事务级连接池,最多支持 10,000 个并发连接。Serverless 函数和其他短连接场景请使用连接池的连接字符串。
- 内置向量检索。
vectors扩展(pgvecto.rs,不是 pgvector)已预加载,并默认在你的数据库中创建好,向量嵌入可以和它所描述的行存放在一起。 - 可观测性:每个计算实例都有 CPU、内存、连接数和数据库大小图表,实时的活跃查询,以及带调用次数和耗时的查询历史。
- Open API:使用 API 密钥访问,覆盖组织、项目、分支和计算实例。
- 托管认证(预览版)。 为你的应用用户提供登录能力,挂在分支上,用户数据就存放在该分支自己的数据库里。详见 Relyt One 托管认证预览版发布。
下面是完整的流程:创建项目、连接、创建分支、在分支上修改 schema,然后把分支丢掉。
使用 GitHub 或 Google 登录。首次登录时会自动为你创建一个免费组织。
创建一个项目:起个名字,选择区域,设置 PostgreSQL 密码。项目创建时自带一个主分支 main、一个主计算实例、一个数据库 relytdb 及其所有者角色 relytdb_owner。计算实例的准备可能需要几分钟,就绪后分支页面会提示你。
打开分支,选择 Connect(连接)。选好计算实例、数据库和角色,复制连接字符串。对话框里还有现成的 Prisma 和 Java 代码片段、供图形化客户端使用的主机和端口信息,以及连接池的连接字符串。
export DATABASE_URL="postgresql://<角色>:<密码>@<主机>/<数据库>?sslmode=require"
psql "$DATABASE_URL" -c "select version();"建一张表、插入一些数据,好有东西可以分支:
CREATE TABLE customers (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
email text NOT NULL UNIQUE,
created_at timestamptz NOT NULL DEFAULT now()
);
INSERT INTO customers (email)
SELECT 'user' || g || '@example.com' FROM generate_series(1, 100000) AS g;在 Branches(分支)页面选择 New Branch(新建分支),父分支选 main,保持 Current data(当前数据)不变,命名为 add-plan-column。
分支从一开始就拥有全部 100,000 行数据,还有自己的计算实例和自己的连接字符串;等计算实例显示就绪后,就可以连接了。整个过程没有复制任何数据:相对父分支的存储增量从零开始。
同样的操作也可以通过 Open API 完成,CI 任务或智能体用的就是这种方式($PROJECT_ID 是项目的 obj-… ID,parentBranchSlug 是父分支的 br-… slug):
curl https://relyt.one/api/v1/projects/$PROJECT_ID/branches \
-H "x-api-key: $RELYT_API_KEY" \
-H "content-type: application/json" \
-d '{"name": "add-plan-column", "parentBranchSlug": "br-..."}'加上 "pointInTime": "2026-10-30T08:50:00Z",就会改为基于父分支在那个时刻的状态创建分支;这个时间必须落在项目的历史保留窗口之内。
连接到这个分支,执行那条你心里没底的迁移:
ALTER TABLE customers ADD COLUMN plan text NOT NULL DEFAULT 'free';
CREATE INDEX customers_plan_idx ON customers (plan);你能看到它在真实数据上要跑多久、跑完之后查询计划变成什么样、你的应用是否仍然正常,而这一切都不会碰到 main。打开 Monitoring(监控),选择该分支的计算实例,就能看到 CPU 的尖峰,还能在 Query History(查询历史)里看到执行过的语句。
对结果满意?那就通过正常的部署流程在 main 上执行同样的迁移。不满意?删掉这个分支就好。无论哪种情况,这次实验的成本只是几秒钟的计算实例时间,加上它修改过的那些数据页。
创建和删除项目、分支都只是一次 API 调用,这让 Relyt One 非常适合那些需要为每个任务准备一个真实数据库的编程智能体。
- Open API 可以创建和删除项目与分支(每个分支都自带计算实例)、读取计算实例的状态和指标,以及管理 API 密钥。API 参考列出了所有接口。
- 开源的 智能体技能包 教会 Claude Code 和其他智能体如何开通数据库、创建分支和建立连接,让它们不必靠猜。
- 每个任务一个分支。 给智能体一个专属分支,让它在上面跑迁移和测试,在任何改动进入
main之前先审查 diff。
每个账号都从 Free 套餐开始:
| Free | |
|---|---|
| 组织 | 1 |
| 项目 | 5 |
| 存储 | 2.5 GB(每个项目含 0.5 GB) |
| 计算实例 | 不限量的共享计算实例时长(早鸟优惠) |
无需信用卡,也没有试用期倒计时。
数据库本身就是 Postgres,周边工具也都是开源的:用于验证托管认证令牌的 @relyt/auth、示例应用,以及 智能体技能包,均以 MIT 许可证发布在 GitHub 上。
登录,创建一个项目,然后给它建个分支。如果有哪里让你困惑或者坏了,我们很想知道:请使用控制台里的反馈按钮告诉我们。
标签Postgresserverlessbranching



