DataLoader

N+1 요청 단위 배치

GraphQL 필드마다 service를 호출하기 전에 DataLoader key 설계, batch 함수, 요청 범위 cache를 확인합니다.

Detect

문제 감지

posts.author 같은 relation field가 목록 길이만큼 반복 조회되면 N+1 쿼리입니다.

Batch

키 모으기

DataLoader는 같은 tick의 authorId를 모아 findByIds나 IN query로 한 번에 조회합니다.

Cache

요청 캐시

loader cache는 request 단위로 유지해 사용자 권한과 최신성 경계를 넘지 않게 합니다.

매핑

순서 보존

batch 결과는 입력 key 순서에 맞게 null 포함 배열로 돌려야 resolver가 안전합니다.