DataLoader는 어떻게 N+1을 없애는가
DataLoader의 배치 처리 원리, 이벤트 루프와의 관계, 중첩 resolver에서 어떻게 구조화하는지 구체적으로 정리했습니다.
DataLoader를 처음 접하면 이런 의문이 생겨요.
@ResolveField(() => [Comment])async comments(@Parent() post: Post) { return this.commentLoader.load(post.id); // post마다 개별 호출}post가 20개면 load()가 20번 호출된다.
그런데 DB 쿼리는 1번만 실행된다고?
어떻게 이게 가능한지, 그리고 중첩 resolver에서 어떻게 구조화하는지 살펴보자.