Introducción
Hasta ahora, DuckDB funcionaba como un motor SQL embebido en procesos locales o notebooks: rápido, sin servidor dedicado y con soporte nativo para Parquet. Pero en entornos cloud donde múltiples servicios necesitan acceder a los mismos datasets —por ejemplo, un pipeline de ML en Kubernetes y una app de BI en Serverless—, la falta de un protocolo remoto limitaba su adopción en producción. La solución tradicional implicaba migrar a bases de datos pesadas como PostgreSQL o usar soluciones intermedias como Arrow Flight SQL, que añaden complejidad y overhead de red.
Quack cambia el paradigma al exponer un protocolo HTTP nativo sobre el motor de DuckDB. Con esto, cualquier aplicación puede enviar consultas SQL a una instancia remota de DuckDB sin perder rendimiento, manteniendo la compatibilidad con el formato de almacenamiento nativo (Parquet) y evitando conversiones intermedias. La versión 1.5.3 ya incluye el soporte como extensión autoloadable, y la roadmap apunta a integrarlo con DuckLake —el «catálogo distribuido» de DuckDB— para 2026.
Qué ocurrió
El 31 de mayo de 2026, el equipo de DuckDB anunció Quack, un protocolo HTTP para convertir instancias de DuckDB en servidores accesibles por múltiples clientes. A diferencia de soluciones como Arrow Flight SQL —que depende de Apache Arrow y RPC—, Quack usa HTTP puro con payloads en formato nativo de DuckDB (.duckdb/.parquet), lo que reduce el overhead de serialización. Según benchmarks internos, transfiere datasets un 3.5× más rápido que Arrow Flight y supera a PostgreSQL en consultas pequeñas gracias a la optimización de round-trips:
POST /quack/v1/query HTTP/1.1
Host: duckdb-server:8080
Content-Type: application/json
{
"query": "SELECT * FROM read_parquet('dataset.parquet') WHERE id > 1000",
"format": "json"
}El protocolo se activa mediante una extensión en DuckDB 1.5.3+:
-- En el servidor remoto
INSTALL quack;
LOAD quack;
CALL quack_set_port(8080);
CALL quack_start();Para los clientes, la interacción es transparente:
import duckdb
conn = duckdb.connect("http://duckdb-server:8080/quack/v1")
result = conn.execute("SELECT COUNT(*) FROM my_table").fetchall()Impacto para DevOps / Infraestructura / Cloud / Seguridad
DevOps y operaciones
Quack permite escalar DuckDB horizontalmente sin cambiar de motor. En entornos como AKS o EKS, una sola instancia de DuckDB puede servir consultas a cientos de pods, reduciendo la complejidad de orquestación. Por ejemplo, un equipo de datos puede:
- Centralizar datasets en S3 (usando DuckLake) y exponerlos vía Quack a microservicios en Kubernetes.
- Eliminar réplicas de PostgreSQL para workloads read-heavy, reemplazándolas por instancias de DuckDB en pods efímeros.
- Reducir costos al no necesitar un RDS PostgreSQL para análisis ad-hoc.
Benchmark interno de DuckDB Labs (marzo 2026) muestra que una consulta sobre 10GB de datos en Parquet:
| Motor | Latencia (ms) | Throughput (MB/s) | CPU % |
|---|---|---|---|
| PostgreSQL 16 | 1200 | 8 | 45 |
| DuckDB + Quack | 340 | 28 | 12 |
Quack está diseñado para integrarse con S3-compatible storage a través de DuckLake, el catálogo distribuido de DuckDB. Esto permite:
- Consultas directas sobre objetos en S3 sin necesidad de descargarlos localmente.
- Caching inteligente en el servidor Quack, evitando relecturas de archivos Parquet.
- Transacciones ligeras para workloads de ETL, con soporte de
BEGIN/COMMITlimitado a operaciones sobre el mismo archivo.
Ejemplo de despliegue en AWS EKS con Helm:
# values.yaml para el chart de DuckDB
quack:
enabled: true
port: 8080
storage:
type: s3
bucket: "analytics-data"
region: "us-east-1"
cacheSizeMB: 512Seguridad
El protocolo HTTP expone nuevos vectores de ataque si no se configura correctamente:
- Autenticación: Quack no incluye autenticación por defecto. Se recomienda frontarlo con un API Gateway (como Kong o AWS ALB) con:
– Rate limiting para prevenir DoS.
- TLS obligatorio: Usar certificados autofirmados o Let’s Encrypt en el puerto 8080.
- Sandboxing: Restringir el servidor Quack a un namespace de Kubernetes con políticas de Pod Security Admission (PSA).
Detalles técnicos
Arquitectura del protocolo
Quack opera sobre HTTP/1.1 con los siguientes endpoints:
| Endpoint | Método | Descripción | Payload Ejemplo |
|---|---|---|---|
