Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comparaison cas d'usage arrow et duckdb #530

Merged
merged 7 commits into from
Jun 23, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions 03_Fiches_thematiques/Fiche_duckdb.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,22 @@ Du point de vue d'un statisticien utilisant `R`, le *package* `duckdb` permet de
- __*Traduction en SQL*__: `duckdb` traduit automatiquement les instructions `dplyr` en requêtes SQL (de la même façon qu'`arrow` traduit ces instructions en code C++). Il arrive toutefois que certaines fonctions de `dplyr` n'aient pas d'équivalent direct en `duckdb` et ne puissent être traduites automatiquement. Dans ce cas (qui est heureusement moins fréquent qu'avec `arrow`), il faut parfois utiliser une fonction SQL directement ou trouver une solution pour contourner le problème. La @sec-sql donne quelques trucs et astuces dans ce cas.
- __Interopérabilité__: `duckdb` est conçu pour être interopérable entre plusieurs langages de programmation tels que `R`, Python, Java, C++, etc. Cela signifie que les données peuvent être échangées entre ces langages sans avoir besoin de convertir les données, d'où des gains importants de temps et de performance.

### Quand utiliser `duckdb` plutôt que `arrow` ?

Les **packages** `duckdb` et `arrow` ont des cas d'usage très similaires (voir la fiche [Manipuler des données avec `arrow`](#arrow)), mais on peut préférer l'un à l'autre selon les cas. On peut également les utiliser ensemble pour profiter de chacun de leurs avantages. Le tableau ci-dessous compare quelques cas d'usage de ces deux **packages** :
JulienBlasco marked this conversation as resolved.
Show resolved Hide resolved

| Je souhaite... | arrow | duckdb |
| ------------------------------------------------------------------------- | ----- | ------ |
| Optimiser mes traitements pour des données volumineuses | ✔️ | ✔️ |
| Travailler sur un fichier .parquet sans le charger entièrement en mémoire | ✔️ | ✔️ |
| Travailler sur un fichier .csv️ sans le charger entièrement en mémoire | ❌ | ✔️ |
| Utiliser la syntaxe `dplyr` pour traiter mes données | ✔️ | ✔️ |
| Utiliser du langage SQL pour traiter mes données | ❌ | ✔️ |
| Utiliser des fonctions statistiques qui n'existent pas dans arrow | ❌ | ✔️ |
| Écrire un fichier .parquet | ✔️ | ❌ |
| Modifier des valeurs dans ma table sans la réécrire en entier | ❌ | ✔️ |
JulienBlasco marked this conversation as resolved.
Show resolved Hide resolved


## Installation de `duckdb`

Il suffit d'installer le _package_ `duckdb`, qui contient à la fois `DuckDB` et une interface pour que `R` puisse s'y connecter.
Expand Down