sell儲存與資料庫
rocket_launch

Hyperdrive

資料庫不用搬家——Hyperdrive 讓它連起來又快又像在全球各地。

2支援 Postgres 與 MySQL
Pooling連線重複利用
Caching查詢快取預設開啟
Free免費方案即可用
lightbulb

Hyperdrive 是什麼?

Hyperdrive 是一個「加速器」,它擋在你既有資料庫(例如 PostgreSQL 或 MySQL)的前面,讓你從 Cloudflare Workers 查詢它時變得很快——無論請求來自世界哪個角落。

一般來說,「區域型資料庫(regional database,指只住在單一機房的資料庫)」從遠方連過去很慢,而且每個請求都重開一條新連線又會多出延遲。Hyperdrive 用「連線池」和「查詢快取」同時解決這兩個問題。

fast_forward

把它想成…

一條通往資料庫的 VIP 快速通道。與其每次都從頭撥號連線(慢吞吞的握手),Hyperdrive 會保留幾條已經接通的熱線、還記住最近的答案——所以大多數請求都能直接跳過等待。

help

為什麼要用 Hyperdrive?

Workers 跑遍全球,但你的資料庫只待在一個地方。沒有幫手的話,每次查詢都要付一趟長距離來回加上建立連線的成本。Hyperdrive 把這個痛點拿掉,讓你既有的 SQL 資料庫表現得像專為邊緣(edge)打造一樣。

hub

連線池

重複利用一池已經建好的熱連線,而不是每個請求都重開一條。

bolt

查詢快取

把熱門讀取查詢的結果快取起來,重複查詢幾乎瞬間回傳。

move_up

不用搬遷

保留你現有的 Postgres / MySQL 供應商,只要讓 Workers 透過 Hyperdrive 連過去就好。

public

宛如全球部署

遠方的 Workers 查詢單一區域資料庫時,不再有平常那種拖延。

target

什麼時候該用 Hyperdrive?

storage

你已經有 SQL 資料庫

在 AWS、Neon、PlanetScale 等地方既有、又想保留的 Postgres 或 MySQL。

travel_explore

全球使用者、單一資料庫

使用者遍布全球,但只有一個區域資料庫,遠方連起來很慢。

sync_problem

連線數爆掉

無伺服器函式把資料庫的連線數用光——用連線池就能解決。

menu_book

讀取為主的查詢

同樣的 SELECT 一直重複出現,快取就能帶來大幅加速。

rocket_launch

怎麼開始用?

把你資料庫的「連線字串(connection string,就是包含主機、帳號、密碼、資料庫名稱的那一串 URL)」交給 Hyperdrive。接著把它綁定,然後在 Worker 裡用一般的 Postgres 驅動程式連線即可。

  1. 建立 Hyperdrive 設定

    用連線字串讓它指向你既有的資料庫。Wrangler 會印出一組 id。

    bash
    npx wrangler hyperdrive create my-db-config \
      --connection-string="postgres://user:password@db-host.example.com:5432/mydb"
  2. 綁定到 Worker

    把這個 id 加進 wrangler.jsonc 的 HYPERDRIVE 綁定。

    json
    {
      "hyperdrive": [
        {
          "binding": "HYPERDRIVE",
          "id": "<paste-your-id-here>"
        }
      ]
    }
  3. 安裝 Postgres 驅動程式

    使用熱門的 pg 套件(順便裝它的 TypeScript 型別)。

    bash
    npm i pg
    npm i -D @types/pg
  4. 透過 Hyperdrive 查詢

    讀取 env.HYPERDRIVE.connectionString,照平常方式連線——連線池和快取都交給 Hyperdrive 處理。

    js
    import { Client } from "pg";
    
    export default {
      async fetch(request, env, ctx) {
        const client = new Client({
          connectionString: env.HYPERDRIVE.connectionString,
        });
        await client.connect();
    
        const { rows } = await client.query("SELECT * FROM products LIMIT 10");
        ctx.waitUntil(client.end());
        return Response.json(rows);
      },
    };
  5. 部署上線

    發布 Worker,查詢就會走上快速通道了。

    bash
    npx wrangler deploy
school

重點概念

link

連線字串

包含主機、連接埠、帳號、密碼和資料庫名稱、用來找到你資料庫的那串 URL。

pool

連線池

一組事先建好、保持熱線並在請求間共用的連線,藉此省下建立連線的成本。

cached

查詢快取

最近讀取查詢的結果會被記住,一模一樣的重複查詢就能跳過資料庫。

verified

資料庫仍是唯一來源

Hyperdrive 只負責加速存取;你真正的資料仍然存放在你自己的資料庫裡。

tips_and_updates

小提示與注意事項

tune

依資料新鮮度調整快取

查詢快取預設開啟,很適合那些不會每秒都變動的資料。如果某個查詢一定要回傳最新的值,可以針對它關閉快取。

  • Hyperdrive 在免費與付費方案都能用,可以免費先試。
  • 支援 PostgreSQL(以及 Neon、CockroachDB、Timescale 等相容資料庫)和 MySQL。
  • 用 ctx.waitUntil(client.end()) 關閉連線,才不會拖慢你的回應。
  • 想要 Cloudflare 原生的 SQL 資料庫?可以看看 D1。