Das DataLoader-Muster: N+1-Abfragen ohne ORM eliminieren

Das N+1-Abfrageproblem wird den ORMs angelastet. Lazy Loading reparieren, eager: true hinzufügen, einen JOIN verwenden. Aber N+1 ist kein ORM-Problem — es ist ein strukturelles Problem, das immer dann auftritt, wenn Daten innerhalb einer Schleife abgerufen werden. GraphQL-Resolver, REST-Endpunkte, die mehrere Services zusammensetzen, React Server Components, die datenbankseitige Aufrufe pro Zeile machen: das Muster ist überall, und der ORM ist nur der Bote.

Die Lösung ist nicht immer ein JOIN. Manchmal leben Daten in verschiedenen Services. Manchmal rufst du eine API eines Drittanbieters auf. Das DataLoader-Muster — ursprünglich aus Facebooks GraphQL-Infrastruktur — löst das auf der richtigen Abstraktionsebene, ohne deine Resolver-Grenzen einzuebnen.