• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdatabase

neon-postgres

プラグイン
neon
ソース
GitHub で見る ↗
説明

Neon上のLakebase Postgresの使い方に関するガイドとベストプラクティス集です。接続方法、接続プール(複数の接続を効率的に管理する仕組み)の使い分け、スキーマの移行、ブランチ機能、自動スケーリング、スケール・トゥ・ゼロ(使用量がゼロの際に課金を止める機能)、インスタントリストア(素早いデータ復元)、読み取り専用レプリカ、IPアドレス制限、論理レプリケーション、およびLakebase Searchに関する内容を扱っています。 **次のような場合に使用:** 既存のDATABASE_URL、SQL、スキーマ、データベース検査、または検索に関する作業 ※ 新しいバックエンド、認証、ファイル、関数、LLM呼び出しについては、親スキルの「neon」を使用してください。また、「@neondatabase/serverless」「@neondatabase/neon-js」「neon inspect db」「セマンティック検索」「ベクトル検索」「全文検索」「BM25」または「ハイブリッド検索」に関連する場合も、このスキルを使用します。

原文を表示

Guides and best practices for working with Lakebase Postgres on Neon: connections, pooled vs direct, schema migrations, branching, autoscaling, scale-to-zero, instant restore, read replicas, IP allow lists, logical replication, and Lakebase Search. Use when the work is an existing DATABASE_URL, SQL, schema, inspect, or search. New backends, Auth, files, Functions, and LLM calls go to the parent `neon` skill. Also use for "@neondatabase/serverless", "@neondatabase/neon-js", "neon inspect db", "semantic search", "vector search", "full-text search", "BM25", or "hybrid search".

ユースケース
  • Neon上のPostgres接続方法を確認するとき
  • 接続プールの使い分けを判断するとき
  • スキーマ移行を実施するとき
  • データベースの自動スケーリングを設定するとき
  • データ復元やレプリカ運用について学ぶとき
本文(日本語訳)

Lakebase Postgres

最初に: 親スキルの neon を使用して、Neon の概要、Neon の使い始め、Neon の開発ベストプラクティスなどを確認してください。

neon スキルがインストールされていない場合は、https://neon.com/docs/ai/skills/neon/SKILL.md から取得するか、以下のコマンドでインストールしてください:

npx skills add neondatabase/agent-skills --skill neon

Lakebase Postgres について

Lakebase Postgres は、Neon の中核を成すデータベースです。lakebase アーキテクチャ(クラウドストレージの上に直接構築された業務処理システム)上で動作し、ストレージとコンピュートを分離することで、自動スケーリング、ブランチ機能、即座の復元、ゼロスケーリング(使わない時は費用ゼロ)を実現しています。Postgres と完全互換であり、Postgres に対応した任意の言語、フレームワーク、ORM(データベース操作ツール)で動作します。

Neon を通じてアクセスしても Databricks を通じてアクセスしても、同じデータベースです。このスキルは Neon 経由でのアクセス方法をカバーしています。

セットアップフロー

1. 組織とプロジェクトを選択する

CLI(デフォルト)または MCP サーバーを使用して、組織とプロジェクトのリストを表示します。ユーザーに既存プロジェクトの選択または新規作成を行わせます。既にリンクされたプロジェクトやブランチがあれば .neon ファイルで確認してください。

2. 接続文字列を取得する

CLI(デフォルト)、neon env pull、または MCP サーバーを使用して接続文字列を取得します。.env ファイルに DATABASE_URL として保存してください。既存の値を上書きしないよう、修正前にファイルを最初に読み込んでください。

プール接続と直接接続の使い分け

用途 接続タイプ
ウェブアプリケーション、サーバーレス関数 プール接続(-pooler)
スキーママイグレーション 直接接続
pg_dump / pg_restore 直接接続
ロジカルレプリケーション 直接接続
一時テーブルを使った長時間アナリティクス 直接接続
SET またはセッション状態が必要な管理作業 直接接続
LISTEN / NOTIFY 直接接続

3. 接続方法とドライバーを選択する

