Разница между DynamoDb PutItem и UpdateItem?

Основываясь на документации DynamoDb, зачем кому-то использовать updateItem вместо putItem?


  • PutItem - записывает один элемент в таблицу. Если в таблице существует элемент с таким же первичным ключом, операция заменяет элемент. Для расчета потребляемой пропускной способности, размер элемента, который имеет значение, является большим из двух.
  • UpdateItem - UpdateItem один элемент в таблице. DynamoDB учитывает размер элемента так, как он выглядит до и после обновления. Предоставленная пропускная способность отражает больший размер этих элементов. Даже если вы обновите только подмножество атрибутов элемента, UpdateItem будет по-прежнему потреблять всю предоставленную пропускную способность (большую из размеров элементов "до" и "после").

Ответ 1

Основное различие между двумя: PutItem будет Заменить весь элемент, а UpdateItem будет Обновить.

Eg.

У меня есть элемент вроде:

userId = 1
Name= ABC
Gender= Male

Если я использую элемент PUT с

UserId = 1
Country = India

Это заменит имя и пол, а теперь новый элемент - UserId и Country. Если вы хотите обновить элемент из Name = ABC to Name = 123, вам нужно использовать UpdateItem

Вы можете использовать элемент Put для его обновления, но вам нужно отправить все параметры, а не только параметр, который вы хотите обновить, потому что он заменяет элемент новым атрибутом. (Внутренне он удаляет элемент и добавляет новый элемент)

Надеюсь, что это имеет смысл.

Ответ 2

PutItem перезаписывает весь элемент (все атрибуты) с новой версией передается в то время как UpdateItem будет обновлять только пройденные атрибуты

Производительность: PutItem может повлиять на производительность, если вы перезаписываете весь элемент так часто, поскольку он включает больше операций, чем UpdateItem FindItem, DeleteOldVersion и AddNewVersion

С точки зрения стоимости, это также отличается:

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

В случае PutItem размер будет больше, чем у новой и старой версий элемента. Например, если заменить элемент размером 2 КБ на 1 КБ, он будет использовать 2 WCU, однако в последующих запросах будет использоваться только 1 WCU. так что если вы перезаписываете так часто, а размер элемента сильно меняется, это всегда рассчитывает большую версию элемента и влияет на стоимость.

В случае изменения элементов с помощью UpdateItem, размер включает в себя все существующие ранее атрибуты элементов, не более крупную версию, как PutItem :), но также не только те, которые добавляются или обновляются :(