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 :
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.
L’ensemble des outils utilisés disposent d’un connecteur natif MySQL.
Flux Talend - DuckDB - PowerBI
Paramétrage
- Talend Data Integration est connecté à DuckDB à l’aide d’un connecteur JDBC dédié installé manuellement (version 1.1.3), téléchargeable sur : https://mvnrepository.com/artifact/org.duckdb/duckdb_jdbc
- Power BI est connecté à DuckDB à l’aide d’un connecteur ODBC dédié installé manuellement (version 1.1.0), téléchargeable sur :
https://duckdb.org/docs/api/odbc/windows - DuckDB est utilisé en mode persistant, la base de données est stockée localement dans un fichier .duckdb
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
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 !