Учебники

DynamoDB — Пакетная запись

Пакетная запись работает с несколькими элементами, создавая или удаляя несколько элементов. Эти операции используют BatchWriteItem , который имеет ограничения не более 16 МБ записей и 25 запросов. Каждый элемент соответствует ограничениям в размере 400 КБ. Пакетная запись также не может выполнять обновления элементов.

Что такое пакетная запись?

Пакетная запись может манипулировать элементами в нескольких таблицах. Вызов операции происходит для каждого отдельного запроса, что означает, что операции не влияют друг на друга, и разрешены гетерогенные миксы; например, один PutItem и три запроса DeleteItem в пакете, при этом сбой запроса PutItem не влияет на другие. Неудачные запросы приводят к тому, что операция возвращает информацию (ключи и данные), относящуюся к каждому неудавшемуся запросу.

Примечание. Если DynamoDB возвращает какие-либо элементы без их обработки, повторите их; однако используйте метод отката, чтобы избежать другого сбоя запроса из-за перегрузки.

DynamoDB отклоняет операцию пакетной записи, когда одно или несколько из следующих утверждений подтверждаются:

  • Запрос превышает предоставленную пропускную способность.

  • Запрос пытается использовать BatchWriteItems для обновления элемента.

  • Запрос выполняет несколько операций над одним элементом.

  • Таблицы запросов не существуют.

  • Атрибуты элемента в запросе не соответствуют цели.

  • Запросы превышают пределы размера.

Запрос превышает предоставленную пропускную способность.

Запрос пытается использовать BatchWriteItems для обновления элемента.

Запрос выполняет несколько операций над одним элементом.

Таблицы запросов не существуют.

Атрибуты элемента в запросе не соответствуют цели.

Запросы превышают пределы размера.

Для пакетной записи требуются определенные параметры RequestItem

  • Операции удаления требуют ключевых подэлементов DeleteRequest, означающих имя и значение атрибута.

  • Для элементов PutRequest требуется подэлемент Item, означающий карту атрибута и значения атрибута.

Операции удаления требуют ключевых подэлементов DeleteRequest, означающих имя и значение атрибута.

Для элементов PutRequest требуется подэлемент Item, означающий карту атрибута и значения атрибута.

Ответ — Успешная операция приводит к ответу HTTP 200, который указывает такие характеристики, как использованные единицы емкости, показатели обработки таблицы и любые необработанные элементы.

Пакетная запись с Java

Выполните пакетную запись, создав экземпляр класса DynamoDB, экземпляр класса TableWriteItems, описывающий все операции, и вызовите метод batchWriteItem для использования объекта TableWriteItems.

Примечание. Необходимо создать экземпляр TableWriteItems для каждой таблицы в пакетной записи в несколько таблиц. Кроме того, проверьте ваш запрос ответа на любые необработанные запросы.

Вы можете просмотреть следующий пример пакетной записи —

DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient( 
   new ProfileCredentialsProvider()));  

TableWriteItems forumTableWriteItems = new TableWriteItems("Forum") 
   .withItemsToPut( 
   new Item() 
   .withPrimaryKey("Title", "XYZ CRM") 
   .withNumber("Threads", 0));  

TableWriteItems threadTableWriteItems = new TableWriteItems(Thread) 
   .withItemsToPut( 
   new Item() 
   .withPrimaryKey("ForumTitle","XYZ CRM","Topic","Updates") 
   .withHashAndRangeKeysToDelete("ForumTitle","A partition key value", 
   "Product Line 1", "A sort key value"));

BatchWriteItemOutcome outcome = dynamoDB.batchWriteItem (
   forumTableWriteItems, threadTableWriteItems);

Следующая программа является еще одним большим примером для лучшего понимания того, как пакет пишет с Java.

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

В этом примере также используются Eclipse IDE, файл учетных данных AWS и набор инструментов AWS в Java-проекте Eclipse AWS.