DuckDB 2.0 : ce qui le rend plus rapide
Original : Why DuckDB 2.0 is faster
Pourquoi c'est important
L'I/O asynchrone réduit de moitié la latence sur S3 sans changer le code utilisateur.
DuckDB 2.0, attendu à l'automne, apporte un I/O asynchrone qui réduit le temps de requête sur S3 de 18,8 s à 7,7 s sur un fichier Parquet de 2,2 Go et 228 millions de lignes.
DuckDB 2.0 est en alpha et Mehdi Ouazza, ingénieur chez MotherDuck, a testé ses principales nouveautés sur un laptop M5 contre AWS S3. Résultat le plus marquant : l'I/O asynchrone. Sur un fichier Parquet de 2,2 Go hébergé sur S3 (votes Stack Overflow, 228 millions de lignes, 2 268 row groups), la même requête GROUP BY passe de 18,8 secondes sous DuckDB 1.5.5 à 7,7 secondes sous la 2.0 alpha — sans modifier une seule ligne de SQL.
L'explication est mécanique. En version 1.5.5, chaque worker enchaîne téléchargement, attente réseau, puis décodage : pendant l'attente, le CPU est idle ; pendant le décodage, aucun téléchargement n'est en vol. En 2.0, un pool dédié gère exclusivement les téléchargements, maintenant des dizaines de row groups en transit simultanément. Les workers de calcul trouvent toujours un bloc prêt à décoder. Réseau et CPU travaillent en parallèle plutôt qu'en alternance.
L'auteur signale que ces chiffres sont obtenus depuis une connexion domestique vers us-east-1, ce qui pénalise les deux versions également. Depuis du compute cloud, les gains seraient encore plus nets. Deux autres fonctionnalités sont évoquées dans l'article complet, liées à la modélisation des données, mais l'I/O asynchrone est qualifié de changement «le plus facile et le plus excitant» car il ne requiert aucune modification côté utilisateur.