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
51
9
2 669
0

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