Есть ли дополнительный распознаватель в AppSync / DynamoDB дважды для операции чтения? - PullRequest
1 голос
/ 18 октября 2019

Мне нужно сделать запрос после любимых постов моих пользователей. С помощью этого запроса они смогут увидеть сообщение с его информацией, такой как заголовок и лайки. Учитывая, что значение некоторых атрибутов, таких как всего лайков , может со временем меняться, я не могу добавить эти значения в набор данных favourite . Если бы я сделал это, мне пришлось бы обновлять каждый любимый набор данных, когда кому-то нравится публикация, чтобы держать их в курсе.

Это привело меня к решению, что я не добавляю эту информацию (например, общее количество лайков) в избранную запись и просто добавьте дополнительный распознаватель для атрибута post. Это может выглядеть так:

type Post {
  pid: ID!
  title: String!
  content: String!
  likes: Int      // <-- An attribute which I need to show while displaying favorites
}

type Favorite{
  fid: ID!
  pid: String!
  ...
  post: Post!  // <-- This has an own resolver
}

Атрибут Post имеет свой собственный дополнительный преобразователь, присоединенный через AWS AppSync, который может выглядеть следующим образом

{
    "version": "2018-05-29",
    "operation": "GetItem",
    "key": {
        "id": $util.dynamodb.toDynamoDBJson($ctx.source.pid),
     }
 }

Если пользовательбудет запрашивать его собственные фавориты, это будет стоить вдвое больше операции чтения? Поскольку для этого требуется два GetItem Операция для каждого в результате

Пример: запрос избранных с пределом 10 обойдется в 20 операций чтения (10 для простых избранных данных (fid иpid) и 10 для отправки данных через дополнительный преобразователь.

Или DynamoDB объединяет их в одну операцию чтения в фоновом режиме?

Кроме того это приемлемое решение(или обычный подход) для этой проблемы? Используете ли вы эту технику? Или это будет очень дорого при масштабировании?

EDIT : я использую только одну таблицу, поэтому каждый набор данных находится вэто.

...