DynamoDBMapper условное сохранение для списка объектов - PullRequest
0 голосов
/ 25 октября 2018

Мой вариант использования: для данного списка объектов сохраните все объекты, которых еще нет в таблице DynamoDB (т. Е. Если объект уже присутствует с таким же ключом has и range, тогда не переопределяйте, а игнорируйте или выбрасывайте исключение для всехсуществующие элементы)

У меня есть 2 варианта в DynamoDBMapper:

  1. В последовательном или параллельном цикле условно сохраняйте отдельные объекты.

  2. Загрузите все объекты, используя заданные ключи хеша и диапазона, сравните себя и отфильтруйте существующие объекты и сохраните только несуществующие

Не могли бы вы помочь мне понять, какой подход лучше с точки зрения задержки истоимость?

1 Ответ

0 голосов
/ 26 октября 2018

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

Самый простой вариант - последовательныйцикл для записи элементов с условием attribute_not_exists (см. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html#Expressions.ConditionExpressions.PreventingOverwrites. DynamoDB очень быстр, поэтому, если у вас нет огромного количества элементов для сохранения, с этим все будет в порядке.

Вы не можете поставитьусловия для операций DynamoDB BatchWrite, поэтому, если вы хотите многопоточную запись с условием, вам придется написать ее самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...