Обновление элемента в DynamoDB в основном состоит из указания полного первичного ключа и имени таблицы для элемента. Требуется новое значение для каждого атрибута, который вы изменяете. Операция использует UpdateItem , который изменяет существующие элементы или создает их при обнаружении отсутствующего элемента.
В обновлениях может потребоваться отслеживать изменения, отображая исходные и новые значения до и после операций. UpdateItem использует параметр ReturnValues для достижения этой цели.
Примечание . Операция не сообщает о потреблении единиц мощности, но вы можете использовать параметр ReturnConsumedCapacity .
Используйте консоль GUI, Java или любой другой инструмент для выполнения этой задачи.
Как обновить элементы с помощью инструментов GUI?
Перейдите к консоли. На панели навигации слева выберите Таблицы . Выберите нужную таблицу, а затем перейдите на вкладку « Элементы ».
Выберите элемент, который требуется обновить, и выберите Действия | Редактировать
Измените любые атрибуты или значения, необходимые в окне « Редактировать элемент» .
Обновление элементов с помощью Java
Использование Java в операциях обновления элемента требует создания экземпляра класса Table и вызова его метода updateItem . Затем вы указываете первичный ключ элемента и предоставляете подробные модификации атрибутов UpdateExpression .
Ниже приведен пример того же —
DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient( new ProfileCredentialsProvider())); Table table = dynamoDB.getTable("ProductList"); Map<String, String> expressionAttributeNames = new HashMap<String, String>(); expressionAttributeNames.put("#M", "Make"); expressionAttributeNames.put("#P", "Price expressionAttributeNames.put("#N", "ID"); Map<String, Object> expressionAttributeValues = new HashMap<String, Object>(); expressionAttributeValues.put(":val1", new HashSet<String>(Arrays.asList("Make1","Make2"))); expressionAttributeValues.put(":val2", 1); //Price UpdateItemOutcome outcome = table.updateItem( "internalID", // key attribute name 111, // key attribute value "add #M :val1 set #P = #P - :val2 remove #N", // UpdateExpression expressionAttributeNames, expressionAttributeValues);
Метод updateItem также позволяет указать условия, которые можно увидеть в следующем примере:
Table table = dynamoDB.getTable("ProductList"); Map<String, String> expressionAttributeNames = new HashMap<String, String>(); expressionAttributeNames.put("#P", "Price"); Map<String, Object> expressionAttributeValues = new HashMap<String, Object>(); expressionAttributeValues.put(":val1", 44); // change Price to 44 expressionAttributeValues.put(":val2", 15); // only if currently 15 UpdateItemOutcome outcome = table.updateItem (new PrimaryKey("internalID",111), "set #P = :val1", // Update "#P = :val2", // Condition expressionAttributeNames, expressionAttributeValues);
Обновление элементов с помощью счетчиков
DynamoDB позволяет использовать атомарные счетчики, что означает использование UpdateItem для увеличения / уменьшения значений атрибутов без влияния на другие запросы; Более того, счетчики всегда обновляются.
Ниже приведен пример, который объясняет, как это можно сделать.
Примечание. В следующем примере может использоваться ранее созданный источник данных. Прежде чем пытаться выполнить, приобретите вспомогательные библиотеки и создайте необходимые источники данных (таблицы с требуемыми характеристиками или другие ссылочные источники).
В этом примере также используется Eclipse IDE, файл учетных данных AWS и набор инструментов AWS в Java-проекте Eclipse AWS.