Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

データベースに接続する

最終更新 Markdown で表示Agent セットアップ

Cloudflare Workers は、SQL と NoSQL の両方のデータベースに接続してクエリできます。対象は次のとおりです。

  • Cloudflare 独自のサーバーレス SQL データベース D1
  • Postgres や MySQL などの従来型のホスト型リレーショナルデータベース。Hyperdrive(推奨)を使うと、アクセスを大幅に高速化できます
  • Supabase、MongoDB Atlas、PlanetScale、Prisma などのサーバーレスデータベース

D1 SQL データベース

D1 は Cloudflare 独自の SQL ベースのサーバーレスデータベースです。Workers からのグローバルアクセス向けに最適化されており、ユーザーごと、テナントごと、エンティティごとなど、小さめ(10GB)のデータベースを複数使ってスケールアウトできます。一部のサーバーレスデータベースと同様、D1 の料金はクエリとストレージのコストに基づきます。

データベース ライブラリ / ドライバー 接続方法
D1 Workers バインディングPrismaDrizzle、その他の ORM と連携 Workers バインディングREST API

従来型の SQL データベース

従来型のデータベースは、TCP ソケット でデータベースに接続する SQL ドライバーを使います。TCP は、PostgreSQL や MySQL など多くのデータベースがクライアント接続に使う事実上の標準プロトコルです。 これらのドライバーは、使い慣れた ORM ライブラリやクエリビルダーとも広く互換です。

これには、SupabaseNeon、PlanetScale(MySQL または PostgreSQL)など、PostgreSQL 互換または MySQL 互換のサーバーレスデータベースも含まれます。 これらには、ネイティブの TCP ソケットと Hyperdrive、または後述の サーバーレス HTTP ベースのドライバー のどちらでも接続できます。

データベース 連携 ライブラリ / ドライバー 接続方法
Postgres 直接接続 node-postgresPostgres.js データベースドライバー経由の TCP Socket。最適な性能には Hyperdrive を使用(任意、推奨)
MySQL 直接接続 mysql2mysql データベースドライバー経由の TCP Socket。最適な性能には Hyperdrive を使用(任意、推奨)

サーバーレスデータベース

サーバーレスデータベースは、背後のデータベースへの直接接続を提供する場合と、HTTP ベースのプロキシとドライバー(サーバーレスドライバーとも呼ばれます)を提供する場合があります。

PostgreSQL および MySQL のサーバーレスデータベースでは、使い慣れたネイティブのデータベースドライバーと ORM で背後のデータベースに直接接続できます。接続の高速化とコネクションプーリングには Hyperdrive(推奨)を使います。Hyperdrive を使うと、接続プールは Cloudflare の全リージョンで管理され、Workers からの利用向けに最適化されます。

データベースプロバイダーが管理する HTTP ベースのプロキシへは、サーバーレスドライバーライブラリでも接続できます。従来型の SQL データベース向けのコネクションプーリングを提供し、セキュアな接続を確立するための往復回数を減らす点は、Hyperdrive と似ています。

データベース ライブラリ / ドライバー 接続方法
PlanetScale Hyperdrive (MySQL)Hyperdrive (PostgreSQL)@planetscale/database mysql2mysqlnode-postgresPostgres.js、またはクライアントライブラリ経由の API
Supabase Hyperdrive@supabase/supabase-js node-postgresPostgres.js、またはクライアントライブラリ経由の API
Prisma prisma クライアントライブラリ経由の API
Neon Hyperdrive@neondatabase/serverless node-postgresPostgres.js、またはクライアントライブラリ経由の API
Hasura API fetch() 経由の GraphQL API
Upstash Redis @upstash/redis クライアントライブラリ経由の API
TiDB Cloud @tidbcloud/serverless クライアントライブラリ経由の API

必要なパッケージをインストールしたら、各パッケージが提供する API でデータベースに接続し、操作します。サービスごとの手順は、詳細リンクを参照してください。

認証

データベースに認証が必要な場合は、Wrangler のシークレットで認証情報を安全に保存します。次の wrangler secret コマンドで、Cloudflare Workers プロジェクトにシークレットを作成します。

wrangler secret put <SECRET_NAME>

コードでは、次のスニペットでシークレットの値を取り出します。

const secretValue = env.<SECRET_NAME>;

シークレットの値を使って外部サービスに認証します。たとえば、外部サービスが API キーやデータベースのユーザー名とパスワードを求める場合は、該当サービスのライブラリまたは API でこれらを含めます。

mTLS 認証が必要なサービスでは、mTLS 証明書 でクライアント証明書を提示します。

次のステップ

役に立ちましたか?