DataLoader

Architecture 🟡 Mid

Definition

Utilitaire qui batch et cache les requetes de donnees pour resoudre le probleme N+1 dans GraphQL. Regroupe les appels DB d'un meme tick en une seule requete.

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 entites liees pour eviter N+1 requetes.

Anti-pattern

Un SELECT par resolver sans batching — 100 items = 100 requetes DB.

Termes lies

#architecture#interview#api#performance