DynamoDB - Tabela de consulta

Consultar uma tabela requer principalmente a seleção de uma tabela, a especificação de uma chave de partição e a execução da consulta; com as opções de usar índices secundários e realizar uma filtragem mais profunda por meio de operações de varredura.

Utilize o console da GUI, Java ou outra opção para executar a tarefa.

Tabela de consulta usando o console da GUI

Execute algumas consultas simples usando as tabelas criadas anteriormente. Primeiro, abra o console emhttps://console.aws.amazon.com/dynamodb

Escolher Tables no painel de navegação e selecione Replyda lista da mesa. Em seguida, selecione oItems guia para ver os dados carregados.

Selecione o link de filtragem de dados (“Verificar: [Tabela] Responder”) abaixo de Create Item botão.

Na tela de filtragem, selecione Consulta para a operação. Insira o valor da chave de partição apropriada e clique emStart.

o Reply a tabela então retorna os itens correspondentes.

Tabela de consulta usando Java

Use o método de consulta em Java para executar operações de recuperação de dados. Requer a especificação do valor da chave de partição, com a chave de classificação como opcional.

Codifique uma consulta Java criando primeiro um querySpec objectdescrevendo parâmetros. Em seguida, passe o objeto para o método de consulta. Usamos a chave de partição dos exemplos anteriores.

Você pode revisar o seguinte exemplo -

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()); 
      } 
   } 
}

Observe que a consulta usa a chave de partição, no entanto, os índices secundários fornecem outra opção para consultas. Sua flexibilidade permite a consulta de atributos não-chave, um tópico que será discutido posteriormente neste tutorial.

O método de varredura também oferece suporte a operações de recuperação reunindo todos os dados da tabela. ooptional .withFilterExpression evita que itens fora dos critérios especificados apareçam nos resultados.

Mais tarde neste tutorial, discutiremos scanningem detalhe. Agora, dê uma olhada no seguinte exemplo -

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.ScanOutcome;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.spec.ScanSpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;

public class ProductsScan {  
   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");  
      ScanSpec scanSpec = new ScanSpec() 
         .withProjectionExpression("#ID, Nomenclature , stat.sales") 
         .withFilterExpression("#ID between :start_id and :end_id") 
         .withNameMap(new NameMap().with("#ID",  "ID")) 
         .withValueMap(new ValueMap().withNumber(":start_id", 120)
         .withNumber(":end_id", 129));  
      
      try { 
         ItemCollection<ScanOutcome> items = table.scan(scanSpec);  
         Iterator<Item> iter = items.iterator(); 
        
         while (iter.hasNext()) {
            Item item = iter.next(); 
            System.out.println(item.toString()); 
         } 
      } catch (Exception e) { 
         System.err.println("Cannot perform a table scan:"); 
         System.err.println(e.getMessage()); 
      } 
   } 
}