Учебники

DynamoDB — Обновление элементов

Обновление элемента в DynamoDB в основном состоит из указания полного первичного ключа и имени таблицы для элемента. Требуется новое значение для каждого атрибута, который вы изменяете. Операция использует UpdateItem , который изменяет существующие элементы или создает их при обнаружении отсутствующего элемента.

В обновлениях может потребоваться отслеживать изменения, отображая исходные и новые значения до и после операций. UpdateItem использует параметр ReturnValues для достижения этой цели.

Примечание . Операция не сообщает о потреблении единиц мощности, но вы можете использовать параметр ReturnConsumedCapacity .

Используйте консоль GUI, Java или любой другой инструмент для выполнения этой задачи.

Как обновить элементы с помощью инструментов GUI?

Перейдите к консоли. На панели навигации слева выберите Таблицы . Выберите нужную таблицу, а затем перейдите на вкладку « Элементы ».

Обновление элементов с помощью инструментов 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.