DynamoDB - Как обрабатывать обновления, используя шаблон списка смежности? - PullRequest
1 голос
/ 07 мая 2019

Итак, в DynamoDB рекомендуемый подход к соотношению «многие ко многим» использует Шаблон списка смежности .

Теперь он отлично работает, когда вам нужно прочитать Данные, потому что вы можете легко прочитать несколько элементов за один запрос.

Но что, если мне нужно обновить / удалить данные? Эти операции выполняются для определенного элемента вместо результата запроса.

Итак, если у меня есть тысячи реплицированных данных для облегчения операции GET, как мне обновить все эти реплики?

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

1 Ответ

1 голос
/ 08 мая 2019

Простой ответ: вы просто обновляете дублированные элементы :) Избыточные данные AFAIK предпочтительнее в базах данных NoSQL, и нет никаких ярлыков для обновления данных.

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

DynamoDB имеет несколько утилит, которые могут быть применимы здесь. Оба имеют свои недостатки, хотя

  1. BatchWriteItem позволяет помещать или удалять несколько элементов в одной или нескольких таблицах. К сожалению, он не позволяет обновления, поэтому, вероятно, не относится к вашему делу. Количество операций также ограничено 25.
  2. TransactWriteItems позволяет выполнить элементарную операцию, которая группирует до 10 запросов на действия в одну или несколько таблиц. Опять же количество операций ограничено для вашего случая

Насколько я понимаю, оба они должны использоваться с осторожностью и вниманием, поскольку они могут вызвать, например, узкие места в производительности. Простой способ обновления каждого элемента в отдельности обычно очень удобен. А поскольку данные избыточны, вы можете использовать асинхронные операции для параллельного выполнения нескольких обновлений.

...