Java에서 DynamoDB 테이블 작업 - Amazon DynamoDB

Java에서 DynamoDB 테이블 작업

AWS SDK for Java를 사용하여 Amazon DynamoDB 테이블을 생성, 업데이트 및 삭제하거나, 계정에 속한 모든 테이블을 나열하거나, 특정 테이블에 대한 정보를 가져올 수 있습니다.

테이블 생성

테이블을 생성할 때는 테이블 이름, 기본 키, 그리고 할당 처리량 값을 입력해야 합니다. 다음은 숫자 형식의 속성 ID를 기본 키로 사용하여 샘플 테이블을 생성하는 코드 조각입니다.

AWS SDK for Java API를 사용해 테이블을 생성하려면

  1. DynamoDB 클래스의 인스턴스를 만듭니다.

  2. CreateTableRequest를 인스턴스화하여 요청 정보를 입력합니다.

    이때 입력해야 하는 정보는 테이블 이름, 속성 정의, 키 스키마, 그리고 할당 처리량 값입니다.

  3. 요청 객체를 파라미터로 입력하여 createTable 메서드를 실행합니다.

다음 코드 예제에서는 이전 단계를 설명합니다.

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); List<AttributeDefinition> attributeDefinitions= new ArrayList<AttributeDefinition>(); attributeDefinitions.add(new AttributeDefinition().withAttributeName("Id").withAttributeType("N")); List<KeySchemaElement> keySchema = new ArrayList<KeySchemaElement>(); keySchema.add(new KeySchemaElement().withAttributeName("Id").withKeyType(KeyType.HASH)); CreateTableRequest request = new CreateTableRequest() .withTableName(tableName) .withKeySchema(keySchema) .withAttributeDefinitions(attributeDefinitions) .withProvisionedThroughput(new ProvisionedThroughput() .withReadCapacityUnits(5L) .withWriteCapacityUnits(6L)); Table table = dynamoDB.createTable(request); table.waitForActive();

DynamoDB가 테이블을 생성하고 상태를 ACTIVE로 설정해야만 테이블을 사용할 수 있습니다. 그러면 createTable 요청이 사용할 수 있는 Table 객체를 반환하여 테이블에 대한 정보를 추가로 가져올 수 있습니다.

TableDescription tableDescription = dynamoDB.getTable(tableName).describe(); System.out.printf("%s: %s \t ReadCapacityUnits: %d \t WriteCapacityUnits: %d", tableDescription.getTableStatus(), tableDescription.getTableName(), tableDescription.getProvisionedThroughput().getReadCapacityUnits(), tableDescription.getProvisionedThroughput().getWriteCapacityUnits());

또한 클라이언트의 describe 메서드를 사용하면 언제든지 테이블 정보를 가져올 수 있습니다.

TableDescription tableDescription = dynamoDB.getTable(tableName).describe();

테이블 업데이트

기존 테이블의 할당 처리량 값만 업데이트할 수 있습니다. 애플리케이션 요구 사항에 따라 이러한 값을 업데이트해야 할 수 있습니다.

참고

하루당 처리량 증가 및 감소에 대한 자세한 내용은 Amazon DynamoDB의 서비스, 계정 및 테이블 할당량 단원을 참조하십시오.

AWS SDK for Java API를 사용하여 테이블을 업데이트하려면

  1. Table 클래스의 인스턴스를 만듭니다.

  2. ProvisionedThroughput 클래스 인스턴스를 생성하여 새로운 처리량 값을 입력합니다.

  3. ProvisionedThroughput 인스턴스를 파라미터로 입력하여 updateTable 메서드를 실행합니다.

다음 코드 예제에서는 이전 단계를 설명합니다.

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); Table table = dynamoDB.getTable("ProductCatalog"); ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput() .withReadCapacityUnits(15L) .withWriteCapacityUnits(12L); table.updateTable(provisionedThroughput); table.waitForActive();

테이블 삭제

AWS SDK for Java API를 사용하여 테이블을 삭제하려면

  1. Table 클래스의 인스턴스를 만듭니다.

  2. DeleteTableRequest 클래스 인스턴스를 생성하고 삭제하려는 테이블 이름을 입력합니다.

  3. Table 인스턴스를 파라미터로 입력하여 deleteTable 메서드를 실행합니다.

다음 코드 예제에서는 이전 단계를 설명합니다.

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); Table table = dynamoDB.getTable("ProductCatalog"); table.delete(); table.waitForDelete();

테이블 나열

계정에 속한 테이블을 나열하려면 DynamoDB 인스턴스를 생성하여 listTables 메서드를 실행합니다. ListTables 작업에는 파라미터가 필요 없습니다.

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().build(); DynamoDB dynamoDB = new DynamoDB(client); TableCollection<ListTablesResult> tables = dynamoDB.listTables(); Iterator<Table> iterator = tables.iterator(); while (iterator.hasNext()) { Table table = iterator.next(); System.out.println(table.getTableName()); }