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

組織 はプロジェクト、メンバー、課金を所有します。すべてのプロジェクトは正確に 1 つ の組織に属します。プロジェクト は分離境界です。1 つのストレージボリューム、独自の ブランチとエンドポイントを持ちます。ブランチ はそのストレージ内のログシーケンス番号 を指します。エンドポイント はそれを提供するコンピュートです。メンバーシップとロール については 組織 を参照してください。

ストレージ

ストレージは耐久性があり、レプリケートされ、プロジェクトのすべてのブランチで共有されます。 書き込みは safekeeper(Paxos クォーラム)を経て pageserver に着地し、pageserver はオン デマンドで過去の読み取りを提供します。

ストレージ容量を直接管理することはありません。プロジェクトごとに単一の数値として見え、 実際に永続化したバイト数と、タイムトラベルのために保持された WAL の分だけ支払います。

ブランチ

ブランチは、ストレージ内のログシーケンス番号(LSN)へのポインタです。ブランチの作成は O(1) のデータベース行挿入であり、データをコピーしません。ブランチからの読み取りは、 ブランチが分岐するまで親にフォールスルーし、分岐した時点で差分のみが保存されます。

これによりブランチは次のようになります。

  • 差分以下では無料。 100 GB のプロジェクト + 10 個の小さなブランチでも、依然として 約 100 GB として課金されます。
  • 高速。 ブランチの生成はサブ秒です。
  • 使い捨て。 ブランチ上で破壊的なマイグレーションを実行し、ブランチを捨てても、親は 影響を受けません。

エンドポイント

エンドポイントは、クライアントと通信する Postgres プロセスです。任意の時点で正確に 1 つ のブランチとペアになります。

エンドポイントは エフェメラルコンピュート です。次の特徴があります。

  • 最初のパケットで起動します(通常、クライアントの接続タイムアウトより高速です)。
  • クライアント活動が 5 分間ないとサスペンドします。
  • 作成と破棄が安価です。ブランチと同じコストモデルです。

同じブランチ上に複数のエンドポイントを持てます(例えばアプリ用に 1 つ、分析用に 1 つ)。 それらは基となるストレージを共有しますが、ローカルキャッシュは互いに独立したままです。

ゼロへのスケール

アイドルなエンドポイントのコンピュートコストはゼロです。支払うのはストレージのみです。

具体的には、1 日 1 時間使われるエンドポイントを 1 つ持つプロジェクトのコストは、常時稼働 の同等品のおよそ 24 分の 1 です。ストレージコストはどちらでも同じです。

これが、Kisenon がその名前の由来とする、由緒ある希ガスのアイデアです — Xenon-54 を表す (せん、「仙人」)。

互換性

Kisenon は素の Postgres ワイヤープロトコルを話します。Postgres と通信できるものは何でも Kisenon と通信できます。psqlpg_dumppgbench、あらゆる言語のドライバ、Drizzle、 Prisma、SQLAlchemy、ORM 全般。

Kisenon 固有の SQL はありません。ブランチとエンドポイントは、コントロールプレーン API または CLI を介して管理します。SQL を通すことは決してありません。