概念
分支、端点、缩容到零 —— Kisenon 背后的模型。
Kisenon 像 Neon 那样将存储与计算分离。理解这个拆分, 其余的一切都会随之水落石出。
资源模型
一切都嵌套在组织之下:
organization ── the unit of membership + billing
└── project ── isolation boundary: one storage volume
└── branch ── a copy-on-write LSN pointer
└── endpoint ── the ephemeral Postgres compute一个组织拥有项目、成员和计费;每个项目都恰好属于一个组织。 一个项目是隔离边界 —— 一个存储卷,它自己的分支和端点。 一个分支指向那个存储中的一个日志序列号;一个端点是为它 服务的计算。参见 组织 了解成员资格和角色。
存储
存储是持久的、复制的,并在一个项目的所有分支之间共享。写入经过 safekeeper(Paxos quorum)并落入 pageserver,后者按需提供历史读取。
您不会直接管理存储容量。您把它看作每个项目的一个单一数字,并且只为 您实际持久化的字节加上为时间旅行保留的 WAL 付费。
分支
一个分支是指向存储中某个日志序列号(LSN)的指针。创建一个分支是 一次 O(1) 的数据库行插入;它不会复制数据。来自分支的读取会回落到 父分支,直到分支发散,此时只存储增量。
这使得分支:
- 在增量以下是免费的。 一个 100 GB 项目 + 10 个小分支仍然按 约 100 GB 计费。
- 快速。 派生一个分支是亚秒级的。
- 可丢弃。 在一个分支上运行一次破坏性迁移,丢掉该分支,父分支 不受影响。
端点
一个端点是与客户端通话的 Postgres 进程。它在任一时刻恰好与一个分支 配对。
端点是临时性计算。它们:
- 在收到第一个数据包时唤醒(通常比您客户端的连接超时更快)。
- 在 5 分钟没有客户端活动后挂起。
- 创建和销毁都很廉价 —— 与分支相同的成本模型。
您可以在同一个分支上拥有多个端点(例如一个给应用,一个给分析)—— 它们共享底层存储,而它们的本地缓存保持独立。
缩容到零
空闲端点的计算成本为零。您只为存储付费。
具体来说:一个带有一个每天被使用一小时的端点的项目,大约花费一个 始终在线等价物的 1/24。无论哪种方式,存储成本都相同。
这就是 Kisenon 得名的那个经典的惰性气体理念 —— 仙(sen,
"仙人")对应 54 号元素氙。
兼容性
Kisenon 讲原生的 Postgres 线缆协议。任何会与 Postgres 通话的东西
都能与 Kisenon 通话:psql、pg_dump、pgbench、每种语言的驱动、
Drizzle、Prisma、SQLAlchemy,以及一般意义上的 ORM。
不存在 Kisenon 专有的 SQL。分支和端点通过控制平面 API 或 CLI 管理 —— 绝不通过 SQL。