kisenon

概念

分支、端点、缩容到零 —— 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 通话:psqlpg_dumppgbench、每种语言的驱动、 Drizzle、Prisma、SQLAlchemy,以及一般意义上的 ORM。

不存在 Kisenon 专有的 SQL。分支和端点通过控制平面 API 或 CLI 管理 —— 绝不通过 SQL。