D1 de Cloudflare: SQLite en el Edge sin Pagar un Euro

Programación· 5 min de lectura

D1 de Cloudflare: SQLite en el Edge sin Pagar un Euro

El Problema que Resuelve

Cuando empecé a construir aplicaciones con Cloudflare Workers, me encontré con un dilema clásico: necesitaba una base de datos, pero la mayoría de soluciones te obligan a elegir entre:

  • **Bases de datos tradicionales**: Latencia alta, costos predecibles pero elevados
  • **Serverless SQL**: Buena latencia, pero precios que escalan rápido
  • **NoSQL**: Rápido, pero te ata a un ecosistema específico

Entraba D1. Y cambió cómo pienso sobre las bases de datos en el edge.

D1 es SQLite corriendo directamente en la red de Cloudflare. No es un concepto teórico. Es real, funciona, y puedes empezar gratis.

Por Qué D1 es Diferente

SQLite siempre fue considerado "solo para desarrollo local". Pero Cloudflare lo distribuyó globalmente. Ahora tienes:

  • **Lectura y escritura en el edge**: Tu base de datos está cerca de tus usuarios
  • **Réplicas de lectura sin costo**: Distribuye el tráfico de lectura sin pagar extra
  • **Tier gratuito generoso**: Puedes construir aplicaciones reales sin tarjeta de crédito
  • **Patrón multi-tenant nativo**: Ideal para SaaS que quieren escalar sin complicaciones

La magia está en que SQLite es simple. No necesitas gestionar conexiones pooling, replicación compleja, o backups manuales. Cloudflare lo maneja.

Cómo Funciona en Práctica

Aquí viene lo importante: dejar de leer teoría y ver código.

Crear una Base de Datos

```bash npx wrangler d1 create mi-base-datos ```

Eso es todo. Cloudflare crea una instancia SQLite y te da credenciales.

Conectar desde un Worker

```typescript export default { async fetch(request, env) { const db = env.DB; // Inyectada automáticamente

const users = await db .prepare('SELECT id, email FROM users WHERE active = ?') .bind(true) .all();

return Response.json(users); } }; ```

Nota: No hay conexión explícita. No hay pooling. Solo llamas al método y funciona. Cloudflare maneja la distribución automáticamente.

Patrón Multi-Tenant Real

Este es donde D1 brilla. Imagina que construyes una SaaS para pequeños negocios españoles. Cada cliente necesita sus datos aislados.

Con D1, puedes hacer esto:

```typescript export default { async fetch(request, env) { const { tenantId } = request.params; const db = env.DB;

// Cada tenant tiene su tabla lógica const data = await db .prepare(` SELECT * FROM data WHERE tenant_id = ? AND created_at > datetime('now', '-30 days') `) .bind(tenantId) .all();

return Response.json(data); } }; ```

La lectura ocurre en el edge más cercano al usuario. Si tu cliente está en Barcelona, la réplica de lectura sirve desde ahí. Sin latencia innecesaria.

Las Réplicas de Lectura que No Cuestan Nada

Esta es la parte que me sorprendió cuando lo probé.

Cloudflare te permite crear réplicas de lectura en el tier gratuito. Esto significa:

  • **Escrituras centralizadas**: Todas van a la base de datos primaria
  • **Lecturas distribuidas**: Se sirven desde réplicas cercanas
  • **Sin sincronización manual**: Cloudflare lo hace por ti

Para aplicaciones de lectura intensiva (dashboards, reportes, búsquedas), esto es game-changing. Puedes servir datos desde múltiples ubicaciones sin pagar extra.

```typescript // Leer desde réplica (automático) const results = await db.prepare('SELECT ...).all();

// Escribir va a primaria (automático) await db.prepare('INSERT INTO ...').run(); ```

No hay API diferente. Cloudflare lo maneja internamente.

Cuándo D1 Tiene Sentido

No es para todo, pero para muchos casos de uso es perfecto:

✅ SaaS con múltiples tenants: Cada cliente aislado, datos pequeños a medianos ✅ Aplicaciones de contenido: Blogs, wikis, documentación con datos estáticos ✅ Dashboards y reportes: Lecturas frecuentes, escrituras ocasionales ✅ APIs de bajo tráfico: Menos de cientos de requests por segundo ✅ Prototipado rápido: Necesitas base de datos hoy, no quieres gestionar infraestructura

❌ No tan bueno para: Millones de registros, escrituras masivas concurrentes, datos complejos con muchas relaciones

El Modelo de Precios Real

No voy a inventar números. Pero puedo decirte cómo funciona:

  • **Tier gratuito**: Sorprendentemente generoso para empezar
  • **Escalas con uso real**: Pagas por lo que usas, no por capacidad provisionada
  • **Réplicas de lectura**: Incluidas sin costo adicional en el tier gratuito

Para un SaaS pequeño en España con decenas de clientes, probablemente nunca salgas del tier gratuito. Eso es inusual en infraestructura.

Mi Experiencia Construyendo con D1

Llevar D1 a producción fue más simple de lo esperado.

Lo que funcionó bien:

  • Migraciones con `wrangler d1 migrations`
  • Backups automáticos (Cloudflare los maneja)
  • Debugging con `wrangler d1 execute`
  • Integración perfecta con Next.js y Workers

Lo que requiere atención:

  • Entender que SQLite tiene límites (no es PostgreSQL)
  • Diseñar esquemas pensando en réplicas de lectura
  • Monitorear el tamaño de la base de datos (SQLite tiene límites)

Cómo Empezar Hoy

1. Instala Wrangler: `npm install -g wrangler` 2. Crea un proyecto: `wrangler init mi-proyecto` 3. Crea D1: `wrangler d1 create mi-bd` 4. Escribe esquema: SQL puro, nada especial 5. Deploy: `wrangler deploy`

En 30 minutos tienes una base de datos distribuida globalmente.

El Cambio de Mentalidad

D1 me hizo pensar diferente sobre infraestructura.

Antes: "Necesito un servidor de base de datos robusto, replicado, con backups" Ahora: "Cloudflare maneja eso. Yo me enfoco en el producto"

Eso es lo que significa edge computing real. No es solo latencia baja. Es menos cosas que gestionar, menos operaciones, más tiempo para construir.

Conclusión

D1 no es la respuesta para todo. Pero para SaaS bootstrapped, aplicaciones de contenido, y cualquier cosa que corra en Cloudflare Workers, es difícil encontrar algo mejor.

El hecho de que tengas réplicas de lectura gratuitas en el tier gratuito es simplemente bueno para el ecosistema. Significa que puedes construir aplicaciones serias sin invertir en infraestructura desde el día uno.

Acción: Si usas Cloudflare Workers, prueba D1 en tu próximo proyecto. Crea una tabla, escribe algunos datos, consulta desde el edge. Verás por qué cambié mi stack.

La mejor infraestructura es la que no tienes que pensar en ella.