Problema N+1 este cel mai mare pericol de performanță în GraphQL: dacă o interogare cere 50 de postări și autorul fiecăreia, un resolver naiv va executa 1 interogare pentru postări și apoi 50 de interogări separate pentru fiecare autor. DataLoader grupează toate cele 50 de ID-uri într-un singur SELECT * FROM users WHERE id IN (...) în cadrul aceluiași tick de Event Loop!
Rezolvarea Problemei N+1 în GraphQL: Tehnici de Batching și Caching cu DataLoader și Apollo Server în GraphQL
Performanță & DataLoader
GraphQL
Ghid de optimizare a performanței în serverele GraphQL: anatomia problemei N+1 la rezolvarea relațiilor imbricate, gruparea cererilor (batching) cu DataLoader și cache per request.
Sintaxă
const userLoader = new DataLoader(async (keys) => await db.findMany(keys));