DynamoDB - Création d'éléments

La création d'un élément dans DynamoDB consiste principalement en une spécification d'élément et d'attribut, ainsi que la possibilité de spécifier des conditions. Chaque élément existe sous la forme d'un ensemble d'attributs, chaque attribut étant nommé et attribué à une valeur d'un certain type.

Les types de valeur incluent scalaire, document ou ensemble. Les articles ont une taille limite de 400 Ko, avec la possibilité de n'importe quel nombre d'attributs capables de s'adapter dans cette limite. Les tailles de nom et de valeur (longueurs binaires et UTF-8) déterminent la taille de l'élément. L'utilisation de noms d'attributs courts aide à réduire la taille des éléments.

Note- Vous devez spécifier tous les attributs de clé primaire, les clés primaires ne nécessitant que la clé de partition; et les clés composites nécessitant à la fois la clé de partition et de tri.

Souvenez-vous également que les tables ne possèdent pas de schéma prédéfini. Vous pouvez stocker des ensembles de données radicalement différents dans une seule table.

Utilisez la console GUI, Java ou un autre outil pour effectuer cette tâche.

Comment créer un élément à l'aide de la console GUI?

Accédez à la console. Dans le volet de navigation sur le côté gauche, sélectionnezTables. Choisissez le nom de la table à utiliser comme destination, puis sélectionnez leItems onglet comme indiqué dans la capture d'écran suivante.

Sélectionner Create Item. L'écran Créer un article fournit une interface pour saisir les valeurs d'attribut requises. Tous les indices secondaires doivent également être saisis.

Si vous avez besoin de plus d'attributs, sélectionnez le menu d'action à gauche du Message. Puis sélectionnezAppendet le type de données souhaité.

Après avoir entré toutes les informations essentielles, sélectionnez Save pour ajouter l'élément.

Comment utiliser Java dans la création d'articles?

L'utilisation de Java dans les opérations de création d'élément consiste à créer une instance de classe DynamoDB, une instance de classe Table, une instance de classe Item et à spécifier la clé primaire et les attributs de l'élément que vous allez créer. Ajoutez ensuite votre nouvel élément avec la méthode putItem.

Exemple

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

Vous pouvez également consulter l'exemple plus large suivant.

Note- L'exemple suivant peut supposer une source de données créée précédemment. Avant d'essayer de l'exécuter, acquérez les bibliothèques de prise en charge et créez les sources de données nécessaires (tables avec les caractéristiques requises ou autres sources référencées).

L'exemple suivant utilise également Eclipse IDE, un fichier d'informations d'identification AWS et AWS Toolkit dans un projet 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()); 
      } 
   }   
}