スキーマ管理とマイグレーション(データベース構造の変更)を簡単にするため、必ず Neon と Drizzle などの ORM を組み合わせて使用してください。実行環境がコードをどう処理するかに基づいて正しいドライバーを選択するために、接続方法ガイドを参照してください: https://neon.com/docs/connect/choose-connection.md

推奨構成:

  • ORM として Drizzle を使用(参照: https://neon.com/docs/guides/drizzle.md)
  • Vercel の場合: node-postgres(npm install pg)を Vercel Fluid compute と共に使用し、import { attachDatabasePool } from "@vercel/functions"; をインポート
  • Cloudflare の場合: node-postgres を Cloudflare Hyperdrive と共に使用
  • Neon Functions の場合: node-postgres を使用(Functions は長時間実行され、リクエスト間でプール接続が再利用されるため)
  • サーバーレスやエッジ環境(例: Netlify 使用時)では @neondatabase/serverless ドライバーを使用(単一クエリはHTTP転送、トランザクション対応は WebSocket)。参照: https://neon.com/docs/serverless/serverless-driver.md

4. スキーマをセットアップする

スキーマとマイグレーションをコードとして管理してください。データベースに対してアドホック(その場限りの)なスキーマ変更を実行することは避けてください。管理が難しくなるためです。

ORM を使用している場合は、ORM のベストプラクティスに従ってスキーマとマイグレーションを管理してください。例えば Drizzle を使用している場合、特に指示がない限り、スキーマとマイグレーションの管理に Drizzle のみを使用してください。

ブランチ機能

ユーザーが独立した環境、スキーママイグレーションのテスト、プレビュー環境、またはブランチのライフサイクル自動化(作成・削除の自動管理)を計画している場合に使用してください。

重要なポイント:

  • ブランチはインスタント作成で、コピーオンライト型(データの完全複製ではない)です。
  • 各ブランチには独自のコンピュートエンドポイント(接続先)があります。
  • neon CLI または MCP サーバーを使用してブランチの作成、確認、比較を行います。

参照: https://neon.com/docs/introduction/branching.md

ブランチ作成の詳細なワークフロー(通常ブランチ対スキーマのみブランチ、親から再初期化、CLI/MCP 選択)については、neon-postgres-branches スキルを使用してください。インストールされていない場合は、https://neon.com/docs/ai/skills/neon-postgres-branches/本.md から取得するか、以下のコマンドでインストールしてください:

npx skills add neondatabase/agent-skills --skill neon-postgres-branches

マイグレーション(スキーマ変更)

本番環境に適用する前に、本番と同じデータを使ってブランチ上でマイグレーションをテストしてください。

マイグレーション実行時は、プール接続ではなく直接接続の接続文字列を使用してください。neon connection-string はデフォルトで直接接続文字列を返します。ホスト名に -pooler サフィックス(末尾)が含まれていないことを確認してください。

自動スケーリング

ユーザーがワークロードに応じてコンピュートを自動スケールしたい場合、またはコンピュートユニット(CU)のサイジングと実行時動作についてのガイダンスが必要な場合に使用してください。

参照: https://neon.com/docs/introduction/autoscaling.md

ゼロスケーリング

アイドル時の費用最適化と一時停止/再開動作(冷起動のトレードオフを含む)について論じる場合に使用してください。

重要なポイント:

  • アイドル状態のコンピュートはデフォルト 5 分後に自動的に一時停止します。タイムアウトは設定可能で、一時停止の無効化は Launch および Scale プランでのみ可能です。
  • 一時停止後の初回クエリは通常、冷起動ペナルティ(数百ミリ秒程度)が発生します。
  • コンピュートが一時停止中でもストレージは活動状態のままです。

参照: https://neon.com/docs/introduction/scale-to-zero.md

即座の復元

ユーザーが特定時点への復旧やデータ状態の復元が必要な場合、または従来のバックアップ復元ワークフローを使わずに復元したい場合に使用してください。

重要なポイント:

  • 即座の復元の履歴保持期間はプランの制限に依存します。
  • ユーザーは過去の特定時点からブランチを作成できます。
  • タイムトラベルクエリは履歴データの検査ワークフローに使用できます。

参照: https://neon.com/docs/introduction/branch-restore.md

読み取り専用レプリカ

読み取り負荷が高く、ユーザーがストレージを複製せずに読み取り専用のコンピュートを独立させたい場合に使用してください。

重要なポイント:

  • レプリカは読み取り専用コンピュートエンドポイントで、ストレージは共有します。
  • 作成は高速で、スケーリングはプライマリコンピュートから独立しています。
  • 典型的な用途: アナリティクス、レポート、読み取り集約的な API。

参照: https://neon.com/docs/introduction/read-replicas.md

接続プーリング

ユーザーがサーバーレスや高同時実行環境にいて、安全でスケーラブルな Postgres 接続管理が必要な場合に使用してください。

重要なポイント:

  • Neon のプーリングは PgBouncer を使用しています。
  • プール接続を使用するには、エンドポイントのホスト名に -pooler を追加してください。
  • プーリングは、バースト的な同時実行を行うサーバーレス実行環境で特に重要です。

参照: https://neon.com/docs/connect/connection-pooling.md

IP 許可リスト

ユーザーが信頼できるネットワーク、IP、または CIDR 範囲によってデータベースアクセスを制限したい場合に使用してください。

参照: https://neon.com/docs/introduction/ip-allow.md

ロジカルレプリケーション

CDC パイプライン(変更データキャプチャ)、外部 Postgres との同期、またはレプリケーションベースのデータ移動を統合する場合に使用してください。

重要なポイント:

  • Neon はネイティブなロジカルレプリケーションワークフローをサポートしています。
  • 外部 Postgres システムとの間でのレプリケーション時に便利です。

参照: https://neon.com/docs/guides/logical-replication-guide.md

Lakebase Search

意味検索、全文検索、ハイブリッド検索には Lakebase Search を使用してください:

  • 意味検索の場合: ベクトル検索 を参照。
  • BM25 ランキングでの全文検索の場合: 全文検索 を参照。
  • 意味検索と字句検索を組み合わせる場合: ハイブリッド検索 を参照。

参照:

  • Lakebase Search を始める
  • lakebase_vector リファレンス
  • lakebase_text リファレンス

注意点

プール接続と直接接続: マイグレーション、ダンプ、レプリケーション は直接接続 URL を使用

Neon は同じデータベースに対して 2 つの接続文字列を提供します: プール接続(ホスト名に -pooler サフィックスが付く)と直接接続/プール非対応(-pooler サフィックスなし)。neon env pull はこれらを DATABASE_URL と DATABASE_URL_UNPOOLED として書き込みます。正しいものを選んでください:

  • プール接続(DATABASE_URL) — アプリケーションの通常のクエリトラフィック。特にサーバーレスとリクエストごとの接続が必要な環境向け。
  • 直接接続(DATABASE_URL_UNPOOLED) — スキーママイグレーション(Prisma Migrate、Drizzle Kit、Alembic など)、pg_dump / pg_restore、ロジカルレプリケーション、LISTEN/NOTIFY、SET やその他のセッション状態に依存するあらゆる操作。

マイグレーション、ダンプ、またはレプリケーションをプール接続経由で実行すると失敗し、プーリングが原因と明確には見えません。例えば Prisma Migrate からは prepared statement "s0" already exists、次のクエリで relation "mytable" does not exist と報告される SET search_path(独自のトランザクションを超えて保持されない)、または過去のクライアントからプール化されたバックエンドが引き継いだ読み取り専用トランザクション(SQLSTATE 25006)に書き込みが間欠的に当たることもあります。マイグレーションツールは一般に両方の文字列を同時に受け取ります。Prisma の directUrl を url と並行して受け取るため、直接接続を指してアプリケーションからプーリングを失わないようにしてください。参照: https://neon.com/docs/connect/connection-pooling.md

原文(English)を表示

FIRST: Use the parent neon skill for a Neon overview, getting started with Neon, Neon development best practices, and more.

If the neon skill is not installed, fetch it from https://neon.com/docs/ai/skills/neon/SKILL.md or install it with:

neon skills -s neon -y

Lakebase Postgres

Lakebase Postgres is the database at the core of Neon. It runs on the lakebase architecture — OLTP built directly on cloud object storage — which decouples storage from compute to offer autoscaling, branching, instant restore, and scale-to-zero. It's fully compatible with Postgres and works with any language, framework, or ORM that supports Postgres.

It is the same database whether you reach it through Neon or through Databricks; this skill covers the Neon access path.

Login, users, sessions, and @neondatabase/auth belong in neon-auth.

Setup Flow

1. Select the organization and project

If a DATABASE_URL is already supplied (prompt, environment, or repo) or a .neon file points at a project, use it. Do not list organizations or create a second project for schema work.

Otherwise use the CLI (default) or MCP server to list organizations and projects. Let the user select an existing project or create a new one.

2. Get the connection string

If a DATABASE_URL is already supplied, use it. Do not fetch another through the CLI or MCP.

Otherwise use the CLI (default), neon env pull, or the MCP server to get the connection string. Store it in .env as DATABASE_URL. Read the file first before modifying it, to avoid overwriting existing values.

When to use pooled vs direct connections

Use case Connection type
Web applications, serverless functions Pooled (-pooler)
Schema migrations Direct
pg_dump / pg_restore Direct
Logical replication Direct
Long-running analytics with temp tables Direct
Admin tasks needing SET or session state Direct
LISTEN / NOTIFY Direct

3. Pick the connection method and driver

Preserve the existing ORM and driver. For new TypeScript schema work with no established choice, Drizzle is a suggestion: https://neon.com/docs/guides/drizzle.md. Refer to the connection methods guide to pick the correct driver based on how the runtime treats your code: https://neon.com/docs/connect/choose-connection.md.

Driver notes:

  • On Vercel, use node-postgres (npm install pg) with Vercel Fluid compute and import { attachDatabasePool } from "@vercel/functions";
  • On Cloudflare, use node-postgres with Cloudflare Hyperdrive
  • On Neon Functions, use node-postgres, as the functions are long-running and reuse the pool across requests.
  • Use the @neondatabase/serverless driver for serverless and edge environments (for example, when using Netlify) — HTTP transport for one-shot queries, WebSocket for transaction support. Link: https://neon.com/docs/serverless/serverless-driver.md

4. Set up the schema

Manage schemas and migrations as code. Avoid running ad hoc schema migrations against your database, since they're hard to manage.

If you're using an ORM, follow your ORM's best practices to manage schemas and migrations. For example, if using Drizzle, only use Drizzle for schema and migration management unless instructed otherwise.

Branching

Use this when the user is planning isolated environments, schema migration testing, preview deployments, or branch lifecycle automation.

Key points:

  • Branches are instant, copy-on-write clones (no full data copy).
  • Each branch has its own compute endpoint.
  • Use the neon CLI or MCP server to create, inspect, and compare branches.

Link: https://neon.com/docs/introduction/branching.md

For detailed branch creation workflows (normal vs schema-only branches, reset-from-parent, CLI/MCP selection), use the neon-postgres-branches skill. If it isn't installed, fetch it from https://neon.com/docs/ai/skills/neon-postgres-branches/SKILL.md or install it with:

neon skills -s neon-postgres-branches -y

Migrations

Test a migration on a branch of production, against production-like data, before applying it to production.

Use a direct (non-pooled) connection string when you run the migration, not a pooled one. neon connection-string returns the direct string by default; make sure the hostname does not include the -pooler suffix.

Troubleshooting and Neon-Specific Performance

Use Neon's predefined, read-only diagnostics before writing catalog queries by hand. The Neon CLI neon inspect db subcommands and the Neon MCP server's inspect_database tool run the same checks.

This section covers Neon-specific diagnostic tools, compute cache behavior, and platform signals. When the evidence points to generic Postgres work such as rewriting a query, choosing an index, changing a schema, or interpreting plan nodes, load the postgres-best-practices skill and carry the diagnostic evidence into that workflow.

Docs:

  • CLI: https://neon.com/docs/cli/inspect.md
  • Query performance: https://neon.com/docs/postgresql/query-performance.md
  • pg_stat_statements: https://neon.com/docs/extensions/pg_stat_statements.md
  • Neon Local File Cache: https://neon.com/docs/extensions/neon.md

Choose CLI or MCP

Prefer the Neon CLI when terminal access and authentication are available:

neon inspect db <check>

The CLI resolves the project and branch from the current Neon context. Use --project-id, --branch, and --database-name to override it. Omit --database-name to inspect every database on the branch. Use --db-url only when inspecting a Postgres database directly instead of resolving it through the Neon API.

When using Neon MCP, call inspect_database with projectId and one check. Pass branchId, databaseName, or computeId only when needed. Omit databaseName to inspect all databases on the branch. Increase limit only when the result says it was truncated.

Pick the Diagnostic

Symptom or question Checks
Which relations consume storage? table-sizes, index-sizes
Is an index unused or a table scanned heavily? unused-indexes, seq-scans
What has run for 5+ minutes or holds locks? long-running-queries, locks
Which queries consume the most total time? outliers
Which queries run most often? calls
Does the active data fit in compute cache? lfc-hit-rate, working-set
Is autovacuum behind or is space wasted? vacuum-stats, bloat
Is logical replication healthy? replication-slots, subscriptions

Do not confuse these checks:

  • long-running-queries reports statements running right now for more than five minutes.
  • outliers ranks the top queries by cumulative execution time since statistics were reset. It does not rank by mean latency.
  • calls ranks by execution count over the same statistics history.

outliers and calls require pg_stat_statements. lfc-hit-rate and working-set require the neon extension. If a check reports a missing extension, ask before running the suggested CREATE EXTENSION statement because installing an extension modifies the database.

Interpret Results Safely

  • Treat unused-indexes as a candidate list, not permission to drop indexes. Confirm the observation window, constraints, and workload before removal.
  • A sequential scan can be correct for a small table or a query reading much of a table. Check table size, selectivity, and the query plan before adding an index.
  • bloat is a statistical estimate. Confirm the impact and plan locks or maintenance before VACUUM FULL, REINDEX, or similar remediation.
  • Cache and Postgres statistics reset when compute restarts, including scale-to-zero suspension. Run a representative workload before interpreting fresh lfc-hit-rate, working-set, vacuum-stats, or pg_stat_statements results.
  • Compute-wide checks (lfc-hit-rate, working-set, and replication-slots) run once even when inspecting every database.
  • One failing database can fail an all-databases inspection; retry the relevant check with an explicit databaseName to isolate it.

Inspect Neon Cache Behavior Per Query

Standard EXPLAIN (ANALYZE, BUFFERS) reports Postgres shared-buffer activity, but it does not show Neon's Local File Cache (LFC) or page prefetching. For a safe read-only query, add Neon's FILECACHE and PREFETCH options:

EXPLAIN (ANALYZE, BUFFERS, PREFETCH, FILECACHE)
SELECT ...;
  • File cache: hits counts pages found in the compute's LFC.
  • File cache: misses counts pages not found in the LFC and fetched from database storage.
  • Prefetch: hits, misses, expired, and duplicates show how effectively Neon fetched pages before the executor requested them.

FILECACHE and PREFETCH provide metrics for this query and do not require the neon extension. By contrast, neon inspect db lfc-hit-rate and working-set provide compute-wide statistics and do require the extension.

The MCP explain_sql_statement tool can produce a standard plan but does not expose FILECACHE or PREFETCH options. To collect those Neon-specific metrics through MCP, use run_sql with the explicit, read-only EXPLAIN statement above.

Because ANALYZE executes the statement, use it only when execution is safe; do not run it autonomously for mutating SQL. Compare cold- and warm-cache runs carefully because the first execution can populate the cache and materially change later results.

Performance Workflow

  1. Reproduce the symptom and note its time window.
  2. Run the smallest relevant inspect checks from the table above.
  3. Identify a specific query before changing schema or compute. Use MCP explain_sql_statement for a standard plan, or the Neon-specific EXPLAIN above when LFC or prefetch behavior matters.
  4. If the bottleneck is query shape, indexing, schema, locking, or vacuum behavior, load postgres-best-practices and carry forward the inspection results and query plan. Keep Neon compute, cache, connection, and platform decisions in this skill.
  5. Re-run the same check and workload to verify the change.

Use MCP list_slow_queries instead of inspect_database when the user specifically needs queries ranked by average execution time with a custom threshold and limit. Outside the explicit EXPLAIN case above, use run_sql only for read-only diagnostic SQL when the predefined checks do not answer the question.

Autoscaling

Use this when the user needs compute to scale automatically with workload and wants guidance on CU sizing and runtime behavior.

Link: https://neon.com/docs/introduction/autoscaling.md

Scale to Zero

Use this when optimizing idle costs and discussing suspend/resume behavior, including cold-start trade-offs.

Key points:

  • Idle computes suspend automatically after a default of 5 minutes; the timeout is configurable, and suspension can only be disabled on the Launch and Scale plans.
  • First query after suspend typically has a cold-start penalty (around hundreds of ms)
  • Storage remains active while compute is suspended.

Link: https://neon.com/docs/introduction/scale-to-zero.md

Instant Restore

Use this when the user needs point-in-time recovery or wants to restore data state without traditional backup restore workflows.

Key points:

  • History windows for instant restore depend on plan limits.
  • Users can create branches from historical points-in-time.
  • Time Travel queries can be used for historical inspection workflows.

Link: https://neon.com/docs/introduction/branch-restore.md

Read Replicas

Use this for read-heavy workloads where the user needs dedicated read-only compute without duplicating storage.

Key points:

  • Replicas are read-only compute endpoints sharing the same storage.
  • Creation is fast and scaling is independent from primary compute.
  • Typical use cases: analytics, reporting, and read-heavy APIs.

Link: https://neon.com/docs/introduction/read-replicas.md

Connection Pooling

Use this when the user is in serverless or high-concurrency environments and needs safe, scalable Postgres connection management.

Key points:

  • Neon pooling uses PgBouncer.
  • Add -pooler to endpoint hostnames to use pooled connections.
  • Pooling is especially important in serverless runtimes with bursty concurrency.

Link: https://neon.com/docs/connect/connection-pooling.md

IP Allow Lists

Use this when the user needs to restrict database access by trusted networks, IPs, or CIDR ranges.

Link: https://neon.com/docs/introduction/ip-allow.md

Logical Replication

Use this when integrating CDC pipelines, external Postgres sync, or replication-based data movement.

Key points:

  • Neon supports native logical replication workflows.
  • Useful for replicating to/from external Postgres systems.

Link: https://neon.com/docs/guides/logical-replication-guide.md

Lakebase Search

Use Lakebase Search for semantic, full-text, and hybrid search:

  • For semantic search, read Vector search.
  • For full-text search with BM25 ranking, read Full-text search.
  • For combining semantic and lexical results, read Hybrid search.

Links:

  • Get started with Lakebase Search
  • lakebase_vector reference
  • lakebase_text reference

Gotchas

Pooled vs direct connections: use the direct URL for migrations, dumps, and replication

Neon gives you two connection strings for the same database: a pooled one (hostname with the -pooler suffix) and a direct/unpooled one (no -pooler suffix). neon env pull writes them as DATABASE_URL and DATABASE_URL_UNPOOLED. The pooled connection routes through PgBouncer in transaction mode, which doesn't support session-level operations. Choose the right one:

  • Pooled (DATABASE_URL) — your application's normal query traffic, especially serverless and connection-per-request workloads.
  • Direct (DATABASE_URL_UNPOOLED) — schema migrations (Prisma Migrate, Drizzle Kit, Alembic, and others), pg_dump / pg_restore, logical replication, LISTEN/NOTIFY, and anything relying on SET or other session state.

Running migrations, dumps, or replication over the pooled connection can fail, and never in a way that names pooling: prepared statement "s0" already exists from Prisma Migrate, a SET search_path that doesn't persist past its own transaction so the next query reports relation "mytable" does not exist, or a write intermittently hitting a read-only transaction (SQLSTATE 25006) that a pooled backend inherited from an earlier client. Migration tools generally take both strings at once — Prisma's directUrl alongside url — so point that at the direct one rather than swapping DATABASE_URL and losing pooling for the application. See https://neon.com/docs/connect/connection-pooling.md.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。