Сопоставляет повторяющийся SQL с конкретным полем схемы GraphQL
Зачем
Зачем это нужно
Группирует ключи в один запрос и возвращает значения в том же порядке
Ограничивает кэш рамками запроса, чтобы данные не утекали между сессиями
Вопросы
Частые вопросы
Почему обычный глобальный кэш опасен?
Он переживает запрос и способен вернуть результат, полученный с правами другого пользователя, а также долго хранить устаревшие данные. DataLoader обычно создают на каждый входящий контекст. Модель покажет место инициализации и включит в ключ всё, что влияет на права и форму результата.
Можно ли просто сделать JOIN заранее?
Иногда это самый простой вариант, особенно для фиксированного экрана. Но GraphQL позволяет клиенту выбирать поля, а глубокие связи делают один JOIN огромным и дублирующим строки. Модель сравнит пакетную загрузку и соединение по фактической схеме и ожидаемому запросу, а не по догме.
Как доказать, что N+1 исчез?
Посчитайте обращения к базе для списка из одного, десяти и ста элементов. После пакетирования число должно оставаться постоянным для этого уровня. Модель добавит интеграционный тест со счётчиком запросов и проверит содержимое ответа, чтобы оптимизация не переставила результаты между ключами.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.