N + 1 запросов в AWS AppSync

При использовании AWS AppSync с источниками лямбда-данных вы можете столкнуться с проблемой запроса N + 1.

В основном, когда у вас есть индивидуальный преобразователь полей для вашего типа и ваш запрос возвращает массив этих типов, лямбда-выражение преобразователя полей будет вызываться N раз.

AWS вводит лямбда-выражения BatchInvoking в преобразователях для решения этой проблемы. Подробнее о проблеме и ее решении можно прочитать здесь: https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#advanced-use-case-batching

Однако их решение не работает. Лямбда-выражения BatchInvoking ограничены всего 5 событиями (это не указано в документации). Это небольшое улучшение проблемы N + 1 (это делает ее N / 5 + 1), но я думаю, что этого недостаточно, поскольку более сложные запросы, как правило, выполняются в течение очень долгого времени и требуют большего количества вызовов лямбда.

Итак, мой вопрос: как вы справляетесь с этой проблемой? Есть ли лучшее решение для этого?

Я работаю в команде AWS AppSync. Я буду счастлив передать это как запрос функции для настройки размера пакета для вызова пакета.

Karthik 10.08.2018 19:10

Это было бы очень полезно и действительно решило бы эту проблему наилучшим образом, спасибо!

AlpacaGoesCrazy 13.08.2018 11:05

Я столкнулся с той же проблемой. Это серьезная проблема, потому что у нас есть сотни ресурсов с подресурсами, которые решаются за один вызов внешнего API (с текущим N / 5 было бы неэффективно выполнять такое количество вызовов API). Жаль, что это НЕ задокументировано.

DavidC 14.08.2018 17:36

Прошло полгода, а обходного пути пока нет. @Karthik, это есть в дорожной карте?

Nikola Petkanski 12.03.2019 17:29

Есть обновления по этой теме? Мы ищем надежное решение GraphQL, которое должно служить фасеткой для десятков REST-сервисов. В настоящее время это ограничение не кажется блокирующим на начальных этапах, но мы не хотим сталкиваться с ним на полпути.

Arthur Gurov 01.08.2019 12:00

@ArthurGurov Я думаю, что сейчас лучше использовать Apollo GraphQL, вы можете разместить сервер apollo на обычном экземпляре aws ec2 или даже на aws lambda, если хотите

AlpacaGoesCrazy 07.08.2019 15:46

Есть новости по этой проблеме? Это серьезное ограничение

niqui 05.05.2020 23:00

Просто протестировал это снова с чистой настройкой, и это недокументированное и неизменяемое поведение все еще имеет место. Можно было бы ожидать, что AWS хотя бы задокументирует это поведение после 3 лет, когда его не добавляли, но нет.

Bram 23.06.2021 16:57

Вы пробовали добавить кеширование PerResolver? docs.aws.amazon.com/appsync/latest/devguide/…

RoboKozo 07.07.2021 20:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
51
9
2 669
0

Другие вопросы по теме