Aller au contenu

DuckDB 2.0 LTS ajoute un mode serveur, les déclencheurs et VARIANT

DuckDB 2.0.0, une version à support long terme sortie le 21 octobre, ajoute un mode serveur, les déclencheurs et VARIANT. Les versions antérieures à la 2.0 ne peuvent pas lire ses fichiers.

Par Tech AI Wire Team

4 min de lecture

XLinkedIn
Le visuel de DuckDB pour la version 2.0 : un canard en vol dessiné en pointillés sur fond jaune.
Photo: DuckDB

En chiffres

commits since DuckDB 1.5, per the DuckDB team
~20,000
earliest end of support for DuckDB 2.0
Oct 2027
extended end of support for DuckDB 1.5
March 2027

DuckDB a publié la version 2.0.0 le 21 octobre 2026. C'est une version à support long terme (LTS), que le projet maintiendra au moins jusqu'en octobre 2027. Elle ajoute un mode serveur intégré, des déclencheurs (triggers) SQL et un nouveau parseur. Elle apporte aussi un changement sans retour : les fichiers de base de données écrits par la 2.0 ne peuvent être ouverts par aucune version antérieure. Les mises à niveau demandent donc un plan.

DuckDB est une base de données SQL open source pour l'analytique. Comme SQLite, elle tourne à l'intérieur de votre programme plutôt que comme un serveur séparé. Contrairement à SQLite, elle est conçue pour de grosses requêtes analytiques sur de grandes tables et des fichiers comme Parquet et CSV.

Ce qu'apporte DuckDB 2.0

L'annonce de DuckDB présente la 2.0 comme la plus grosse version fonctionnelle de l'équipe à ce jour, construite à partir de près de 20 000 commits depuis la version 1.5. « DuckDB 2.0 est avant tout une version de fonctionnalités », écrit l'équipe DuckDB. La version porte le nom de code « Cinnamon Teal », d'après l'espèce de canard Spatula cyanoptera. La version publiée sur GitHub utilise le nom « Cyanoptera ».

FonctionnalitéCe qu'elle fait
Mode serveur QuackFait tourner DuckDB comme un serveur auquel d'autres clients se connectent
DéclencheursCREATE TRIGGER exécute du SQL automatiquement, avant ou après une modification d'une table
Type VARIANTStocke des données semi-structurées, comme du JSON, et en extrait la structure commune pour une meilleure compression et plus de vitesse
E/S asynchronesLit les fichiers Parquet et CSV pendant l'exécution des requêtes, avec plusieurs demandes en cours à la fois, surtout pour accélérer le stockage cloud comme Amazon S3
Nouveau parseur SQLUn parseur basé sur PEG est désormais utilisé par défaut ; les extensions peuvent ajouter leur propre syntaxe SQL, et les erreurs indiquent où se trouve le problème
Fuseaux horaires natifsLes fuseaux horaires, les calendriers et les collations n'ont plus besoin de la bibliothèque ICU

Un déclencheur est une règle stockée dans la base : quand une ligne change, exécuter aussi ce SQL. DuckDB 2.0 prend en charge les déclencheurs BEFORE et AFTER, au niveau de la ligne ou de l'instruction. Certaines combinaisons ne sont pas encore prises en charge, comme un déclencheur BEFORE ... FOR EACH ROW sur UPDATE.

Quack transforme DuckDB en serveur

Jusqu'ici, DuckDB ne servait qu'un programme à la fois. Avec Quack, CALL quack_serve(...) lance un serveur, et un client s'y connecte avec ATTACH 'quack:...'. Une nouvelle instruction CONNECT bascule toute une session vers une base distante. L'outil en ligne de commande gagne les options correspondantes -serve et -connect.

Par défaut, le serveur n'écoute que sur la machine locale. Pour un accès distant, l'équipe DuckDB recommande de le placer derrière un proxy inverse qui gère le chiffrement TLS. InfoWorld rapportait en août que Quack facilite aussi l'interrogation à distance de bases PostgreSQL et MySQL.

Changements incompatibles à vérifier avant la mise à niveau

Selon l'annonce de la version et les notes de version sur GitHub, ces changements peuvent casser du code ou des builds existants :

  • Les fichiers sont à sens unique. DuckDB 2.0 lit et écrit les fichiers de base de données existants. « Les versions de DuckDB antérieures à 2.0 ne peuvent pas lire les fichiers de base de données créés par DuckDB 2.0 », prévient l'équipe.
  • Nouveau parseur par défaut. SET enable_legacy_parser = true; rétablit l'ancien.
  • Les lambdas à flèche simple sont désactivées. Une syntaxe comme x -> x + 1 est désactivée. SET lambda_syntax = 'enable_single_arrow'; la réactive jusqu'à ce que la version 2.1 la supprime.
  • La division entière par zéro lève désormais une erreur au lieu de renvoyer NULL.
  • Les builds exigent C++17, contre C++11 auparavant, et les builds de release utilisent désormais le compilateur Clang. Les builds par amalgamation sont dépréciés.
  • Les Mac Intel sont progressivement abandonnés. Les extensions communautaires ne sont plus compilées pour macOS sur x86_64, et DuckDB 2.1 en abandonne la prise en charge.

Les sources divergent sur un détail. L'avant-première d'InfoWorld décrivait une API C stable pour les extensions. L'annonce de la version indique que la C API v2 remaniée n'est « pas encore marquée comme stable », car l'équipe veut d'abord la tester en conditions réelles.

Périodes de support

VersionPrise en charge jusqu'à
DuckDB 2.0 (LTS)Au moins octobre 2027
DuckDB 1.5Mars 2027 (prolongée)
DuckDB 1.4Fin novembre 2026

Ce que cela change pour les développeurs

Traitez cette version comme une migration planifiée, pas comme une mise à jour de routine.

  • Copiez vos fichiers de base de données avant la première ouverture. Dès que DuckDB 2.0 écrit dans un fichier, un outil plus ancien ou un collègue resté en 1.5 ne peut plus le lire. Mettez à niveau ensemble tout ce qui lit un fichier partagé.
  • Testez sur une copie de la production. L'équipe DuckDB recommande d'abord un système miroir. Pour les usages critiques, elle suggère d'attendre la première version corrective, prévue en novembre.
  • Vérifiez votre client. L'outil en ligne de commande et le client Python sont prêts dès maintenant. Les clients Go, R et Java, ainsi que certaines extensions, « peuvent prendre quelques jours », précise l'équipe.
  • Cherchez deux motifs dans votre SQL. Repérez les lambdas à flèche simple et toute division entière susceptible de diviser par zéro. Les deux se comportent désormais différemment.
  • N'exposez pas directement un serveur Quack. Gardez-le sur localhost, ou placez devant lui un proxy inverse TLS, comme le conseille l'équipe.
  • Les équipes en 1.4 doivent migrer en premier. Son support se termine fin novembre 2026. Passez donc à la 2.0, ou à la 1.5 pour une étape plus petite.

Sources

  1. Announcing DuckDB 2.0.0 - DuckDB
  2. DuckDB v2.0.0 release notes - GitHub
  3. DuckDB 2.0 coming this fall with client-server mode - InfoWorld

Articles liés