← Hyperdrive (Postgres & MySQL) / hyperdrive
Začínáme
Hyperdrive zrychluje přístup k vašim stávajícím databázím z Cloudflare Workers, díky čemuž i databáze v jediném regionu působí jako globálně distribuované.
Hyperdrive udržuje fond připojení k vaší databázi v síti Cloudflare, čímž ještě před samotným odesláním dotazu eliminuje sedm zpátečních cest k databázi: navázání TCP spojení (1x), vyjednávání TLS (3x) a ověření v databázi (3x).
Hyperdrive rozlišuje mezi čtecími a zápisovými dotazy do vaší databáze a nejčastější čtecí dotazy ukládá do mezipaměti, čímž zlepšuje výkon a snižuje zátěž vaší zdrojové databáze.
Tento návod vás provede:
- Vytvoření první konfigurace Hyperdrive.
- Vytvoření Cloudflare Worker a jeho navázání na vaši konfiguraci Hyperdrive.
- Navázání připojení k databázi z vašeho Workeru k veřejné databázi.
Předpoklady
Než začnete, ujistěte se, že jste splnili následující:
- Zaregistrujte si účet Cloudflare ↗ pokud jste to ještě neudělali.
- Nainstalujte
Node.js↗. Použijte správce verzí Node, například nvm ↗ nebo Volta ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler vyžaduje verzi Node16.17.0nebo novější. - Mějte veřejně přístupnou databázi PostgreSQL nebo MySQL (nebo kompatibilní). Pokud je vaše databáze v privátní síti, přečtěte si Připojení k privátní databázi pomocí Workers VPC.
1. Přihlaste se
Než vytvoříte binding Hyperdrive, přihlaste se ke svému účtu Cloudflare spuštěním:
npx wrangler loginBudete přesměrováni na webovou stránku s výzvou k přihlášení do dashboardu Cloudflare. Po přihlášení se zobrazí dotaz, zda Wrangler smí provádět změny ve vašem účtu Cloudflare. Přejděte dolů a vyberte Allow pokračovat.
2. Vytvořte Worker
Vytvořte nový projekt s názvem hyperdrive-tutorial spuštěním:
npm create cloudflare@latest -- hyperdrive-tutorialPři nastavení vyberte následující možnosti:
- Pro S čím byste chtěli začít?, vyberte
Hello World example. - Pro Jakou šablonu chcete použít?, vyberte
Worker only. - Pro Jaký jazyk chcete použít?, vyberte
TypeScript. - Pro Chcete používat git pro správu verzí?, vyberte
Yes. - Pro Chcete nasadit svou aplikaci?, vyberte
No(před nasazením provedeme ještě několik změn).
Tímto vytvoříte nový hyperdrive-tutorial adresáři. Váš nový hyperdrive-tutorial adresář bude obsahovat:
- A
"Hello World"Worker nasrc/index.ts. - A
wrangler.jsonckonfigurační soubor.wrangler.jsoncje způsob, jakým vašehyperdrive-tutorialWorker se připojí k Hyperdrive.
Povolení kompatibility s Node.js
Kompatibilita s Node.js je vyžadován pro ovladače databáze a je nutné jej nakonfigurovat pro váš projekt Workers.
Pro data kompatibility 2026-08-04 nebo novější mají projekty Workers a Pages povolené oba nodejs_compat a nodejs_compat_v2 ve výchozím nastavení. Vestavěná runtime API a polyfilly jsou dostupné bez dalšího nastavení. Tyto příznaky se pro tato data kompatibility nepoužívají. Stávající projekty je při aktualizaci data kompatibility nemusí odebírat.
Pokud je vaše datum kompatibility starší než 2026-08-04, přidejte nodejs_compat příznak kompatibility do vašeho Konfigurační soubor Wrangler abyste se přihlásili:
{
"compatibility_flags": [
"nodejs_compat"
]
}compatibility_flags = [ "nodejs_compat" ]Chcete-li vypnout Kompatibilita s Node.js zcela pro datum kompatibility 2026-08-04 nebo novější odeberte pozitivní příznaky, pokud jsou přítomné. Poté přidejte oba no_nodejs_compat a no_nodejs_compat_v2. Příklady konfigurace najdete v Příznak kompatibility s Node.js.
3. Připojte Hyperdrive k databázi
Hyperdrive funguje tak, že se připojí k vaší databázi, globálně sdružuje databázová připojení do poolu a zrychluje přístup k databázi prostřednictvím sítě Cloudflare.
Poskytne zabezpečený connection string, který je dostupný pouze z vašeho Workeru a který můžete použít k připojení k databázi prostřednictvím Hyperdrive. Znamená to, že connection string Hyperdrive můžete použít se svými stávajícími ovladači nebo ORM knihovnami, aniž byste museli výrazně měnit svůj kód.
Chcete-li vytvořit svou první konfiguraci databáze Hyperdrive, přejděte do adresáře, který jste právě vytvořili pro svůj projekt Workers:
cd hyperdrive-tutorialPro vytvoření prvního Hyperdrive budete potřebovat:
- IP adresa (nebo hostname) a port vaší databáze.
- Uživatelské jméno databáze (například
hyperdrive-demo). - Heslo přiřazené k tomuto uživatelskému jménu.
- Název databáze, ke které se má Hyperdrive připojit. Například
postgresnebomysql.
Hyperdrive přijímá kombinaci těchto parametrů ve standardním formátu connection string používaném databázovými ovladači:
postgres://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_nameVětšina poskytovatelů databází nabízí connection string, který můžete přímo zkopírovat a vložit do Hyperdrive.
Chcete-li vytvořit připojení Hyperdrive, spusťte wrangler příkaz a nahraďte zástupné hodnoty předané parametru --connection-string parametru hodnotami vaší existující databáze:
npx wrangler hyperdrive create <YOUR_CONFIG_NAME> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"
mysql://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_nameVětšina poskytovatelů databází nabízí connection string, který můžete přímo zkopírovat a vložit do Hyperdrive.
Chcete-li vytvořit připojení Hyperdrive, spusťte wrangler příkaz a nahraďte zástupné hodnoty předané parametru --connection-string parametru hodnotami vaší existující databáze:
npx wrangler hyperdrive create <YOUR_CONFIG_NAME> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"V případě úspěchu příkaz vypíše vaši novou konfiguraci Hyperdrive:
{
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<example id: 57b7076f58be42419276f058a8968187>"
}
]
}Zkopírujte id pole: tuto hodnotu použijete v dalším kroku, abyste zpřístupnili Hyperdrive ve svém Worker skriptu.
4. Přiřaďte svůj Worker k Hyperdrive
Vazbu musíte vytvořit v Konfigurační soubor Wrangler pro připojení vašeho Workeru ke konfiguraci Hyperdrive. Bindings umožňují vašim Workers přistupovat ke zdrojům, jako je Hyperdrive, na vývojářské platformě Cloudflare.
Chcete-li konfiguraci Hyperdrive svázat s Workerem, přidejte na konec souboru Wrangler následující:
{
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<YOUR_DATABASE_ID>" // the ID associated with the Hyperdrive you just created
}
]
}[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<YOUR_DATABASE_ID>"Konkrétně:
- Hodnota (řetězec), kterou jste nastavili pro
binding(název bindingu) se použije k odkazu na tuto databázi ve vašem Workeru. V tomto tutoriálu pojmenujte bindingHYPERDRIVE. - Binding musí být platný název proměnné v JavaScriptu ↗. Například
binding = "hyperdrive"nebobinding = "productionDB"by byly oba platné názvy pro binding. - Váš binding je ve Workeru dostupný na
env.<BINDING_NAME>.
Pokud chcete během vývoje používat lokální databázi, můžete přidat localConnectionString do konfigurace Hyperdrive připojovacím řetězcem vaší databáze:
{
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<YOUR_DATABASE_ID>", // the ID associated with the Hyperdrive you just created
"localConnectionString": "<LOCAL_DATABASE_CONNECTION_URI>"
}
]
}[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<YOUR_DATABASE_ID>"
localConnectionString = "<LOCAL_DATABASE_CONNECTION_URI>"5. Spusťte dotaz vůči své databázi
Jakmile vytvoříte konfiguraci Hyperdrive a přiřadíte ji ke svému Workeru, můžete proti databázi spustit dotaz.
Instalace databázového ovladače
Pro připojení k databázi budete potřebovat databázový ovladač, který umožňuje ověření a dotazování databáze. V tomto návodu použijete node-postgres (pg) ↗, jeden z nejpoužívanějších ovladačů PostgreSQL.
Chcete-li nainstalovat pg, ujistěte se, že se nacházíte v hyperdrive-tutorial adresáři. Otevřete terminál a spusťte následující příkaz:
# This should install v8.13.0 or later
npm i pgPokud používáte TypeScript, měli byste si nainstalovat také definice typů pro pg:
# This should install v8.13.0 or later
npm i -D @types/pgPo instalaci ovladače můžete vytvořit skript Workeru, který se dotazuje vaší databáze.
Pro připojení k databázi budete potřebovat databázový ovladač, který umožňuje ověření a dotazování databáze. V tomto návodu použijete mysql2 ↗, jeden z nejpoužívanějších ovladačů MySQL.
Chcete-li nainstalovat mysql2, ujistěte se, že se nacházíte v hyperdrive-tutorial adresáři. Otevřete terminál a spusťte následující příkaz:
# This should install v3.13.0 or later
npm i mysql2Po instalaci ovladače můžete vytvořit skript Workeru, který se dotazuje vaší databáze.
Napište Worker
Po nastavení databáze spustíte SQL dotaz přímo ve svém Worker.
Přejděte na hyperdrive-tutorial Worker a otevřete index.ts .
index.ts soubor slouží ke konfiguraci interakcí vašeho Workeru s Hyperdrive.
Naplňte svůj index.ts soubor následujícím kódem:
// pg 8.13.0 or later is recommended
import { Client } from "pg";
export interface Env {
// If you set another name in the Wrangler config file as the value for 'binding',
// replace "HYPERDRIVE" with the variable name you defined.
HYPERDRIVE: Hyperdrive;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
// Create a new client on each request. Hyperdrive maintains the underlying
// database connection pool, so creating a new client is fast.
const sql = new Client({
connectionString: env.HYPERDRIVE.connectionString,
});
try {
// Connect to the database
await sql.connect();
// Sample query
const results = await sql.query(`SELECT * FROM pg_tables`);
// Return result rows as JSON
return Response.json(results.rows);
} catch (e) {
console.error(e);
return Response.json(
{ error: e instanceof Error ? e.message : e },
{ status: 500 },
);
}
},
} satisfies ExportedHandler<Env>;Po přijetí požadavku provede výše uvedený kód následující:
- Vytvoří nového databázového klienta nastaveného tak, aby se k vaší databázi připojoval přes Hyperdrive pomocí connection stringu Hyperdrive.
- Zahájí dotaz prostřednictvím
await sql.query()vypisující všechny tabulky v databázi (vytvořené uživatelem i systémem) jako příklad dotazu. - Vrátí odpověď klientovi ve formátu JSON. Hyperdrive po skončení požadavku automaticky ukončí připojení klienta a podkladové připojení k databázi ponechá otevřené ve svém fondu pro další použití.
Po nastavení databáze spustíte SQL dotaz přímo ve svém Worker.
Přejděte na hyperdrive-tutorial Worker a otevřete index.ts .
index.ts soubor slouží ke konfiguraci interakcí vašeho Workeru s Hyperdrive.
Naplňte svůj index.ts soubor následujícím kódem:
// mysql2 v3.13.0 or later is required
import { createConnection } from "mysql2/promise";
export interface Env {
// If you set another name in the Wrangler config file as the value for 'binding',
// replace "HYPERDRIVE" with the variable name you defined.
HYPERDRIVE: Hyperdrive;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
// Create a new connection on each request. Hyperdrive maintains the underlying
// database connection pool, so creating a new connection is fast.
const connection = await createConnection({
host: env.HYPERDRIVE.host,
user: env.HYPERDRIVE.user,
password: env.HYPERDRIVE.password,
database: env.HYPERDRIVE.database,
port: env.HYPERDRIVE.port,
// The following line is needed for mysql2 compatibility with Workers
// mysql2 uses eval() to optimize result parsing for rows with > 100 columns
// Configure mysql2 to use static parsing instead of eval() parsing with disableEval
disableEval: true,
});
try {
// Sample query
const [results, fields] = await connection.query("SHOW tables;");
// Return result rows as JSON
return new Response(JSON.stringify({ results, fields }), {
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
},
});
} catch (e) {
console.error(e);
return Response.json(
{ error: e instanceof Error ? e.message : e },
{ status: 500 },
);
}
},
} satisfies ExportedHandler<Env>;Po přijetí požadavku provede výše uvedený kód následující:
- Vytvoří nového databázového klienta nastaveného tak, aby se k vaší databázi připojoval přes Hyperdrive pomocí connection stringu Hyperdrive.
- Zahájí dotaz prostřednictvím
await connection.queryvypisující všechny tabulky v databázi (vytvořené uživatelem i systémem) jako příklad dotazu. - Vrátí odpověď klientovi ve formátu JSON. Hyperdrive po skončení požadavku automaticky ukončí připojení klienta a podkladové připojení k databázi ponechá otevřené ve svém fondu pro další použití.
Spuštění ve vývojovém režimu (volitelné)
Svůj Worker můžete otestovat lokálně ještě před nasazením spuštěním wrangler dev. Tím se kód vašeho Workeru spustí na vašem počítači a zároveň se připojí k vaší databázi.
localConnectionString pole funguje jak s lokálními, tak se vzdálenými databázemi a umožňuje vám připojit se přímo k databázi z projektu Worker spuštěného lokálně. Pokud je to vyžadováno, musíte zadat režim SSL/TLS (sslmode=require pro Postgres, sslMode=REQUIRED pro MySQL).
Pro připojení k databázi během lokálního vývoje nakonfigurujte localConnectionString ve vašem wrangler.jsonc:
{
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "your-hyperdrive-id",
"localConnectionString": "postgres://user:password@your-database-host:5432/database",
},
],
}Nebo nastavte proměnnou prostředí:
export CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_HYPERDRIVE="postgres://user:password@your-database-host:5432/database"Poté spusťte lokální vývoj:
npx wrangler dev6. Nasaďte svůj Worker
Nyní můžete nasadit svůj Worker a zpřístupnit tak svůj projekt na internetu. Worker nasadíte spuštěním:
npx wrangler deploy
# Outputs: https://hyperdrive-tutorial.<YOUR_SUBDOMAIN>.workers.devNyní můžete navštívit URL adresu nově vytvořeného projektu a spustit dotaz do vaší ostré databáze.
Pokud je například URL vašeho nového Workeru hyperdrive-tutorial.<YOUR_SUBDOMAIN>.workers.dev, přístupem k https://hyperdrive-tutorial.<YOUR_SUBDOMAIN>.workers.dev/ odešle požadavek na váš Worker, který dotazuje přímo vaši databázi.
Dokončením tohoto tutoriálu jste vytvořili konfiguraci Hyperdrive i Worker pro přístup k dané databázi a svůj projekt jste nasadili globálně.
Další kroky
- Další informace o jak funguje Hyperdrive.
- Jak nakonfigurovat ukládání dotazů do mezipaměti.
- Řešení běžných problémů při připojování databáze k Hyperdrive.
Pokud máte požadavky na nové funkce nebo jste narazili na chyby, sdílejte zpětnou vazbu přímo s týmem Cloudflare, a to prostřednictvím Komunita vývojářů Cloudflare na Discordu ↗.