Уведомления
Очистить всё

Идея доклада: GraphQL в Rails и N+1, разбор одного запроса

3 Сообщения
3 Пользователи
10 Реакции
405 Просмотры
gosha70
Сообщения: 17
Автор темы
Пишет тесты бэкенд-разработчик, удалёнка
Присоединился: 3 года назад
[#110]

Думаю над докладом на весеннюю встречу. GraphQL в Rails у многих ассоциируется с медленными ответами, и обычно виноват не GraphQL, а N+1 в резолверах. Хочу взять один запрос, список заказов с клиентом и позициями, показать в логе 51 SELECT, а потом убрать их через dataloader из graphql-ruby:

class Types::OrderType < Types::BaseObject
  field :customer, Types::CustomerType, null: false

  def customer
    dataloader.with(Sources::RecordById, Customer).load(object.customer_id)
  end
end

Сам Source пишется строк на десять. Цифры у меня есть: 51 запрос превратился в 3, ответ с 640 мс до 90. Вопрос в другом: стоит ли тратить слот на GraphQL, если на встречах его почти никто не использует?


2 ответа
alisher1996
Сообщения: 6
Пишет в irb архитектор
Присоединился: 3 года назад

Стоит. Его не используют как раз потому, что боятся этого, а ты показываешь, как лечится. Я бы ещё взял пару минут на ограничение глубины и сложности, без них любой клиент кладёт сервер одним вложенным запросом:

class AppSchema < GraphQL::Schema
  max_depth 10
  max_complexity 300
end

Ответ
Юлия Ф.
Сообщения: 11
Разобрался с блоками фулстек-разработчица
Присоединился: 3 года назад

+1, пришла бы. Мы на Hotwire привыкли жить без API, интересно посмотреть, как это выглядит с другой стороны


Ответ