Serverloses Computing löste das Problem „keine Server zu verwalten" für Anwendungscode, aber Datenbanken waren der unbequeme Nachzügler. Sie konnten einen Worker in Millisekunden am Edge ausführen und ihm dann beim Warten auf eine Datenbank zusehen, die in einer einzigen weit entfernten Region liegt. Cloudflare D1 schließt diese Lücke: Es ist eine echte SQL-Datenbank, auf SQLite aufgebaut, die im Netzwerk von Cloudflare lebt und sich direkt an Ihre Workers bindet. Sie schreiben gewöhnliches SQL und werden nur für die Abfragen abgerechnet, die Sie tatsächlich ausführen.

Dieser Leitfaden erklärt, was D1 ist, was es kostet, wie Sie es aus einem Worker abfragen und wann Sie es KV oder einer klassischen Postgres-Datenbank vorziehen sollten.

Kurzfassung

  • D1 ist eine serverlose SQL-Datenbank auf Basis von SQLite, direkt an Cloudflare Workers gebunden
  • Der kostenlose Tarif ist großzügig: 5 Millionen gelesene und 100.000 geschriebene Zeilen pro Tag, plus 5 GB Speicher
  • Sie zahlen für gelesene und geschriebene Zeilen, nicht für Betriebszeit: untätige Datenbanken kosten nichts
  • Es nutzt vertrautes SQL mit vorbereiteten Anweisungen, sodass es kaum eine Lernkurve gibt
  • Es harmoniert mit dem Rest der Plattform, Workers AI , R2 und KV, um vollständige Apps zu bauen
  • Verwalten Sie Ihre Datenbanken visuell mit meiner kostenlosen Desktop-App Easy Cloudflare D1

Was Cloudflare D1 ist

Cloudflare D1 ist eine verwaltete, serverlose Datenbank: ein relationaler SQL-Speicher auf Basis von SQLite, einer der bewährtesten Datenbank-Engines der Welt. „Serverlos" bedeutet hier, dass Sie nie eine Instanz bereitstellen, eine Größe wählen oder etwas am Laufen halten. Sie erstellen eine Datenbank, binden sie an einen Worker und führen SQL aus. Cloudflare kümmert sich um Speicherung, Beständigkeit und Skalierung.

Weil es Standard-SQL spricht, fühlt sich D1 für jeden, der schon einmal eine relationale Datenbank genutzt hat, sofort vertraut an. Sie definieren Tabellen, schreiben SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen, erstellen Indizes und verwenden Transaktionen. Der Unterschied ist operativer Natur: Es gibt keinen Connection-Pool zu tunen, keinen Server zu patchen und keine Kosten im Leerlauf.

Cloudflare D1 Preise und kostenloser Tarif

Das Abrechnungsmodell von D1 ist auf die beste Art ungewöhnlich: Sie zahlen für Abfragen, gemessen in gelesenen und geschriebenen Zeilen, nicht für Zeit. Eine untätige Datenbank kostet nichts, weil keine Instanz läuft. Aus den offiziellen D1-Preisen für 2026:

Workers Free-Tarif

RessourceTageslimit
Gelesene Zeilen5 Millionen pro Tag
Geschriebene Zeilen100.000 pro Tag
Speicher5 GB insgesamt

Workers Paid-Tarif

RessourceInklusive, dann
Gelesene ZeilenErste 25 Milliarden / Monat, dann 0,001 $ pro Million
Geschriebene ZeilenErste 50 Millionen / Monat, dann 1,00 $ pro Million
SpeicherErste 5 GB, dann 0,75 $ pro GB-Monat

Es gibt keine Datentransfer- oder Egress-Gebühren. Ein nützliches Optimierungsdetail: Indizes können abrechenbare Zeilenlesevorgänge drastisch reduzieren, indem Abfragen weniger Zeilen scannen, gegen einen kleinen Anstieg des Schreibvolumens. Bei leselastigen Workloads hält gutes Indexieren sowohl Ihre Latenz als auch Ihre Rechnung niedrig.

