Sobre el proyecto
duckbridge es un plugin de conector de Trino que permite ejecutar consultas SQL contra bases de datos DuckDB – ya sean archivos embebidos o servidores remotos que utilicen el protocolo Quack RPC – con pushdown de proyecciones, predicados de dominio, LIMIT/ORDER BY … LIMIT y una amplia gama de funciones escalares. A diferencia de los conectores típicos basados en JDBC, duckbridge empuja las operaciones soportadas hacia DuckDB en lugar de extraer los datos hacia Trino para su evaluación, y garantiza la corrección verificando que DuckDB evalúe las expresiones de manera idéntica a Trino (incluyendo NULLs, Unicode y reglas de fecha/zona horaria). El conector se empaqueta como un plugin estándar de Trino para su despliegue en el coordinador y los workers.
**Características clave:**
- **Conectividad:** DuckDB embebido vía JDBC (`jdbc:duckdb:`) o DuckDB remoto vía el protocolo Quack (`jdbc:quack://`). Los servidores remotos simplemente ejecutan `CALL quack_serve(…)`; no se requiere instalación en el lado del conector.
- **Pushdown:** El pushdown de proyecciones y predicados siempre está activo. LIMIT, TopN y un amplio catálogo de funciones escalares se envían como SQL nativo de DuckDB. Un pequeño conjunto de funciones (por ejemplo, ICU case folding, hashes criptográficos) que DuckDB no puede igualar nativamente está respaldado por la extensión opcional `trino_parity` de DuckDB.
- **Modos de pushdown de strings:** Un dial configurable controla cómo se manejan los predicados de strings – desde ningún pushdown (`NULL_ONLY`) hasta un pushdown completo con verificación en tiempo de ejecución (`PARITY`). El modo predeterminado `PARITY` sondea la colación binaria y la disponibilidad de extensiones de DuckDB en la primera conexión, fallando rotundamente si se detecta una divergencia.
- **Extensión:** La extensión `trino_parity` está publicada en el repositorio de extensiones comunitarias de DuckDB. Para el modo embebido, los binarios firmados de Linux están incluidos en el release; en otras plataformas, puede instalarla una vez o ejecutar en modo `GUARDED`. Los servidores remotos deben cargar la extensión al iniciar (o proporcionar una ruta en el servidor).
- **Escaneo de datos opcional:** Se pueden habilitar por catálogo funciones de tabla experimentales para conjuntos de datos Lance y archivos Vortex, incluyendo búsqueda vectorial, de texto completo e híbrida.
- **Gestión dinámica de catálogos:** Los catálogos pueden crearse en tiempo de ejecución mediante `CREATE CATALOG … USING duckbridge` cuando la gestión dinámica de catálogos de Trino está habilitada.
- **Mapeo de tipos:** Mapeo sin pérdidas para tipos de DuckDB incluyendo UUID, `TIMESTAMPTZ`, `UBIGINT` (como `DECIMAL(20,0)`) y `VARBINARY`. Los tipos no soportados como `HUGEINT` son rechazados.
Duckbridge está construido para Trino 483 e integra DuckDB 1.5.5. El proyecto incluye un motor columnar experimental basado en Arrow para la transferencia directa de datos, y los planes futuros incluyen el pushdown de agregados y una variante compatible con Doris.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.