7.10.0 で動作確認済み) を使用します。
前提条件
- Node.js 20.19、22.12、または 24 以降
- ClickHouse Managed Postgres サービス
- データベースを作成するための
psql。CREATE DATABASEステートメントは SQL コンソール で実行することもできます。 - macOS の場合: Prisma Migrate を実行するための Docker (移行を実行するを参照)
ClickHouse Managed Postgres サービスを作成する
ClickHouse Cloud コンソールで New service をクリックし、Postgres を選択します。インスタンスは数分で利用可能になります。詳しい手順については、クイックスタートを参照してください。接続情報を取得する
サービスの左サイドバーで Connect をクリックします。表示されるモーダルには、ユーザー名、パスワード、サーバー、ポートのほか、そのまま使える接続文字列が表示されます。 Prisma にはデータベースと通信するコンポーネントが 2 つあるため、このガイドでは 2 種類の接続を使用します。- アプリケーション (Prisma Client) は、ポート
6432で PgBouncer 経由 で接続します。PgBouncer が接続をプールするため、多数のアプリケーションプロセスやサーバーレスインスタンスで少数の Postgres バックエンドを共有できます。 - Prisma CLI (Prisma Migrate) は、ポート
5432で 直接 接続します。Prisma Migrate は実行中にセッションレベルのアドバイザリロックを取得します。PgBouncer のトランザクションプーリングモードでは、このロックがプールされたバックエンド上に保持されたまま、そのバックエンドが他のクライアントにも割り当てられるため、後続の移行がこのロックによってブロックされてしまいます。
<service-name>-ca-certificate.pem です。このファイルは Settings → CA Certificate からも取得できます。この証明書はインスタンスごとに固有で、sslmode=verify-full で接続する際に使用します。これにより、接続先が自分のサーバーであることが検証されます。
プロジェクトをセットアップする
TypeScript プロジェクトを作成し、Prisma CLI、Prisma Client、node-postgres ドライバーアダプター、dotenv をインストールします。
prisma@7 と @prisma/client@7 は、バージョンを明示してインストールしてください。本ガイドの執筆時点では、prisma の npm latest タグは Prisma 8 のリリース候補版を指しており、本ガイドとはセットアップ方法が異なります。tsconfig.json を作成します。
Prisma を初期化する
1
prisma init を実行する
prisma/schema.prisma と Prisma の設定ファイル prisma7.config.ts が作成され、.env にはプレースホルダーの DATABASE_URL が、.gitignore には生成されたクライアントが追加されます (これらのファイルが存在しない場合は新規作成されます) 。あわせて、AI コーディングエージェント向けの Prisma スキルも追加されます。Prisma 7.10 以降では、Prisma 8 のフォーマットとの競合を避けるため、設定ファイル名が prisma7.config.ts になっています。2
CA 証明書を追加する
ダウンロードした CA 証明書をプロジェクトのルートに移動し、証明書の相対パスは、コマンドを実行したディレクトリを基準に解決されます。そのため、このガイドのコマンドはすべてプロジェクトのルートで実行してください。
ca-certificate.pem にリネームします。接続を設定する
1
データベースを作成する
アプリ用のデータベースを作成します。
<PASSWORD> とホストは、Connect モーダルに表示される値に置き換えてください。2
接続 URL を設定する
.env で、prisma init が追加したプレースホルダーの DATABASE_URL を、次の 2 つの接続 URL に置き換えます。どちらも guide_prisma データベースを指します。パスワードには Connect モーダルに表示されるものを使用してください。DATABASE_URLは、@prisma/adapter-pg経由で node-postgres が読み取ります。Connect モーダルに表示されるものと同じ、標準のsslmode=verify-full&sslrootcert=...パラメータに対応しています。DIRECT_URLは、Prisma CLI のスキーマエンジンが読み取ります。このエンジンは独自のパラメータを使用し、sslcertで CA 証明書へのパスを指定し、sslaccept=strictで証明書とホスト名の検証を有効にします。
3
Prisma CLI が直接接続を使用するよう設定する
prisma7.config.ts の内容を次のように置き換えます。スキーマを定義して移行を実行する
1
モデルを追加する
prisma/schema.prisma の末尾に Todo モデルを追加します。2
マイグレーションを実行する
Linux では、Prisma Migrate を直接実行します。macOS では、同じコマンドを Linux コンテナー内で実行します。Prisma は
prisma/migrations/ に SQL の移行ファイルを作成し、適用します。3
Prisma Client を生成する
generated/prisma に生成されます。このコマンドはデータベースに接続しないため、どのプラットフォームでも実行できます。データベースにクエリを実行する
1
Prisma Client を作成する
lib/prisma.ts を作成します。PrismaPg アダプターは、DATABASE_URL を使用して PgBouncer 経由で接続します。2
CRUD クエリを実行する
script.ts を作成します。3
HTTP でデータを配信する
server.ts を作成します。これは、POST /todos で todo を作成し、すべての GET リクエストに対して todo の一覧を返す最小構成の HTTP サーバーです。SQL コンソールで確認する
ClickHouse Cloud コンソールで対象サービスの SQL console を開き、データベースとpublic スキーマを展開して Todo テーブルを選択します。あわせて _prisma_migrations テーブルも表示されます。これは、Prisma Migrate が適用済みの移行を記録するテーブルです。
Todo テーブルには、HTTP エンドポイント経由で追加した 2 行が格納されています。
トラブルシューティング
次のステップ
- 接続: 接続文字列、PgBouncer、TLS
- 設定: Postgres と PgBouncer のパラメータをチューニングする
- 読み取りレプリカ: 読み取り負荷の高いワークロードをスケールさせる
- ローカル開発: Docker 上のローカル Postgres を使って開発する
- 本番環境での Prisma Migrate: CI パイプラインで
prisma migrate deployを使用する