30 points par GN⁺ 2026-01-18 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • DuckDB est un moteur SQL open source qui permet de traiter rapidement et simplement de grands volumes de données tabulaires sur une seule machine, et il est aujourd’hui largement utilisé en data engineering
  • L’installation est simple, sans dépendances, et il peut être exécuté immédiatement dans un environnement Python, ce qui le rend adapté à la CI et à l’automatisation des tests
  • Grâce à l’optimisation des requêtes analytiques, il peut offrir des performances jusqu’à 1 000 fois supérieures à SQLite ou Postgres, tout en permettant d’interroger directement différents formats de fichiers (csv, parquet, json)
  • Avec une syntaxe SQL conviviale (EXCLUDE, COLUMNS, QUALIFY, chaînage de fonctions, etc.) et une API Python, il permet de développer efficacement des pipelines complexes
  • Grâce à la conformité ACID, aux UDF haute performance et à l’extension d’intégration PostgreSQL, il s’impose comme une alternative aux lakehouses pour les données de taille intermédiaire

Vue d’ensemble de DuckDB

  • DuckDB est un moteur SQL in-process axé sur l’optimisation des requêtes analytiques
    • Il s’exécute à l’intérieur de l’application, sans serveur séparé, et ne nécessite aucun service externe comme Postgres
    • Il est spécialisé dans les opérations massives de jointure et d’agrégation, et peut offrir des performances jusqu’à 100 à 1 000 fois supérieures à celles des moteurs orientés transactions (OLTP)
  • Son principal cas d’usage est le traitement par lots (batch processing), en lisant directement depuis le disque de gros fichiers csv, parquet, json, etc.
  • Il peut aussi servir à l’exploration légère de données, par exemple pour interroger rapidement un fichier CSV en ligne de commande

Principales caractéristiques

  • Vitesse

    • DuckDB est l’un des moteurs open source de traitement de données les plus rapides, et figure régulièrement en tête des benchmarks
    • Comparé à Polars, DataFusion, Spark ou Dask, DuckDB domine sur les petits volumes, tandis que Spark et Dask restent compétitifs à très grande échelle
  • Installation simple et absence de dépendances

    • DuckDB est distribué sous la forme d’un binaire précompilé unique et peut être installé immédiatement en Python avec pip install duckdb
    • Son absence de dépendances rend l’installation bien plus simple que celle de grands frameworks comme Spark
    • Combiné à uv, il est possible de préparer un environnement Python en moins d’une seconde
  • CI et tests

    • Grâce à son démarrage rapide et à sa légèreté, il est bien adapté aux environnements de CI et de test pour les pipelines de données
    • Là où les tests basés sur Spark étaient auparavant lents et complexes, DuckDB facilite à la fois la configuration de l’environnement et le maintien de la cohérence avec la production
  • Expérience d’écriture SQL

    • DuckDB permet de rédiger du SQL et de valider la syntaxe rapidement
    • Il est plus adapté que le mode local de Spark ou AWS Athena à l’exécution immédiate et au développement itératif
    • Il fournit une interface avec autocomplétion
  • Syntaxe SQL conviviale

    • DuckDB inclut de nombreuses extensions SQL conviviales
      • prise en charge de EXCLUDE, COLUMNS, QUALIFY, des modificateurs d’agrégation pour fonctions de fenêtre et du chaînage de fonctions (first_name.lower().trim())
    • Ces fonctionnalités permettent d’effectuer de manière concise des sélections et transformations de colonnes complexes
  • Prise en charge de multiples formats de fichiers

    • Il permet d’interroger directement des données depuis S3, des URL web ou des fichiers locaux
    • Il propose des options de typage strict pour les CSV, afin d’éviter les erreurs dues à des données d’entrée non structurées
  • API Python

    • En Python, il est possible de définir étape par étape des pipelines basés sur des CTE, et d’inspecter facilement les données à chaque étape
      • les appels à duckdb.sql() permettent de chaîner les requêtes SQL
      • grâce à l’exécution différée (lazy execution), on peut vérifier les résultats intermédiaires sans perte de performance
    • Le test des fonctions à chaque étape est possible, ce qui améliore l’efficacité des tests en CI
  • Conformité ACID

    • DuckDB offre une garantie ACID complète, même pour les traitements sur de gros volumes de données
    • Cette propriété en fait une alternative intermédiaire à des formats de lakehouse comme Iceberg ou Delta Lake
  • UDF haute performance et extensions communautaires

    • Il est possible d’écrire des fonctions définies par l’utilisateur (UDF) haute performance en C++
    • Les Community Extensions permettent d’installer immédiatement des extensions via des commandes comme INSTALL h3 FROM community
      • Exemple : prise en charge de l’indexation hexagonale (h3) pour les données géospatiales
  • Documentation

    • Toute la documentation est fournie dans un seul fichier Markdown, ce qui facilite son utilisation pour l’entraînement de LLM ou la recherche dans un éditeur de code
    • La fonctionnalité de repli de code permet de copier facilement uniquement les sections nécessaires

Utilisation concrète et effets

  • Dans le projet open source Splink, l’adoption de DuckDB comme backend par défaut a permis
    • de réduire les problèmes rencontrés par les utilisateurs, d’accélérer le travail et de simplifier le développement et les tests des fonctionnalités

Extensions à suivre de près

  • PostgreSQL Extension : permet de connecter et d’interroger directement une base de données Postgres depuis DuckDB
  • pg_duckdb : embarque le moteur DuckDB à l’intérieur de Postgres pour combiner traitement transactionnel et analytique
    • après de futures améliorations de l’optimisation des index Postgres et du filter push-up, une adoption plus large est possible

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.