DynamoDB - Öğeleri Alma

DynamoDB'de bir öğenin alınması GetItem'in kullanılmasını ve tablo adı ile öğe birincil anahtarının belirtilmesini gerektirir. Bir bölümü atlamak yerine tam bir birincil anahtar eklediğinizden emin olun.

Örneğin, bir bileşik anahtarın sıralama anahtarının çıkarılması.

GetItem davranışı üç varsayılana uygundur -

  • Sonunda tutarlı bir okuma olarak yürütülür.
  • Tüm nitelikleri sağlar.
  • Kapasite birim tüketimini detaylandırmaz.

Bu parametreler, varsayılan GetItem davranışını geçersiz kılmanıza izin verir.

Bir Öğe Al

DynamoDB, birden çok sunucuda birden çok öğe kopyasını muhafaza ederek güvenilirlik sağlar. Her başarılı yazma, bu kopyaları oluşturur, ancak yürütülmesi önemli ölçüde zaman alır; sonuçta tutarlı anlamına gelir. Bu, bir öğeyi yazdıktan sonra hemen okumaya çalışamayacağınız anlamına gelir.

GetItem'in varsayılan nihai olarak tutarlı okumasını değiştirebilirsiniz, ancak daha fazla mevcut verinin maliyeti daha fazla kapasite birimi tüketimi olarak kalır; özellikle, iki kat fazla. Not DynamoDB, genellikle bir saniye içinde her kopyada tutarlılık sağlar.

Bu görevi gerçekleştirmek için GUI konsolunu, Java'yı veya başka bir aracı kullanabilirsiniz.

Java Kullanarak Öğe Alma

Öğe alma işlemlerinde Java kullanmak, bir DynamoDB Sınıf Örneği, Tablo Sınıfı Örneği oluşturmayı ve Tablo örneğinin getItem yöntemini çağırmayı gerektirir. Ardından, öğenin birincil anahtarını belirtin.

Aşağıdaki örneği inceleyebilirsiniz -

DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient( 
   new ProfileCredentialsProvider()));  
Table table = dynamoDB.getTable("ProductList");  
Item item = table.getItem("IDnum", 109);

Bazı durumlarda, bu işlem için parametreleri belirlemeniz gerekir.

Aşağıdaki örnek, .withProjectionExpression ve GetItemSpec geri alma özellikleri için -

GetItemSpec spec = new GetItemSpec() 
   .withPrimaryKey("IDnum", 122) 
   .withProjectionExpression("IDnum, EmployeeName, Department") 
   .withConsistentRead(true);

Item item = table.getItem(spec);
System.out.println(item.toJSONPretty());

Daha iyi anlamak için aşağıdaki daha büyük örneği de inceleyebilirsiniz.

Note- Aşağıdaki örnek, önceden oluşturulmuş bir veri kaynağını varsayabilir. Yürütme girişiminde bulunmadan önce, destekleyici kitaplıklar edinin ve gerekli veri kaynaklarını oluşturun (gerekli özelliklere sahip tablolar veya diğer başvurulan kaynaklar).

Bu örnekte ayrıca Eclipse IDE, bir AWS kimlik bilgileri dosyası ve bir Eclipse AWS Java Projesi içindeki AWS Toolkit kullanılmaktadır.

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 GetItemOpSample {
   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());
      }
   }
   private static void retrieveItem() {
      Table table = dynamoDB.getTable(tableName);
      try {
         Item item = table.getItem("ID", 303, "ID, Nomenclature, Manufacturers", null);
         System.out.println("Displaying retrieved items...");
         System.out.println(item.toJSONPretty());
      } catch (Exception e) {
         System.err.println("Cannot retrieve items.");
         System.err.println(e.getMessage());
      }
   }
}