Начало распродаж · Скидка на доставку · Поступление новой коллекции

BELAYA KASKA / FEATURE

studioАвтор: Пуск‑Медиа (импорт)Просмотры: 3

GraphQL и проблема N+1: DataLoader и батчинг на сервере

Почему «один запрос с клиента» не спасает от лавины SQL и как структурировать резолверы.

Изображение статьи: GraphQL и проблема N+1: DataLoader и батчинг на сервере

GraphQL позволяет клиенту запросить дерево полей, но на сервере каждый nested field может вызвать отдельный запрос к БД — классический N+1.

DataLoader батчит и кэширует загрузку сущностей в рамках одного HTTP-запроса, снижая число round-trip к PostgreSQL.

- [DataLoader — GitHub (graphql/dataloader)](https://github.com/graphql/dataloader) — Библиотека батчинга для GraphQL.

- [GraphQL Best Practices — graphql.org](https://graphql.org/learn/best-practices/) — Общие рекомендации по схеме и серверу.

---

## Мониторинг

Логируйте число SQL-запросов на один GraphQL operation в staging — регрессия видна до prod.

Ограничивайте глубину и complexity запроса на публичном API.

#GraphQL#API#производительность

Мы используем обязательные cookie для работы сайта (корзина, вход, оформление заказа) и необязательные — для аналитики и маркетинга. Вы можете принять все, отклонить необязательные или настроить категории. Подробнее в политике cookies.