DynamoDB-항목 가져 오기

DynamoDB에서 항목을 검색하려면 GetItem을 사용하고 테이블 이름과 항목 기본 키를 지정해야합니다. 일부를 생략하는 대신 완전한 기본 키를 포함해야합니다.

예를 들어 복합 키의 정렬 키를 생략합니다.

GetItem 동작은 세 가지 기본값을 따릅니다-

  • 최종적으로 일관된 읽기로 실행됩니다.
  • 모든 속성을 제공합니다.
  • 용량 단위 소비에 대해서는 자세히 설명하지 않습니다.

이러한 매개 변수를 사용하면 기본 GetItem 동작을 재정의 할 수 있습니다.

항목 검색

DynamoDB는 여러 서버에서 항목의 여러 복사본을 유지하여 안정성을 보장합니다. 쓰기가 성공할 때마다 이러한 복사본이 생성되지만 실행하는 데 상당한 시간이 걸립니다. 결국 일관성을 의미합니다. 즉, 항목을 쓴 후 즉시 읽기를 시도 할 수 없습니다.

GetItem의 기본 최종 일관성 읽기를 변경할 수 있지만 더 많은 최신 데이터의 비용은 더 많은 용량 단위의 소비로 남아 있습니다. 구체적으로, 두 배나 많습니다. Note DynamoDB는 일반적으로 1 초 이내에 모든 복사본에서 일관성을 유지합니다.

GUI 콘솔, Java 또는 다른 도구를 사용하여이 작업을 수행 할 수 있습니다.

Java를 사용한 항목 검색

항목 검색 작업에서 Java를 사용하려면 DynamoDB 클래스 인스턴스, 테이블 클래스 인스턴스를 생성하고 테이블 인스턴스의 getItem 메서드를 호출해야합니다. 그런 다음 항목의 기본 키를 지정하십시오.

다음 예를 검토 할 수 있습니다.

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

경우에 따라이 작업에 대한 매개 변수를 지정해야합니다.

다음 예제는 .withProjectionExpressionGetItemSpec 검색 사양-

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

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

더 나은 이해를 위해 다음과 같은 더 큰 예를 검토 할 수도 있습니다.

Note− 다음 샘플은 이전에 생성 된 데이터 소스를 가정 할 수 있습니다. 실행을 시도하기 전에 지원 라이브러리를 확보하고 필요한 데이터 소스 (필수 특성이있는 테이블 또는 기타 참조 소스)를 작성하십시오.

이 샘플은 또한 Eclipse IDE, AWS 자격 증명 파일 및 Eclipse AWS Java 프로젝트 내에서 AWS Toolkit을 사용합니다.

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