Calculul serverless a rezolvat problema „niciun server de gestionat" pentru codul aplicației, dar bazele de date au rămas excepția incomodă. Puteai rula un Worker la edge în milisecunde, apoi să-l privești cum așteaptă o bază de date aflată într-o singură regiune îndepărtată. Cloudflare D1 închide acel gol: este o bază de date SQL reală, construită pe SQLite, care trăiește în rețeaua Cloudflare și se leagă direct de Workerii tăi. Scrii SQL obișnuit și ești taxat doar pentru interogările pe care le rulezi efectiv.
Acest ghid explică ce este D1, cât costă, cum îl interoghezi dintr-un Worker și când să-l alegi în locul KV sau al unei baze de date Postgres tradiționale.
Pe scurt
- D1 este o bază de date SQL serverless construită pe SQLite, legată direct de Cloudflare Workers
- Planul gratuit este generos: 5 milioane de rânduri citite și 100.000 de rânduri scrise pe zi, plus 5 GB de stocare
- Ești taxat pentru rândurile citite și scrise, nu pentru timpul de funcționare: bazele de date inactive nu costă nimic
- Folosește un SQL familiar cu instrucțiuni pregătite, așa că aproape nu există curbă de învățare
- Se asociază cu restul platformei, Workers AI , R2 și KV, pentru a construi aplicații complete
- Gestionează-ți bazele de date vizual cu aplicația mea desktop gratuită Easy Cloudflare D1
Ce este Cloudflare D1
Cloudflare D1 este o bază de date gestionată și serverless: un depozit SQL relațional construit pe SQLite, unul dintre cele mai testate motoare de baze de date din lume. „Serverless" aici înseamnă că nu provizionezi niciodată o instanță, nu alegi o dimensiune și nu ții nimic în funcțiune. Creezi o bază de date, o legi de un Worker și rulezi SQL. Cloudflare se ocupă de stocare, durabilitate și scalare.
Pentru că vorbește SQL standard, D1 pare imediat familiar oricui a folosit o bază de date relațională. Definești tabele, scrii instrucțiuni SELECT, INSERT, UPDATE și DELETE, creezi indici și folosești tranzacții. Diferența este operațională: nu există un pool de conexiuni de reglat, niciun server de actualizat și niciun cost în inactivitate.
Prețuri și plan gratuit Cloudflare D1
Modelul de facturare al D1 este neobișnuit în cel mai bun mod: plătești pentru interogări, măsurate în rânduri citite și scrise, nu pentru timp. O bază de date inactivă nu costă nimic, deoarece nicio instanță nu rulează. Din prețurile oficiale D1 pentru 2026:
Plan Workers Free
| Resursă | Limită zilnică |
|---|---|
| Rânduri citite | 5 milioane pe zi |
| Rânduri scrise | 100.000 pe zi |
| Stocare | 5 GB în total |
Plan Workers Paid
| Resursă | Inclus, apoi |
|---|---|
| Rânduri citite | Primele 25 de miliarde / lună, apoi 0,001 $ per milion |
| Rânduri scrise | Primele 50 de milioane / lună, apoi 1,00 $ per milion |
| Stocare | Primii 5 GB, apoi 0,75 $ per GB-lună |
Nu există taxe de transfer de date sau de egress. Un detaliu util de optimizare: indicii pot reduce dramatic citirile de rânduri facturabile, lăsând interogările să scaneze mai puține rânduri, cu prețul unei mici creșteri a volumului de scriere. Pentru sarcinile cu multe citiri, o bună indexare îți menține scăzute atât latența, cât și factura.
Interogarea D1 dintr-un Worker
Legi o bază de date D1 în wrangler.toml, apoi o accesezi prin env.DB. D1 folosește instrucțiuni pregătite, care îți protejează interogările de injecția SQL prin separarea textului interogării de valori.
1export default {
2 async fetch(request, env) {
3 // Read with a parameterised query
4 const { results } = await env.DB
5 .prepare("SELECT id, title FROM posts WHERE published = ? ORDER BY created_at DESC LIMIT 10")
6 .bind(1)
7 .all();
8
9 return Response.json(results);
10 },
11};
Inserarea datelor urmează același tipar:
1await env.DB
2 .prepare("INSERT INTO posts (title, body, published) VALUES (?, ?, ?)")
3 .bind("Hello D1", "My first edge database post", 1)
4 .run();
Poți de asemenea să grupezi mai multe instrucțiuni pentru a le rula eficient într-o singură călătorie dus-întors, ceea ce este abordarea recomandată când ai mai multe scrieri corelate.
Cloudflare D1 vs KV vs Postgres
Alegerea primitivei de stocare potrivite contează. Iată cum se compară D1 cu cele două cu care este cel mai des pus în balanță.
| Nevoie | Cea mai bună alegere | De ce |
|---|---|---|
| Date relaționale, interogări, join-uri | D1 | SQL real cu tabele, indici și tranzacții |
| Căutări simple cheie-valoare, configurare, caching | KV | Optimizat pentru citiri rapide ale unei singure chei la edge |
| Sarcină relațională mare existentă, extensii complexe | Postgres (de ex. prin Hyperdrive) | Motor matur pentru sarcini grele și bogate în funcții |
Pe scurt: folosește KV când vrei doar să preiei o valoare după o cheie cât mai repede posibil. Folosește D1 când datele tale sunt relaționale și vrei să le interoghezi cu SQL. Apelează la o bază de date Postgres completă (la care Workerii se pot conecta, accelerată de Hyperdrive) când ai o sarcină relațională mare și consolidată sau ai nevoie de funcții specifice Postgres pe care SQLite nu le oferă.
Când este Cloudflare D1 alegerea potrivită
D1 se potrivește excelent când:
- Datele tale sunt relaționale și beneficiază de interogări SQL, join-uri și indici
- Construiești pe Workers și vrei baza de date pe aceeași platformă
- Sarcina ta este fluctuantă sau de la mică la moderată, astfel încât plata per interogare bate o instanță mereu activă
- Vrei zero efort operațional: fără provizionare, actualizări sau pooling de conexiuni
- Ești mulțumit de setul de funcții al SQLite, care acoperă marea majoritate a nevoilor aplicațiilor
Este mai puțin potrivit pentru seturi de date foarte mari care îi depășesc limitele sau pentru sarcini care depind de extensii specifice Postgres. Pentru acelea, conectează în schimb o bază de date dedicată din Workerul tău.
Un caz de utilizare realist
O aplicație D1 tipică: un blog sau un backend SaaS mic în care un Worker servește cereri, interoghează postări sau înregistrări de utilizatori din D1, stochează fișiere și imagini încărcate în R2 , pune în cache valorile fierbinți în KV și apelează opțional Workers AI pentru o funcție precum rezumarea. Totul rulează pe o singură platformă, la edge, fără servere și cu o factură care scalează cu utilizarea reală. Acesta este același tipar de arhitectură din spatele sistemului de utilizatori Cloudflare Pages pe care l-am construit.
Gestionarea vizuală a D1
Rularea migrărilor și inspectarea datelor prin linia de comandă este în regulă, dar un client grafic face munca de zi cu zi mai rapidă. Aplicația mea desktop gratuită Easy Cloudflare D1 îți permite să răsfoiești baze de date și tabele, să rulezi interogări și să-ți gestionezi datele D1 dintr-o interfață curată pe Windows, macOS și Linux, cu acreditările tale criptate local pe propria mașină. Iar dacă stiva ta îmbină D1 cu KV pentru caching, aplicația mea gratuită Easy Cloudflare KV face același lucru pentru spațiile tale de nume cheie-valoare.
Concluzii cheie
- D1 este o bază de date SQL serverless construită pe SQLite, legată direct de Cloudflare Workers
- Planul gratuit acoperă 5 milioane de citiri și 100.000 de scrieri pe zi cu 5 GB de stocare
- Facturarea este per rând citit și scris, nu pe oră; bazele de date inactive nu costă nimic
- Folosește SQL standard cu instrucțiuni pregătite sigure, așa că curba de învățare este minimă
- Folosește KV pentru căutări cheie-valoare, D1 pentru SQL relațional și un Postgres dedicat pentru sarcini grele sau specifice extensiilor
- D1 se combină cu R2, KV și Workers AI pentru a construi aplicații edge complete
Întrebări frecvente
Ce este Cloudflare D1? D1 este o bază de date SQL serverless construită pe SQLite, care rulează în rețeaua Cloudflare și se leagă direct de Workers. Scrii SQL standard și nu provizionezi și nu gestionezi niciodată un server. Cloudflare se ocupă de stocare, durabilitate și scalare.
Este Cloudflare D1 gratuit? Există un plan gratuit în planul Workers Free: 5 milioane de rânduri citite și 100.000 de rânduri scrise pe zi, cu 5 GB de stocare. Multe aplicații mici rulează în întregime în aceste limite. Planul Workers Paid mărește substanțial cantitățile incluse.
Cum este tarifat D1? Plătești pentru rândurile citite și scrise, nu pentru timpul de funcționare. În planul Paid, primele 25 de miliarde de rânduri citite și 50 de milioane de rânduri scrise pe lună sunt incluse, apoi este 0,001 $ per milion de citiri și 1,00 $ per milion de scrieri, cu stocarea la 0,75 $ per GB-lună peste primii 5 GB. Nu există taxe de egress.
Care este diferența dintre D1 și KV? KV este un depozit cheie-valoare optimizat pentru citiri rapide ale unei singure chei, ideal pentru caching și configurare. D1 este o bază de date SQL relațională pentru date structurate pe care vrei să le interoghezi cu join-uri, indici și tranzacții. Folosește KV pentru căutări după cheie, D1 pentru interogări relaționale.
Poate D1 să înlocuiască Postgres? Pentru multe aplicații mici și medii, da, deoarece SQLite acoperă nevoile relaționale comune. Pentru seturi de date foarte mari, sarcini grele de scriere concurentă sau extensii specifice Postgres, o bază de date Postgres dedicată, conectată din Workerul tău (accelerată de Hyperdrive), este alegerea mai bună.
Cum interoghez D1 dintr-un Worker? Leagă baza de date în configurația ta wrangler și accesează-o prin env.DB. Folosește instrucțiuni pregătite cu parametri legați, de exemplu env.DB.prepare(“SELECT … WHERE id = ?”).bind(id).all(), care îți protejează interogările de injecția SQL.
Comentarii