DynamoDB - Creazione di elementi

La creazione di un elemento in DynamoDB consiste principalmente nella specifica di elemento e attributo e nell'opzione di specificare le condizioni. Ogni elemento esiste come un insieme di attributi, con ogni attributo denominato e assegnato un valore di un certo tipo.

I tipi di valore includono scalare, documento o insieme. Gli articoli hanno un limite di dimensione di 400 KB, con la possibilità di qualsiasi quantità di attributi in grado di rientrare in tale limite. Le dimensioni del nome e del valore (lunghezze binarie e UTF-8) determinano la dimensione dell'elemento. L'utilizzo di nomi di attributo brevi aiuta a ridurre al minimo le dimensioni dell'oggetto.

Note- È necessario specificare tutti gli attributi della chiave primaria, con le chiavi primarie che richiedono solo la chiave di partizione; e chiavi composite che richiedono sia la partizione che la chiave di ordinamento.

Inoltre, ricorda che le tabelle non possiedono schemi predefiniti. È possibile memorizzare set di dati notevolmente diversi in una tabella.

Utilizzare la console GUI, Java o un altro strumento per eseguire questa attività.

Come creare un elemento utilizzando la console GUI?

Vai alla console. Nel riquadro di navigazione sul lato sinistro, selezionaTables. Scegli il nome della tabella da utilizzare come destinazione, quindi seleziona il fileItems scheda come mostrato nello screenshot seguente.

Selezionare Create Item. La schermata Crea articolo fornisce un'interfaccia per l'immissione dei valori degli attributi richiesti. Devono essere inseriti anche eventuali indici secondari.

Se hai bisogno di più attributi, seleziona il menu delle azioni a sinistra del file Message. Quindi selezionaAppende il tipo di dati desiderato.

Dopo aver inserito tutte le informazioni essenziali, selezionare Save per aggiungere l'articolo.

Come utilizzare Java nella creazione di oggetti?

L'utilizzo di Java nelle operazioni di creazione degli elementi consiste nel creare un'istanza di classe DynamoDB, un'istanza di classe Table, un'istanza di classe Item e specificare la chiave primaria e gli attributi dell'elemento che creerai. Quindi aggiungi il tuo nuovo elemento con il metodo putItem.

Esempio

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

Puoi anche guardare il seguente esempio più ampio.

Note- Il seguente esempio può presupporre un'origine dati creata in precedenza. Prima di tentare l'esecuzione, acquisire le librerie di supporto e creare le origini dati necessarie (tabelle con caratteristiche richieste o altre fonti di riferimento).

Il seguente esempio utilizza anche Eclipse IDE, un file delle credenziali AWS e AWS Toolkit all'interno di un progetto 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()); 
      } 
   }   
}