D1 aus einem Worker abfragen

Sie binden eine D1-Datenbank in Ihrer wrangler.toml und greifen dann über env.DB darauf zu. D1 verwendet vorbereitete Anweisungen, die Ihre Abfragen vor SQL-Injection schützen, indem sie den Abfragetext von den Werten trennen.

 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};

Das Einfügen von Daten folgt demselben Muster:

1await env.DB
2  .prepare("INSERT INTO posts (title, body, published) VALUES (?, ?, ?)")
3  .bind("Hello D1", "My first edge database post", 1)
4  .run();

Sie können auch mehrere Anweisungen bündeln, um sie effizient in einer Hin- und Rückreise auszuführen, was der empfohlene Ansatz ist, wenn Sie mehrere zusammengehörige Schreibvorgänge haben.

Cloudflare D1 vs KV vs Postgres

Das richtige Speicherprimitiv zu wählen ist wichtig. So vergleicht sich D1 mit den beiden, gegen die es am häufigsten abgewogen wird.

BedarfBeste WahlWarum
Relationale Daten, Abfragen, JoinsD1Echtes SQL mit Tabellen, Indizes und Transaktionen
Einfache Key-Value-Abfragen, Konfiguration, CachingKVOptimiert für schnelle Lesevorgänge einzelner Schlüssel am Edge
Großer bestehender relationaler Workload, komplexe ErweiterungenPostgres (z. B. über Hyperdrive)Ausgereifte Engine für schwere, funktionsreiche Workloads

Kurz gesagt: Verwenden Sie KV, wenn Sie einfach so schnell wie möglich einen Wert anhand eines Schlüssels abrufen müssen. Verwenden Sie D1, wenn Ihre Daten relational sind und Sie sie mit SQL abfragen möchten. Greifen Sie zu einer vollständigen Postgres-Datenbank (mit der sich Workers verbinden können, beschleunigt durch Hyperdrive), wenn Sie einen großen, etablierten relationalen Workload haben oder Postgres-spezifische Funktionen benötigen, die SQLite nicht bietet.

Wann Cloudflare D1 die richtige Wahl ist

D1 passt hervorragend, wenn:

  • Ihre Daten relational sind und von SQL-Abfragen, Joins und Indizes profitieren
  • Sie auf Workers aufbauen und Ihre Datenbank auf derselben Plattform haben wollen
  • Ihr Workload sprunghaft oder niedrig bis mäßig ist, sodass Pay-per-Query eine ständig laufende Instanz schlägt
  • Sie keinen operativen Mehraufwand wollen: kein Bereitstellen, Patchen oder Connection-Pooling
  • Sie mit dem Funktionsumfang von SQLite zufrieden sind, der die überwiegende Mehrheit der Anwendungsbedürfnisse abdeckt

Weniger geeignet ist es für sehr große Datensätze, die seine Grenzen überschreiten, oder Workloads, die von Postgres-spezifischen Erweiterungen abhängen. Verbinden Sie für diese stattdessen eine dedizierte Datenbank aus Ihrem Worker.

Ein realistischer Anwendungsfall

Eine typische D1-Anwendung: ein Blog oder ein kleines SaaS-Backend, bei dem ein Worker Anfragen bedient, Beiträge oder Benutzerdatensätze aus D1 abfragt, hochgeladene Dateien und Bilder in R2 speichert, häufig genutzte Werte in KV cacht und optional Workers AI für eine Funktion wie Zusammenfassung aufruft. Alles läuft auf einer Plattform, am Edge, ohne Server und mit einer Rechnung, die mit der tatsächlichen Nutzung skaliert. Das ist dasselbe Architekturmuster, das hinter dem Cloudflare Pages Benutzersystem steckt, das ich gebaut habe.

D1 visuell verwalten

