Учебники

DynamoDB — таблица запросов

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

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

Таблица запросов с использованием консоли GUI

Выполните несколько простых запросов, используя ранее созданные таблицы. Сначала откройте консоль по адресу https://console.aws.amazon.com/dynamodb.

Выберите Таблицы на панели навигации и выберите Ответить из списка таблиц. Затем выберите вкладку « Элементы », чтобы увидеть загруженные данные.

Выберите ссылку на фильтрацию данных («Сканировать: [Таблица] Ответить») под кнопкой « Создать элемент» .

Таблица запросов с использованием консоли GUI

На экране фильтрации выберите Запрос для операции. Введите соответствующее значение ключа раздела и нажмите « Пуск» .

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

Таблица ответов

Таблица запросов с использованием Java

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

Кодируйте Java-запрос, сначала создав объект querySpec с описанием параметров. Затем передайте объект в метод запроса. Мы используем ключ раздела из предыдущих примеров.

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

import java.util.HashMap;
import java.util.Iterator;

import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.ItemCollection;
import com.amazonaws.services.dynamodbv2.document.QueryOutcome;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.QuerySpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;

public class ProductsQuery {  
   public static void main(String[] args) throws Exception {  
      AmazonDynamoDBClient client = new AmazonDynamoDBClient() 
         .withEndpoint("http://localhost:8000");  
      
      DynamoDB dynamoDB = new DynamoDB(client);  
      Table table = dynamoDB.getTable("Products");  
      HashMap<String, String> nameMap = new HashMap<String, String>(); 
      nameMap.put("#ID", "ID");  
      HashMap<String, Object> valueMap = new HashMap<String, Object>(); 
      valueMap.put(":xxx", 122);
      QuerySpec querySpec = new QuerySpec() 
         .withKeyConditionExpression("#ID = :xxx") 
         .withNameMap(new NameMap().with("#ID", "ID")) 
         .withValueMap(valueMap);  
      
      ItemCollection<QueryOutcome> items = null; 
      Iterator<Item> iterator = null; 
      Item item = null;  
      try { 
         System.out.println("Product with the ID 122"); 
         items = table.query(querySpec);  
         iterator = items.iterator(); 
         
         while (iterator.hasNext()) { 
            item = iterator.next(); 
            System.out.println(item.getNumber("ID") + ": " 
               + item.getString("Nomenclature")); 
         } 
      } catch (Exception e) { 
         System.err.println("Cannot find products with the ID number 122"); 
         System.err.println(e.getMessage()); 
      } 
   } 
}

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

Метод сканирования также поддерживает операции поиска, собирая все данные таблицы. Необязательное выражение .withFilterExpression предотвращает появление в результатах элементов вне заданных критериев.

Позже в этом уроке мы подробно обсудим сканирование . Теперь взглянем на следующий пример: