Пакетная запись работает с несколькими элементами, создавая или удаляя несколько элементов. Эти операции используют 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.