以下は、Hyperdrive についてよく寄せられる質問への回答です。
Hyperdrive は Cloudflare の IP アドレス範囲 ↗ を使ってデータベースに接続します。この範囲は、すべての Hyperdrive 設定とほかの Cloudflare 製品で共有されます。
これを使って、データベースのファイアウォールで、アクセスを許可する IP アドレスを制限できます。
Hyperdrive は D1 に対応していません。D1 は、設計上 Workers からの高速な接続を提供するためです。
Hyperdrive は、PostgreSQL のような従来型のリージョン SQL データベースへの接続を高速化するために設計されています。こうしたデータベースは、通常、TCP/IP で通信するデータベースドライバー経由でアクセスします。 D1 と異なり、従来型 SQL データベースへの安全な接続を作るには、クライアント(Worker)とデータベースサーバーの間で複数回のラウンドトリップが必要です。 ラウンドトリップが必要な理由と、Hyperdrive がそれをどう解消するかは、Hyperdrive の仕組み を参照してください。
D1 は、データベース接続の作成にラウンドトリップを必要としません。D1 は、Hyperdrive なしでも Workers からのアクセスで性能が出るように設計されています。
はい。リクエストあたり複数のクエリを発行する Worker では併用してください。Placement は Worker をデータベースの近くで実行し、クエリごとのレイテンシを 20〜30ms から 1〜3ms に下げます。Hyperdrive はコネクションプーリングと接続セットアップを担当します。Placement は、クエリ実行時のネットワーク距離を短縮します。
データベースが AWS、GCP、Azure で動いている場合は placement.region を使います。それ以外の場所でホストしている場合は placement.host を使います。
しません。アプリケーションがデータベースに書き込んでも、Hyperdrive はキャッシュ済みの読み取りクエリ結果を無効化しません。一致する読み取りは、設定した max_age が切れるまでキャッシュ結果を返すことがあり、キャッシュを更新している間の stale_while_revalidate ウィンドウでも、その結果を返せます。
認証、セッション、権限、書き込み直後の読み取りなど、常に最新データが必要な読み取りには、キャッシュ無効の Hyperdrive 設定を使います。キャッシュ戦略の選び方は クエリキャッシュ を参照してください。
使えます。同じデータベースに対して Hyperdrive バインディングを 2 つ設定します。短い鮮度の遅れを許容できる読み取りにはクエリキャッシュを有効にし、必ず最新が必要な読み取りにはクエリキャッシュを無効にします。キャッシュ無効のバインディングでも、Hyperdrive のコネクションプーリングと高速な接続セットアップは利用できます。
オブジェクトリレーショナルマッピング(ORM)ライブラリや認証ライブラリが SQL を管理している場合は、バインディングごとに別のデータベースクライアントを作り、最新の読み取りが必要なコードにはキャッシュ無効のクライアントを渡します。
しません。
Hyperdrive は Workers Free プランで使えますか?
使えます。料金 を参照してください。
Hyperdrive 自体は、コンピュート(CPU)や処理(ウォールクロック)時間には課金しません。Hyperdrive にクエリし、結果を計算する Workers(例: 結果を JSON にシリアライズする、クエリを発行する)は、Workers の料金 に従って課金されます。
公開されている 制限 のドキュメントを参照してください。