Neon の中はどんな入れ物でできているのか
NeonDB(Neon)はクラウド上で動く Postgres のサービスで、SQL もツールも従来のまま使えます。ブランチの身軽さの土台は、その入れ物の重ね方にあります。まず外側の組織から内側のテーブルまで、入れ子を順にたどりましょう。
各ブロックや矢印をクリックすると、その仕組みの説明がここに表示されます。
この図をテキストで読む
構成図「NeonDBの入れ子ツリー — 組織からテーブルまで」。ブロック9個、つながり8本。 【ブロック】 - 組織: 5slab(会社・チーム) - プロジェクト: universal(アプリ1つ) - ブランチ: production (本番) - ブランチ: preview・pr-123 - データベース: neondb - スキーマ: public(既定) - スキーマ: website(自前) - テーブル: customers - テーブル: orders 【図の符号】緑の枠=関門・経由点 / 赤紫の枠=データの置き場 / 破線の枠=外部のサービス 【流れ】 - 外側の入れ物から内側へたどる: 組織 → プロジェクト → ブランチ → データベース → スキーマ → テーブル
ブランチはこう使う
- 本番のコピーで試して、用済みは捨てる。PR ごとに繰り返せます。
各ステップをクリックすると、その内容の説明がここに表示されます。
この図をテキストで読む
ステップ図「ブランチを使った開発の流れ」。5ステップ。 【手順】(順番に) 1. 本番ブランチ(production) — 本物のデータ 2. ブランチを作成(瞬時にコピー) — 数秒 3. 自由に試す(壊してOK) — 本番に影響なし 4. 良ければ本番へ(変更を取り込む) — 確認後 5. 用済みは破棄(削除) — コストも止まる 補足: 本番のコピーで試して、用済みは捨てる。PR ごとに繰り返せます。 【流れ】 - ブランチ開発のひとめぐり: 本番ブランチ → ブランチを作成 → 自由に試す → 良ければ本番へ → 用済みは破棄
用途で「どの単位で分けるか」を選ぶ
各セルをクリックすると、その意味や詳しい説明がここに表示されます。
この図をテキストで読む
比較表。4列 × 5行。 【列】 1. スキーマ(同じDB内) 2. データベース(同じブランチ内) 3. ブランチ(本番のコピー) 4. プロジェクト(丸ごと独立) 【比較】(観点ごとに) ■ 隔離の強さ - スキーマ: ゆるい - データベース: 中くらい - ブランチ: 強い - プロジェクト: 最強 ■ compute・storage - スキーマ: どちらも共有 - データベース: どちらも共有 / 同じブランチ - ブランチ: storage は差分共有 / compute は別 - プロジェクト: どちらも完全に別 ■ またいで検索 - スキーマ: できる - データベース: ふつうしない - ブランチ: 別環境=不可 - プロジェクト: 不可 ■ 費用への影響 - スキーマ: ほぼ増えない / ほぼ無料 - データベース: ほぼ増えない / ほぼ無料 - ブランチ: 差分課金+稼働compute / 中 - プロジェクト: まるごと別計上 / 高い ■ 向いている場面 - スキーマ: 横断集計・接続をまとめたい - データベース: アプリ単位で中身を分けたい - ブランチ: 本番を壊さず試す・PRプレビュー - プロジェクト: 顧客ごとに課金・地域も分離 【観点】 - 費用を抑えて分ける: スキーマ / データベース - しっかり分離する: ブランチ / プロジェクト
料金体系(Neon 公式プラン)
各セルをクリックすると、その意味や詳しい説明がここに表示されます。
この図をテキストで読む
比較表。3列 × 10行。 【列】 1. Free($0 / 月) 2. Launch(従量・最低なし)〔おすすめ〕 3. Scale(本番・大規模) 【比較】(観点ごとに) ■ 月額 - Free: $0 - Launch: 従量 / 最低なし - Scale: 従量 / 最低なし ■ compute - Free: 100 CU時間 / /プロジェクト 込み - Launch: $0.106 / / CU時間 - Scale: $0.222 / / CU時間 ■ ストレージ - Free: 0.5 GB / /プロジェクト 込み - Launch: $0.35 / / GB月 - Scale: $0.35 / / GB月 ■ 含まれるブランチ - Free: 10 / /プロジェクト - Launch: 10 / /プロジェクト - Scale: 25 / /プロジェクト ■ 超過ブランチ - Free: — / 不可 - Launch: $1.50 / /ブランチ月 - Scale: $1.50 / /ブランチ月 ■ 履歴(PITR)窓 - Free: 6 時間 / 1GBまで - Launch: 最大 7 日 - Scale: 最大 30 日 ■ 履歴の料金 - Free: 無料 - Launch: $0.20 / / GB月 - Scale: $0.20 / / GB月 ■ プロジェクト数 - Free: 100 - Launch: 100 - Scale: 1,000 / 要相談で増 ■ ネットワーク転送 - Free: 5 GB 込み - Launch: 500 GB込み / → $0.10/GB - Scale: 500 GB込み / → $0.10/GB ■ scale to zero - Free: 5 分後 / 固定 - Launch: 無効化できる - Scale: 1分〜常時 / 可変 【観点】 - まず無料で試す: Free - 本番で使う: Launch / Scale
アプリと開発者、それぞれのつなぎ方
- 1
アプリのつなぎ方
接続情報はシークレット管理から読み込み、アプリ専用の最小権限ロールで繋ぎます。多数の接続をさばくため、ホスト名に -pooler を付けたプール接続が基本です。
- 2
開発者のつなぎ方
psql や GUI などの標準クライアントで、開発者ごとに最小権限のロールを払い出して繋ぎます。試すのは本番のコピーである自分用ブランチの上です。
- 3
自動停止との付き合い方
眠りから覚めるとき一瞬のコールドスタートがあり、接続が切れることもあります。アプリ側に再接続・リトライを用意すると安定します。
迷ったら「隔離の強さ」で選ぶ
ゆるく分けて横断もしたいならスキーマ、中身を完全に分けたいならデータベース、独立した実験場が欲しいならブランチ、課金や地域まで分けたいならプロジェクト。外側の入れ物ほど隔離が強く、内側ほど身軽に分けられます。
押さえておきたい用語
- サーバーレスPostgres
- ブランチ
- コピーオンライト
- scale to zero(自動停止)
- プロジェクト / データベース / スキーマ
- PITR(特定時点復元)
- 接続文字列
- プール接続(pooler)/ 直結