Une introduction à DuckDB : Qu'est-ce que c'est et pourquoi l'utiliser ?
Dans le domaine de la science des données et de l'analytique, l'extraction d'informations à partir de données implique souvent une série d'étapes, généralement menées en Python à l'aide de bibliothèques comme pandas. Bien que puissant, pandas peut rencontrer des problèmes de performance avec les grands ensembles de données et les opérations gourmandes en ressources.
Si vous recherchez un équilibre entre fonctionnalité robuste et efficacité, DuckDB apparaît comme une excellente alternative. En tant que base de données analytiques à grande vitesse et conviviale, DuckDB transforme le traitement des données dans Python et R.
Cet article se penche sur la question :
- Caractéristiques et capacités uniques de DuckDB
- Avantages de DuckDB par rapport aux outils traditionnels de manipulation de données
- Cas d'utilisation pratiques démontrant le potentiel de DuckDB
- Directives pour travailler avec DuckDB en Python et R
À la fin de cet article, vous comprendrez pourquoi DuckDB est un outil qui mérite d'être pris en considération pour vos tâches d'analyse de données, quelles que soient la taille des données et la complexité des opérations impliquées.
Qu'est-ce que DuckDB ?
DuckDB est un système de gestion de base de données (SGBD) libre et gratuit, intégré, en cours de traitement, relationnel et de traitement analytique en ligne (OLAP). Cela fait beaucoup de mots et d'acronymes, alors décomposons-les :
- Par " in-process", nous entendons que les fonctionnalités du SGBD s'exécutent au sein de l'application à laquelle vous essayez d'accéder, au lieu d'un processus externe auquel votre application se connecte.
- OLAP signifie que la base de données est conçue pour l'analyse des données. Il existe également des bases de données OLTP (OnLine Transaction Processing), conçues pour traiter des données transactionnelles volumineuses.
La principale différence entre OLAP et OLTP réside dans la manière dont les données sont stockées. Les bases de données OLTP stockent généralement les données par enregistrement en veillant à ce que toutes les données associées à un enregistrement soient stockées à proximité les unes des autres dans la mémoire. Ils sont également optimisés pour lire et écrire des lignes de manière efficace.
En revanche, les bases de données OLAP sont généralement orientées par colonnes, ce qui signifie que les données sont organisées par colonnes. Toutes les données associées à une colonne sont stockées à proximité les unes des autres dans la mémoire, et la base de données est optimisée pour lire et calculer efficacement sur les colonnes.
DuckDB étant une base de données OLAP, toutes les données stockées sont organisées par colonnes. En outre, DuckDB est optimisé pour effectuer des requêtes complexes sur les données (par exemple, des jointures, des agrégations, des regroupements, etc.) - consultez le cursus de compétences SQL Fundamentals pour en savoir plus.
Si vous connaissez SQLite, la façon la plus simple de concevoir DuckDB est de le considérer comme sa réplique axée sur l'analyse. C'est ce qui explique la popularité de DuckDB, qui exploite la simplicité de SQLite et les fonctionnalités de Snowflake sur votre ordinateur local. DuckDB répond au besoin d'une solution de base de données intégrée pour le traitement analytique.
Principales caractéristiques de DuckDB
Jetons un coup d'œil à quelques-unes des principales caractéristiques de DuckDB.
Requêtes analytiques rapides
DuckDB est incroyablement rapide, ce qui peut surprendre ceux qui connaissent les bases de données qui gèrent les charges de travail OLAP, comme PostgreSQL. Traditionnellement, les bases de données OLAP ont tendance à avoir des temps de réponse lents car elles traitent généralement plus de données.
Cependant, DuckDB fonctionne avec un moteur d'interrogation vectorisé en colonnes, ce qui permet d'utiliser efficacement le cache de l'unité centrale et d'accélérer les temps de réponse pour les charges de travail d'interrogation analytique.
Prise en charge de SQL et intégration avec d'autres langages de programmation
DuckDB permet aux utilisateurs d'exécuter des requêtes SQL complexes et fournit des API pour Java, C, C++, etc. Il est également profondément intégré à Python et R, ce qui permet aux utilisateurs de réaliser des analyses de données interactives efficaces ; ainsi, vous pouvez interagir avec DuckDB à partir de votre langage de programmation préféré. Vous avez également accès à des mots-clés SQL supplémentaires qui facilitent l'écriture des requêtes SQL, tels que EXCLUDE, REPLACE et ALL.
Note: DuckDB n'a pas de dépendances externes, vous n'avez donc pas à vous soucier des problèmes de dépendances.
Gratuit et open-source
DuckDB est en libre accès et compte plusieurs contributeurs actifs, ce qui signifie que les développements et les améliorations peuvent être mis en œuvre rapidement. Il est également gratuit, même s'il ne le restera peut-être pas pour toujours.
Cas d'utilisation de DuckDB
Les deux cas d'utilisation les plus courants de DuckDB sont l'analyse interactive des données et l'informatique de pointe.
Découvrons-les l'une après l'autre.
Analyse interactive des données
L'analyse des données décrit la série d'étapes impliquées dans le traitement et la modélisation des données. L'objectif de l'analyse des données est de découvrir des informations utiles pour tirer des conclusions et prendre des décisions fondées sur des données.
Aujourd'hui, les entreprises emploient des data scientists et des analystes qui assument cette responsabilité en utilisant des technologies telles que les langages de programmation Python et R pour mener leurs analyses.
DuckDB offre une meilleure alternative à ceux qui préfèrent utiliser SQL pour leur développement local que SQLite, qui a du mal à gérer les charges de travail OLAP en raison de son manque de fonctionnalité pour l'analyse des données.
Informatique de pointe
Les bases de données intégrables, comme DuckDB, permettent aux utilisateurs d'analyser les données à la périphérie. L'informatique en périphérie est un paradigme émergent d'informatique distribuée, qui se réfère à une gamme de réseaux et d'appareils amenés ou rapprochés de l'endroit où ils sont requis.
Le traitement des données plus près de l'endroit où elles sont requises permet d'améliorer les temps de réponse et de préserver la bande passante.
Démarrer avec DuckDB
Votre environnement détermine les étapes nécessaires à l'installation de DuckDB, mais vous trouverez le guide d'installation complet dans la documentation de DuckDB.
Pour l'essentiel, c'est assez simple. Vous n'avez besoin que de quelques lignes de code puisque DuckDB est une solution intégrée. Il ne nécessite pas non plus de serveur et n'a pas de dépendances externes.
Voici un exemple d'installation de DuckDB à l'aide de Python :
pip install duckdb==0.8.0
Et dans R :
install.packages("duckdb")
Voyons maintenant quelques exemples de code.
Travailler avec DuckDB en Python
Une fois que vous avez installé DuckDB, il est très simple de commencer. Il vous suffit de vous rendre sur le site import duckdb
dans votre environnement, puis de vous connecter à une base de données existante ou d'en créer une nouvelle si nécessaire.
Par exemple :
import duckdb
connection = duckdb.connect()
Comme aucun fichier de base de données n'a été transmis comme paramètre à la méthode connect()
, une nouvelle base de données sera créée.
Cependant, la méthode la plus simple pour commencer à exécuter des requêtes SQL avec DuckDB est d'utiliser la méthode sql()
.
# Source: Basic API usage - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.sql('SELECT 42').show()
L'exécution de cette commande lancera une base de données en mémoire stockée globalement dans le module Python et renverra une relation, qui est essentiellement une représentation symbolique de la requête.
Notez que la requête n'est pas exécutée tant que le résultat n'est pas explicitement demandé, comme suit :
# Source: Execute SQL - https://duckdb.org/docs/guides/python/execute_sql.html
results = duckdb.sql('SELECT 42').fetchall()
print(results)
"""
[(42,)]
"""
Nous pouvons également utiliser la méthode df()
pour convertir les données en DataFrame Pandas :
results_df = duckdb.sql('SELECT 42').df()
print(results)
"""
42
0 42
"""
Vous pouvez également utiliser l'une des nombreuses méthodes d'ingestion de données pour lire les données en mémoire :
# Source: Python API - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.read_csv('example.csv') # read a CSV file into a Relation
duckdb.read_parquet('example.parquet')# read a Parquet file into a Relation
duckdb.read_json('example.json') # read a JSON file into a Relation
duckdb.sql('SELECT * FROM "example.csv"') # directly query a CSV file
Avis de non-responsabilité: Si vous utilisez la méthode sql()
sans vous connecter au préalable à une base de données existante, toutes les données stockées dans les fichiers seront perdues après l'arrêt du programme. Vous pouvez éviter cela en établissant une connexion à l'aide de la méthode connect()
dont nous avons parlé au début de la section.
Conclusion et autres ressources
DuckDB est une base de données OLAP utilisée par les professionnels des données, tels que les data scientists et les analystes, pour analyser les données de manière rapide et efficace. Il s'appuie sur un moteur d'exécution de requêtes SQL capable d'exécuter des requêtes complexes sur de grands ensembles de données.
DuckDB s'intègre également à de nombreux autres langages de programmation, de sorte qu'il est possible d'y accéder à partir de votre langue préférée.
Pour poursuivre votre apprentissage, consultez l'aide-mémoire sur les bases de SQL et découvrez comment DuckDB a fait de SQL un citoyen de premier ordre dans DataLab.