Разница между 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
:), но также не только те, которые добавляются или обновляются :(