Ces dernières années, on entend de plus en plus parler de DuckDB, SGBDR (Système de Gestion de Bases de Données Relationnelles) orienté analytique, grâce à sa conception légère et performante.

Mais DuckDB est-il adapté à une utilisation dans un environnement de BI d’entreprise « traditionnel » de type ETL (Extract Transform Load) - Restitution ?

Nous avons déjà notre petite idée, mais nous tenterons au long de cet article de déterminer si DuckDB peut être intégré dans ce type d’environnement.

Pour cela, nous testerons DuckDB en tant que DWH dans un flux BI comprenant un ETL et un outil de restitution, et nous le comparerons à MySQL, une solution bien établie dans ce domaine.

Qu'est-ce que DuckDB ?

DuckDB est une base de données open-source créée pour exécuter efficacement des requêtes analytiques sur des volumes de données modestes à intermédiaires.

Surnommé le "SQLite analytique", DuckDB est optimisé pour s’intégrer directement dans des environnements applicatifs et travailler avec des fichiers locaux, comme les fichiers CSV, Parquet ou JSON, sans avoir besoin d’une installation serveur.

Présentation du cas d'usage et architecture du flux de données

Pour évaluer la pertinence de DuckDB dans un flux de BI, nous avons mis en place le scénario suivant :

Test de DuckDB dans un flux ETL - DWH

1. Sources de données :

Un fichier CSV de 120 Mo

2. ETL :

Deux outils testés :

  • Talend Open Studio (8.0.1)
  • MyReport Data (6.0.2)

pour charger le fichier CSV et envoyer les données vers le DWH.

3. Entrepôt de données :

Comparaison entre :

  • DuckDB (1.1.3)
  • MySQL

comme Data Warehouse.

4. Restitution :

Deux outils testés :

  • Power BI (2.139)
  • MyReport Builder (6.0.2)

pour importer les données à partir du DWH.

Flux témoin

Nous testons 2 flux :

  • Talend → MySQL → Power BI
  • MyReport Data → MySQL → MyReport Builder

afin de pouvoir comparer leurs performances avec DuckDB.

Test de DuckDB dans un flux ETL - DWH

L’ensemble des outils utilisés disposent d’un connecteur natif MySQL.

Flux Talend - DuckDB - PowerBI

Test de DuckDB dans un flux ETL - DWH

Paramétrage

Constats

  • Le temps de chargement des données à partir de Talend dans la base DuckDB est environ 7 fois plus lent qu’avec MySQL.
  • Depuis la base DuckDB, les données ont été chargées dans Power BI deux fois plus rapidement que depuis MySQL.
  • Le connecteur ODBC de DuckDB pour Power BI impose une contrainte : il requiert de préciser une requête SQL explicite. Contrairement au connecteur MySQL, il ne permet pas d’importer directement des tables entières ou d’effectuer des analyses dynamiques sans requête.
  • Il n’est pas possible d’utiliser plusieurs instances du connecteur DuckDB dans un même rapport Power BI, ce qui constitue une limitation majeure pour des analyses BI complexes (impossibilité de charger plusieurs tables de la base de données, hormis en une seule requête SQL).
  • DuckDB dispose de 2 modes de concurrence :
    • Un seul processus peut à la fois lire et écrire dans la base
    • Plusieurs processus peuvent lire la base de données, mais aucun processus ne peut écrire

Flux MyReport Data - DuckDB - MyReport Builder

Test de DuckDB dans un flux ETL - DWH

Paramétrage

Nous tentons de connecter MyReport à DuckDB à l’aide du connecteur ODBC dédié préalablement installé.

Constats

  • MyReport Data ne permet pas de se connecter à DuckDB pour y charger les données.
  • MyReport Builder ne permet pas de se connecter à DuckDB en tant que source de données

Synthèse comparative : DuckDB Vs MySQL en tant que DWH

Comme on s’en doutait, les résultats ne sont pas en la faveur de DuckDB :

Critères MySQL DuckDB
Connexion d’outil ETL à la base de données Connecteur natif existant et fonctionnel Connecteur JDBC / ODBC dédié à installer, non fonctionnel avec certains ETL
 Vitesse de chargement de données ETL → DWH Plus rapide Plus lente
Gestion Client-Serveur Serveur requis Aucun serveur requis
Indexation et performance Optimisée OLTP Orientée OLAP
Connexion d’outil de restitution à la base de données Connecteur natif existant et fonctionnel Connecteur ODBC dédié à installer, limité ou non fonctionnel avec certains outils
Vitesse de chargement de données DWH → Restitution Plus lente Plus rapide
Ecosystème et intégration Optimisé pour la BI Limité pour la BI
Concurrence des accès en lecture / écriture MVCC (Multi-Version Concurrency Control) Blocage des écritures pendant la lecture

Conclusion : DuckDB est-il adapté à un environnement BI classique ? 

Nous sommes convaincus que DuckDB est un SGDB performant, mais clairement pas pour une utilisation dans un environnement BI classique, où MySQL, PostegreSQL ou d’autres solutions orientées Data Warehouse demeurent des choix beaucoup plus pertinents.

Nos consultants Next Decision sont experts certifiés DuckDB et vous accompagnent dans votre projet DuckDB. Nous pouvons également vous former, Contactez-nous !