Skip to content

Architecture Notes

1. Cloudflare D1 Driver Analysis

Current Driver: github.com/peterheb/cfd1

This is an unofficial Go client and database/sql driver for Cloudflare's D1 database service.

cfd1 is the correct choice for a Go API that calls D1 externally via HTTP. It's the only database/sql compatible driver for HTTP API access to D1.

Limitations to Be Aware Of

  1. No transaction support via db.Begin() - HTTP connections are stateless
  2. Each query = HTTP round-trip - adds latency compared to local SQLite
  3. Workaround: Multiple semicolon-separated statements in a single query are supported

Example Usage

import (
    "database/sql"
    _ "github.com/peterheb/cfd1"
)

// Connection string format
driver := "cfd1"
dsn := "d1://CLOUDFLARE_ACCOUNT_ID:CLOUDFLARE_API_TOKEN@CLOUDFLARE_DB_NAME"
db, err := sql.Open(driver, dsn)

2. Summary

D1 Driver

  • it's the right choice for external HTTP access
  • Be aware of the no-transaction limitation
  • Consider batching queries when possible to reduce HTTP round-trips

References

  • cfd1 Driver: https://pkg.go.dev/github.com/peterheb/cfd1
  • Cloudflare D1 Docs: https://developers.cloudflare.com/d1/