DynamoDB: creación de elementos

La creación de un elemento en DynamoDB consiste principalmente en la especificación de elementos y atributos, y la opción de especificar condiciones. Cada elemento existe como un conjunto de atributos, con cada atributo nombrado y asignado un valor de cierto tipo.

Los tipos de valor incluyen escalar, documento o conjunto. Los artículos tienen un límite de tamaño de 400 KB, con la posibilidad de que cualquier cantidad de atributos quepa dentro de ese límite. Los tamaños de nombre y valor (longitudes binarias y UTF-8) determinan el tamaño del artículo. El uso de nombres de atributos cortos ayuda a minimizar el tamaño del artículo.

Note- Debe especificar todos los atributos de la clave primaria, y las claves primarias solo requieren la clave de partición; y claves compuestas que requieren tanto la clave de partición como la clave de clasificación.

Además, recuerde que las tablas no poseen un esquema predefinido. Puede almacenar conjuntos de datos dramáticamente diferentes en una tabla.

Utilice la consola GUI, Java u otra herramienta para realizar esta tarea.

¿Cómo crear un elemento usando la consola GUI?

Navega a la consola. En el panel de navegación del lado izquierdo, seleccioneTables. Elija el nombre de la tabla para usar como destino y luego seleccione elItems pestaña como se muestra en la siguiente captura de pantalla.

Seleccione Create Item. La pantalla Crear artículo proporciona una interfaz para ingresar los valores de atributo requeridos. También se deben ingresar todos los índices secundarios.

Si necesita más atributos, seleccione el menú de acciones a la izquierda del Message. Luego seleccioneAppendy el tipo de datos deseado.

Después de ingresar toda la información esencial, seleccione Save para agregar el artículo.

¿Cómo utilizar Java en la creación de artículos?

El uso de Java en las operaciones de creación de elementos consiste en crear una instancia de clase DynamoDB, una instancia de clase de tabla, una instancia de clase de elemento y especificar la clave principal y los atributos del elemento que creará. Luego agregue su nuevo elemento con el método putItem.

Ejemplo

DynamoDB dynamoDB = new DynamoDB (new AmazonDynamoDBClient(
   new ProfileCredentialsProvider()));
Table table = dynamoDB.getTable("ProductList");
   
// Spawn a related items list 
List<Number> RELItems = new ArrayList<Number>(); 
RELItems.add(123); 
RELItems.add(456); 
RELItems.add(789);  
   
//Spawn a product picture map  
Map<String, String> photos = new HashMap<String, String>(); 
photos.put("Anterior", "http://xyz.com/products/101_front.jpg"); 
photos.put("Posterior", "http://xyz.com/products/101_back.jpg"); 
photos.put("Lateral", "http://xyz.com/products/101_LFTside.jpg");  

//Spawn a product review map 
Map<String, List<String>> prodReviews = new HashMap<String, List<String>>();  
List<String> fiveStarRVW = new ArrayList<String>(); 
fiveStarRVW.add("Shocking high performance."); 
fiveStarRVW.add("Unparalleled in its market."); 
prodReviews.put("5 Star", fiveStarRVW);  
List<String> oneStarRVW = new ArrayList<String>(); 
oneStarRVW.add("The worst offering in its market."); 
prodReviews.put("1 Star", oneStarRVW);  

// Generate the item 
Item item = new Item()
   .withPrimaryKey("Id", 101) 
   .withString("Nomenclature", "PolyBlaster 101") 
   .withString("Description", "101 description") 
   .withString("Category", "Hybrid Power Polymer Cutter")  
   .withString("Make", "Brand – XYZ") 
   .withNumber("Price", 50000) 
   .withString("ProductCategory", "Laser Cutter") 
   .withBoolean("Availability", true) 
   .withNull("Qty") 
   .withList("ItemsRelated", RELItems) 
   .withMap("Images", photos) 
   .withMap("Reviews", prodReviews);

// Add item to the table  
PutItemOutcome outcome = table.putItem(item);

También puede ver el siguiente ejemplo más grande.

Note- La siguiente muestra puede asumir una fuente de datos creada previamente. Antes de intentar ejecutar, adquiera bibliotecas de soporte y cree las fuentes de datos necesarias (tablas con las características requeridas u otras fuentes referenciadas).

La siguiente muestra también utiliza Eclipse IDE, un archivo de credenciales de AWS y AWS Toolkit dentro de un proyecto Eclipse AWS Java.

package com.amazonaws.codesamples.document;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DeleteItemOutcome;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.Table;

import com.amazonaws.services.dynamodbv2.document.UpdateItemOutcome;
import com.amazonaws.services.dynamodbv2.document.spec.DeleteItemSpec;
import com.amazonaws.services.dynamodbv2.document.spec.UpdateItemSpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;
import com.amazonaws.services.dynamodbv2.model.ReturnValue;

public class CreateItemOpSample { 
   static DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient ( 
      new ProfileCredentialsProvider()));  
   static String tblName = "ProductList";  
      
   public static void main(String[] args) throws IOException {  
      createItems();  
      retrieveItem();  
         
      // Execute updates 
      updateMultipleAttributes(); 
      updateAddNewAttribute(); 
      updateExistingAttributeConditionally();  
         
      // Item deletion 
      deleteItem();  
   }
   private static void createItems() {  
      Table table = dynamoDB.getTable(tblName); 
      try {  
         Item item = new Item() 
            .withPrimaryKey("ID", 303)
            .withString("Nomenclature", "Polymer Blaster 4000") 
            .withStringSet( "Manufacturers", 
            new HashSet<String>(Arrays.asList("XYZ Inc.", "LMNOP Inc.")))  
            .withNumber("Price", 50000) 
            .withBoolean("InProduction", true) 
            .withString("Category", "Laser Cutter"); 
         
         table.putItem(item);  
         item = new Item() 
            .withPrimaryKey("ID", 313) 
            .withString("Nomenclature", "Agitatatron 2000") 
            .withStringSet( "Manufacturers", 
            new HashSet<String>(Arrays.asList("XYZ Inc,", "CDE Inc."))) 
            .withNumber("Price", 40000) 
            .withBoolean("InProduction", true) 
            .withString("Category", "Agitator"); 
         
         table.putItem(item);  
      } catch (Exception e) { 
         System.err.println("Cannot create items."); 
         System.err.println(e.getMessage()); 
      } 
   }   
}