DynamoDB - Mendapatkan Item

Mengambil item di DynamoDB memerlukan penggunaan GetItem, dan menentukan nama tabel dan kunci utama item. Pastikan untuk menyertakan kunci utama lengkap daripada menghilangkan sebagian.

Misalnya, menghilangkan kunci pengurutan dari kunci komposit.

Perilaku GetItem sesuai dengan tiga default -

  • Ini dijalankan sebagai pembacaan yang akhirnya konsisten.
  • Ini menyediakan semua atribut.
  • Itu tidak merinci konsumsi unit kapasitasnya.

Parameter ini memungkinkan Anda untuk mengganti perilaku GetItem default.

Ambil Item

DynamoDB memastikan keandalan dengan memelihara banyak salinan item di beberapa server. Setiap tulisan yang berhasil membuat salinan ini, tetapi membutuhkan banyak waktu untuk mengeksekusinya; arti akhirnya konsisten. Ini berarti Anda tidak dapat langsung mencoba membaca setelah menulis sebuah item.

Anda dapat mengubah pembacaan GetItem default yang akhirnya konsisten, namun, biaya data yang lebih baru tetap mengkonsumsi lebih banyak unit kapasitas; khususnya, dua kali lipat. Catatan DynamoDB biasanya mencapai konsistensi di setiap salinan dalam satu detik.

Anda dapat menggunakan konsol GUI, Java, atau alat lain untuk melakukan tugas ini.

Item Retrieval Menggunakan Java

Menggunakan Java dalam operasi pengambilan item memerlukan pembuatan Instans Kelas DynamoDB, Instans Kelas Tabel, dan memanggil metode getItem instance Tabel. Kemudian tentukan kunci utama item tersebut.

Anda dapat meninjau contoh berikut -

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

Dalam beberapa kasus, Anda perlu menentukan parameter untuk operasi ini.

Contoh berikut menggunakan .withProjectionExpression dan GetItemSpec untuk spesifikasi pengambilan -

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

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

Anda juga dapat meninjau contoh yang lebih besar berikut untuk pemahaman yang lebih baik.

Note- Contoh berikut mungkin menganggap sumber data yang dibuat sebelumnya. Sebelum mencoba untuk mengeksekusi, dapatkan pustaka pendukung dan buat sumber data yang diperlukan (tabel dengan karakteristik yang diperlukan, atau sumber referensi lainnya).

Sampel ini juga menggunakan Eclipse IDE, file kredensial AWS, dan AWS Toolkit dalam Proyek Java Eclipse AWS.

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