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);
경우에 따라이 작업에 대한 매개 변수를 지정해야합니다.
다음 예제는 .withProjectionExpression 과 GetItemSpec 검색 사양-
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());
}
}
}