コンセプト
ブランチ、エンドポイント、ゼロへのスケール — 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 と通信できます。psql、pg_dump、pgbench、あらゆる言語のドライバ、Drizzle、
Prisma、SQLAlchemy、ORM 全般。
Kisenon 固有の SQL はありません。ブランチとエンドポイントは、コントロールプレーン API または CLI を介して管理します。SQL を通すことは決してありません。