Migrationen auszuführen und Daten über die Befehlszeile zu inspizieren ist in Ordnung, aber ein grafischer Client macht die tägliche Arbeit schneller. Meine kostenlose Desktop-App Easy Cloudflare D1 lässt Sie Datenbanken und Tabellen durchsuchen, Abfragen ausführen und Ihre D1-Daten über eine übersichtliche Oberfläche unter Windows, macOS und Linux verwalten, wobei Ihre Anmeldedaten lokal auf Ihrem eigenen Rechner verschlüsselt sind. Und falls Ihr Stack D1 mit KV zum Caching kombiniert, leistet meine kostenlose App Easy Cloudflare KV dasselbe für Ihre Key-Value-Namespaces.

Wichtigste Erkenntnisse

  • D1 ist eine serverlose SQL-Datenbank auf Basis von SQLite, direkt an Cloudflare Workers gebunden
  • Der kostenlose Tarif deckt 5 Millionen Lese- und 100.000 Schreibvorgänge pro Tag mit 5 GB Speicher ab
  • Die Abrechnung erfolgt pro gelesener und geschriebener Zeile, nicht pro Stunde; untätige Datenbanken kosten nichts
  • Es nutzt Standard-SQL mit sicheren vorbereiteten Anweisungen, sodass die Lernkurve minimal ist
  • Verwenden Sie KV für Key-Value-Abfragen, D1 für relationales SQL und dediziertes Postgres für schwere oder erweiterungsspezifische Workloads
  • D1 kombiniert sich mit R2, KV und Workers AI, um vollständige Edge-Anwendungen zu bauen

Häufig gestellte Fragen

Was ist Cloudflare D1? D1 ist eine serverlose SQL-Datenbank auf Basis von SQLite, die im Netzwerk von Cloudflare läuft und sich direkt an Workers bindet. Sie schreiben Standard-SQL und stellen nie einen Server bereit oder verwalten ihn. Cloudflare kümmert sich um Speicherung, Beständigkeit und Skalierung.

Ist Cloudflare D1 kostenlos? Es gibt einen kostenlosen Tarif im Workers Free-Tarif: 5 Millionen gelesene und 100.000 geschriebene Zeilen pro Tag, mit 5 GB Speicher. Viele kleine Anwendungen laufen vollständig innerhalb dieser Grenzen. Der Workers Paid-Tarif erhöht die enthaltenen Mengen erheblich.

Wie ist D1 bepreist? Sie zahlen für gelesene und geschriebene Zeilen, nicht für Betriebszeit. Im Paid-Tarif sind die ersten 25 Milliarden gelesenen und 50 Millionen geschriebenen Zeilen pro Monat enthalten, danach kostet es 0,001 $ pro Million Lesevorgänge und 1,00 $ pro Million Schreibvorgänge, mit Speicher zu 0,75 $ pro GB-Monat über die ersten 5 GB hinaus. Es gibt keine Egress-Gebühren.

Was ist der Unterschied zwischen D1 und KV? KV ist ein Key-Value-Speicher, optimiert für schnelle Lesevorgänge einzelner Schlüssel, ideal für Caching und Konfiguration. D1 ist eine relationale SQL-Datenbank für strukturierte Daten, die Sie mit Joins, Indizes und Transaktionen abfragen möchten. Verwenden Sie KV für Abfragen nach Schlüssel, D1 für relationale Abfragen.

Kann D1 Postgres ersetzen? Für viele kleine bis mittlere Anwendungen ja, weil SQLite die gängigen relationalen Bedürfnisse abdeckt. Für sehr große Datensätze, schwere gleichzeitige Schreib-Workloads oder Postgres-spezifische Erweiterungen ist eine dedizierte Postgres-Datenbank, aus Ihrem Worker verbunden (beschleunigt durch Hyperdrive), die bessere Wahl.

Wie frage ich D1 aus einem Worker ab? Binden Sie die Datenbank in Ihrer wrangler-Konfiguration und greifen Sie über env.DB darauf zu. Verwenden Sie vorbereitete Anweisungen mit gebundenen Parametern, zum Beispiel env.DB.prepare(“SELECT … WHERE id = ?”).bind(id).all(), was Abfragen vor SQL-Injection schützt.