Avantages et inconvénients des environnements R

R

Comparaison des différents environnements R proposés dans cet aide-mémoire.

Auteur·rice·s
Affiliations

Nassab ABDALLAH

Damien EUZENAT

Date de publication

Invalid Date

Modifié

1 juillet 2024

  Environnements R
          Avantages
        Inconvénients
       R base
  • absence de dépendance (ne s’appuie sur aucun package) : pas besoin d’installer un package, de gérer sa mise à jour, de craindre pour sa disparition
  • garantit la rétrocompatibilité du code : utile dans des environnements de production
  • dans certains cas, se révèle la solution la plus simple
  • parfois, la seule façon de faire
  • ne permet pas de gérer des bases de données plus volumineuses que la mémoire vive
  • syntaxe plus complexe que tidyverse et parfois incohérente
  • souvent moins rapide que les autres environnements
  • demande plus de connaissance sur le fonctionnement du langage R
  • certaines tâches sont plus simples à traiter avec les autres environnements
       tidyverse
  • plus simple à prendre en main
  • syntaxe plus simple que les autres environnements et cohérente
  • largement utilisé dans la communauté R
  • tend à s’imposer comme la référence de la gestion de données sur R
  • syntaxe utilisée également dans les packages arrow / duckdb
  • ne permet pas de gérer des bases de données plus volumineuses que la mémoire vive
  • globalement moins rapide que data.table
  • certaines tâches sont plus difficiles à réaliser que dans les autres environnements
  • dette technique importante : la syntaxe est plus souvent modifiée au gré des mises à jour du langage. Ainsi, la rétrocompatibilité est moins bien assurée, ce qui peut se révéler un problème dans un environnement de production
       data.table
  • faible dépendance : garantit une rétrocompatibilité élevée, utile dans un environnement de production
  • syntaxe proche du R base
  • généralement plus rapide que ses concurrents R base et tidyverse
  • syntaxe plus concise que tidyverse
  • utile dans la gestion des grosses volumétries ou lorsque des considérations de vitesse d’exécution sont en jeu
  • ne permet pas de gérer des bases de données plus volumineuses que la mémoire vive
  • syntaxe parfois jugée comme plus difficile à maîtriser que celle du tidyverse
  • certaines tâches sont plus simples à traiter avec les autres environnements
  • moins utilisé que tidyverse, communauté plus réduite
       duckdb
  • base de de données open source. Se rapproche d’outils tels SQLite ou PostgreSQL
  • optimisé pour des traitements de données orientées colonnes (OLAP : traitement analytique en ligne) : plus performant pour les analyses statistiques que SQLite
  • simple d’utilisation par rapport à des outils comme PostgreSQL
  • permet de gérer des bases de données plus volumineuses que la mémoire vive
  • permet la syntaxe en SQL et en tidyverse, pratique pour ceux qui connaissent
  • compatible avec de nombreux autres langages (tel Python)
  • tend à être plus rapide que ses concurrents
  • capacités très importantes pour gérer de très grosses volumétries, mais a ses limites face aux données les plus volumineuses
  • à privilégier pour les données saturant ou excédant la mémoire vive, moins utile pour les données de taille petite ou moyenne
  • outil plus récent : est susceptible de subir des changements dans les prochaines années
  • la syntaxe tidyverse est largement, mais pas totalement prise en compte, et elle peut changer à la marge
  • documentation officielle encore incomplète
  • outil moins utilisé que les autres environnements, et surtout par des personnes ayant plus d’expérience
       arrow
  • très similaire à duckdb
  • projet plus ancien et plus mature que duckdb, moins de changements à attendre dans le futur
  • met à disposition le format de compression de données très utilisé parquet
  • très similaires à duckdb
  • moins de fonctions standards du tidyverse prises en charge par rapport à duckdb
  • jointures de bases volumineuses moins performantes qu’avec duckdb
  • offre moins de fonctionnalités que duckdb

Un “benchmarking” des vitesses de traitement des différents packages est proposé ici : https://duckdblabs.github.io/db-benchmark/.