Stockage Colonnaire

Data Science
Data & IA
Comprendre le formatage mémoire par colonne (Apache Arrow, Parquet) pour accélérer les requêtes analytiques sur gros volumes.

Quand un jeu de données grandit, la question n’est plus seulement : quelles valeurs contient-il ? Elle devient aussi : dans quel ordre ces valeurs sont-elles rangées en mémoire ?

Deux organisations dominent :

Pourquoi l’ordre en mémoire compte

Un tableau de données ressemble à une grille : des lignes, des colonnes, des valeurs. Mais la mémoire d’un ordinateur, elle, est une longue suite d’adresses.

Pour ranger cette grille, il faut donc choisir un ordre.

Par lignes

Les valeurs d’un même individu sont rangées côte à côte.

Adresse Valeur
0x00 âge ligne 1
0x08 salaire ligne 1
0x10 âge ligne 2
0x18 salaire ligne 2

Cette forme est naturelle quand on ajoute, modifie ou lit une fiche complète.

Par colonnes

Les valeurs d’une même variable sont rangées côte à côte.

Adresse Valeur
0x00 âge ligne 1
0x08 âge ligne 2
0x10 salaire ligne 1
0x18 salaire ligne 2

Cette forme est redoutable quand on calcule sur une seule colonne.

Lire une colonne

En data science, on demande souvent :

  • la moyenne d’une colonne ;
  • le minimum ou le maximum d’une variable ;
  • un filtre sur une colonne ;
  • une transformation appliquée à toutes les valeurs d’un même attribut.

Dans ces cas, le stockage colonnaire évite de traverser des valeurs inutiles.

Le processeur ne lit pas la mémoire valeur par valeur de façon isolée. Il charge des petits blocs de mémoire dans ses caches.

Si les valeurs utiles sont proches les unes des autres, le processeur peut enchaîner les lectures rapidement. Si elles sont séparées par d’autres colonnes, il doit charger davantage de blocs inutiles.

C’est l’idée derrière les cache hits et cache misses montrés dans le simulateur.

Simulateur RAM

Ligne ou colonne ?

Choisissez un mode de stockage, puis observez le trajet du processeur pour lire toute la colonne Salaire.

Chaque ligne est rangée d’un bloc : Age, puis Salaire, puis la ligne suivante.

Ce format est confortable pour retrouver une fiche complète, mais moins efficace pour analyser uniquement les salaires.

Toutes les valeurs de Age sont regroupées, puis toutes les valeurs de Salaire.

Ce format accélère les calculs analytiques : la colonne demandée forme une zone mémoire continue.

Age Salaire
25 50k
30 60k
28 55k

À retenir

Le stockage colonnaire ne change pas les données. Il change leur organisation physique pour rendre certains traitements beaucoup plus rapides.

Besoin principal Format souvent adapté
Lire ou écrire une fiche complète Stockage en lignes
Calculer sur une variable complète Stockage en colonnes
Explorer de grands tableaux analytiques Stockage en colonnes
Tip

En pratique, des formats comme Parquet ou Apache Arrow exploitent cette idée : ils rangent les colonnes de manière à accélérer les lectures analytiques.