DataLoader

Architecture 🟡 Mid

Définition

Utilitaire qui batch et cache les requêtes de données pour résoudre le problème N+1 dans GraphQL. Regroupe les appels DB d'un même tick en une seule requête.

Analogie

Un serveur qui attend que toute la table ait commande avant d'aller en cuisine, au lieu de faire un aller-retour par personne.

Exemple de code

const userLoader = new DataLoader(async (ids) => {
  const users = await db.users.findByIds(ids);
  return ids.map(id => users.find(u => u.id === id));
});
// userLoader.load(1); userLoader.load(2); -> 1 query

Cas d'usage

Resolvers GraphQL qui chargent des entités liées pour éviter N+1 requêtes.

Anti-pattern

Un SELECT par resolver sans batching — 100 items = 100 requêtes DB.
#architecture#interview#api#performance

En entretien

  1. A quoi sert un DataLoader et quel problème résout-il ?

    Il batch et cache les requêtes de données pour résoudre le problème N+1 dans GraphQL, en regroupant les appels DB d'un même tick en une seule requête. C'est comme un serveur qui attend que toute la table ait commandé avant d'aller en cuisine, au lieu d'un aller-retour par personne.

  2. Quel est l'anti-pattern que le DataLoader corrige ?

    Un SELECT par resolver sans batching, où 100 items déclenchent 100 requêtes DB.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre