Операции пакетного извлечения возвращают атрибуты одного или нескольких элементов. Эти операции обычно состоят из использования первичного ключа для идентификации желаемого элемента (ов). Операции BatchGetItem подчиняются ограничениям отдельных операций, а также их собственным уникальным ограничениям.
Следующие запросы в операциях пакетного поиска приводят к отклонению:
- Сделайте запрос на более 100 наименований.
- Сделайте запрос, превышающий пропускную способность.
Операции пакетного извлечения выполняют частичную обработку запросов, которые могут превышать пределы.
Например, запрос на извлечение нескольких элементов, достаточно больших по размеру, чтобы превысить пределы, приводит к части обработки запроса и сообщению об ошибке, отмечающему необработанную часть. При возврате необработанных элементов создайте решение для алгоритма отсрочки, чтобы управлять этим, а не регулировать таблицы.
Операции BatchGet в конечном итоге выполняются с согласованным чтением, что требует модификации для строго согласованного чтения. Они также выполняют поиск параллельно.
Примечание — порядок возврата товаров. DynamoDB не сортирует элементы. Это также не указывает на отсутствие запрошенных товаров. Кроме того, эти запросы потребляют единицы мощности.
Для всех операций BatchGet требуются параметры RequestItems, такие как согласованность чтения, имена атрибутов и первичные ключи.
Ответ — Успешная операция приводит к ответу HTTP 200, который указывает такие характеристики, как использованные единицы емкости, показатели обработки таблицы и любые необработанные элементы.
Пакетные загрузки с Java
Использование Java в операциях BatchGet требует создания экземпляра класса DynamoDB, экземпляра класса TableKeysAndAttributes, описывающего список значений первичного ключа для элементов, и передачи объекта TableKeysAndAttributes в метод BatchGetItem .
Ниже приведен пример операции BatchGet:
DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient ( new ProfileCredentialsProvider())); TableKeysAndAttributes forumTableKeysAndAttributes = new TableKeysAndAttributes (forumTableName); forumTableKeysAndAttributes.addHashOnlyPrimaryKeys ( "Title", "Updates", "Product Line 1" ); TableKeysAndAttributes threadTableKeysAndAttributes = new TableKeysAndAttributes ( threadTableName); threadTableKeysAndAttributes.addHashAndRangePrimaryKeys ( "ForumTitle", "Topic", "Product Line 1", "P1 Thread 1", "Product Line 1", "P1 Thread 2", "Product Line 2", "P2 Thread 1" ); BatchGetItemOutcome outcome = dynamoDB.batchGetItem ( forumTableKeysAndAttributes, threadTableKeysAndAttributes); for (String tableName : outcome.getTableItems().keySet()) { System.out.println("Table items " + tableName); List<Item> items = outcome.getTableItems().get(tableName); for (Item item : items) { System.out.println(item); } }
Вы можете рассмотреть следующий более крупный пример.
Примечание. В следующей программе может использоваться ранее созданный источник данных. Прежде чем пытаться выполнить, приобретите вспомогательные библиотеки и создайте необходимые источники данных (таблицы с требуемыми характеристиками или другие ссылочные источники).
Эта программа также использует Eclipse IDE, файл учетных данных AWS и набор инструментов AWS в Java-проекте Eclipse AWS.