À propos du projet

duckbridge est un plugin de connecteur Trino qui vous permet d'exécuter des requêtes SQL sur des bases de données DuckDB – soit des fichiers intégrés, soit des serveurs distants utilisant le protocole Quack RPC – avec un pushdown des projections, des prédicats de domaine, des clauses LIMIT/ORDER BY … LIMIT, et d'une large gamme de fonctions scalaires. Contrairement aux connecteurs JDBC classiques, duckbridge pousse les opérations supportées dans DuckDB plutôt que d'extraire les données vers Trino pour évaluation, et garantit l'exactitude en vérifiant que DuckDB évalue les expressions de manière identique à Trino (y compris les NULLs, l'Unicode et les règles de date/fuseau horaire). Le connecteur est emballé comme un plugin Trino standard pour un déploiement sur le coordinateur et les workers. **Caractéristiques principales :** - **Connectivité :** DuckDB intégré via JDBC (`jdbc:duckdb:`) ou DuckDB distant via le protocole Quack (`jdbc:quack://`). Les serveurs distants exécutent simplement `CALL quack_serve(…)` ; aucune installation côté connecteur n'est requise. - **Pushdown :** Le pushdown des projections et des prédicats est toujours activé. LIMIT, TopN et un large catalogue de fonctions scalaires sont poussés en tant que SQL DuckDB natif. Un petit ensemble de fonctions (ex: pliage de casse ICU, hachages crypto) que DuckDB ne peut pas égaler nativement est supporté par l'extension DuckDB optionnelle `trino_parity`. - **Modes de pushdown des chaînes :** Un réglage configurable contrôle la gestion des prédicats de chaînes – de l'absence de pushdown (`NULL_ONLY`) au pushdown complet avec vérification au runtime (`PARITY`). Le mode `PARITY` par défaut sonde la collation binaire et la disponibilité des extensions de DuckDB lors de la première connexion, échouant explicitement si une divergence est détectée. - **Extension :** L'extension `trino_parity` est publiée sur le dépôt community-extensions de DuckDB. Pour le mode intégré, les binaires Linux signés sont inclus dans la version ; sur d'autres plateformes, vous pouvez l'installer une fois ou fonctionner en mode `GUARDED`. Les serveurs distants doivent charger l'extension au démarrage (ou fournir un chemin côté serveur). - **Scan de données optionnel :** Des fonctions de table expérimentales pour les jeux de données Lance et les fichiers Vortex, incluant la recherche vectorielle, plein texte et hybride, peuvent être activées par catalogue. - **Gestion dynamique du catalogue :** Les catalogues peuvent être créés au runtime via `CREATE CATALOG … USING duckbridge` lorsque la gestion dynamique des catalogues de Trino est activée. - **Mappage de types :** Mappage sans perte pour les types DuckDB incluant UUID, `TIMESTAMPTZ`, `UBIGINT` (en tant que `DECIMAL(20,0)`) et `VARBINARY`. Les types non supportés comme `HUGEINT` sont rejetés. Duckbridge est conçu pour Trino 483 et intègre DuckDB 1.5.5. Le projet inclut un moteur colonnaire expérimental basé sur Arrow pour le transfert direct de données, et les plans futurs incluent le pushdown des agrégats et une variante compatible Doris.