DynamoDB 테이블에 대한 기본 작업 - Amazon DynamoDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

DynamoDB 테이블에 대한 기본 작업

다른 데이터베이스 시스템과 마찬가지로 Amazon DynamoDB는 데이터를 테이블에 저장합니다. 몇 가지 기본 작업을 사용하여 테이블을 관리할 수 있습니다.

테이블 생성

Amazon DynamoDB 작업을 사용하여 CreateTable에서 테이블을 생성합니다. 테이블을 생성하려면 다음 정보를 제공해야 합니다.

  • 테이블 이름 이름은 DynamoDB 이름 지정 규칙에 맞아야 하고, 현재의 AWS 계정과 리전에 고유해야 합니다. 예를 들어 미국 동부(버지니아 북부)에서 People 테이블을 생성하고 유럽(아일랜드)에서 다른 People 테이블을 생성할 수 있습니다. 하지만 이 두 테이블은 서로 완전히 다릅니다. 자세한 내용은 이름 지정 규칙 및 데이터 형식 단원을 참조하십시오.

  • 기본 키. 속성 한 개(파티션 키) 또는 두 개(파티션 키와 정렬 키)로 기본 키를 구성할 수 있습니다. HASH(파티션 키) 및 RANGE(정렬 키)에 대해 속성 이름과 데이터 유형, 그리고 각 속성의 역할을 입력해야 합니다. 자세한 내용은 기본 키 단원을 참조하십시오.

  • 처리량 설정(프로비저닝된 테이블의 경우) 프로비저닝된 모드를 사용 중인 경우 테이블의 초기 읽기 및 쓰기 처리량 설정을 지정해야 합니다. 나중에 이러한 설정을 수정하거나 DynamoDB Auto Scaling을 활성화하여 설정을 자동으로 관리할 수 있습니다. 자세한 내용은 DynamoDB 프로비저닝된 용량 테이블의 설정 관리DynamoDB Auto Scaling을 사용하여 자동으로 처리 용량 관리 단원을 참조하십시오.

예제 1: 프로비저닝된 테이블 생성

다음 AWS CLI 예제에서는 테이블(Music)을 생성하는 방법을 보여 줍니다. 기본 키는 Artist(파티션 키)와 SongTitle(정렬 키)로 구성되며, 각각의 데이터 형식은 String입니다. 이 테이블의 최대 처리량은 읽기 용량 단위 10개, 쓰기 용량 단위 5개입니다.

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5

다음과 같이 CreateTable 작업은 이 테이블의 메타데이터를 반환합니다.

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

TableStatus 요소는 테이블의 현재 상태(CREATING)를 나타냅니다. ReadCapacityUnitsWriteCapacityUnits에 지정한 값에 따라 테이블을 생성하는 데 시간이 걸릴 수 있습니다. 이 값이 크면 DynamoDB에서 테이블에 더 많은 리소스를 할당해야 합니다.

예제 2: 온디맨드 테이블 생성

온디맨드 모드를 사용하여 동일한 Music 테이블을 생성하려면

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode=PAY_PER_REQUEST

다음과 같이 CreateTable 작업은 이 테이블의 메타데이터를 반환합니다.

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
중요

온디맨드 테이블에서 DescribeTable을 호출할 경우 읽기 용량 단위와 쓰기 용량 단위는 0으로 설정됩니다.

테이블 설명

테이블에 대한 세부 정보를 보려면 DescribeTable 작업을 사용합니다. 테이블 이름을 입력해야 합니다. DescribeTable 출력은 CreateTable 출력의 형식과 동일합니다. 여기에는 테이블이 생성된 타임스탬프, 해당 키 스키마, 해당 프로비저닝된 처리량 설정, 해당 예상 크기 및 보조 인덱스(있는 경우)가 포함됩니다.

중요

온디맨드 테이블에서 DescribeTable을 호출할 경우 읽기 용량 단위와 쓰기 용량 단위는 0으로 설정됩니다.

aws dynamodb describe-table --table-name Music

TableStatusCREATING에서 ACTIVE로 변경되면 테이블을 사용할 준비가 된 것입니다.

참고

CreateTable 요청 직후에 DescribeTable 요청을 실행하면 DynamoDB는 오류(ResourceNotFoundException)를 반환할 수 있습니다. 이는 DescribeTable이 eventually consistent query를 사용하여 당장은 테이블 메타데이터를 이용할 수 없기 때문입니다. 이때는 몇 초 기다린 후 DescribeTable 요청을 다시 실행하십시오.

결제를 위해 DynamoDB 스토리지 비용에는 100 bytes의 항목별 오버헤드가 포함됩니다. 자세한 내용은 DynamoDB 요금을 참조하십시오. 이렇게 항목별로 추가된 100 bytes는 용량 단위 계산이나 DescribeTable 작업에 사용되지 않습니다.

테이블 업데이트

UpdateTable 작업을 통해 다음 중 하나를 수행할 수 있습니다.

다음 AWS CLI 예제는 테이블의 프로비저닝된 처리량 설정을 수정하는 방법을 보여줍니다.

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
참고

UpdateTable 요청을 실행하면 테이블 상태가 AVAILABLE에서 UPDATING으로 바뀝니다. UPDATING 상태라고 해도 테이블 사용에는 제한이 없습니다. 이 프로세스가 끝나면 테이블 상태가 다시 UPDATING에서 AVAILABLE로 바뀝니다.

다음 AWS CLI 예제는 테이블의 읽기/쓰기 용량 모드를 온디맨드 모드로 수정하는 방법을 보여줍니다.

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

테이블 삭제

DeleteTable 작업으로 미사용 테이블을 제거할 수 있습니다. 테이블 삭제 작업은 취소할 수 없습니다.

다음 AWS CLI 예제는 대기열을 삭제하는 방법을 보여줍니다.

aws dynamodb delete-table --table-name Music

DeleteTable 요청을 실행하면 테이블의 상태가 ACTIVE에서 DELETING으로 바뀝니다. 사용하는 리소스(예: 테이블에 저장된 데이터, 테이블의 스트림 또는 인덱스 등)에 따라 테이블을 삭제하는 데 시간이 걸릴 수 있습니다.

DeleteTable 작업이 종료되면 DynamoDB에는 해당 테이블이 더 이상 존재하지 않습니다.

테이블 이름 나열

ListTables 작업은 현재 AWS 계정 및 리전의 DynamoDB 테이블 이름을 반환합니다.

다음 AWS CLI 예제는 DynamoDB 테이블 이름을 나열하는 방법을 보여줍니다.

aws dynamodb list-tables

프로비저닝된 처리량 할당량 설명

DescribeLimits 작업은 현재 AWS 계정 및 리전의 현재 읽기 및 쓰기 용량 할당량을 반환합니다.

다음 AWS CLI 예제는 현재 프로비저닝된 처리량 할당량을 설명하는 방법을 보여줍니다.

aws dynamodb describe-limits

출력을 통해 현재 AWS 계정 및 리전에 대한 읽기 및 쓰기 용량 단위의 상한 할당량을 확인할 수 있습니다.

이러한 할당량과 할당량 증가를 요청하는 방법에 대한 자세한 내용은 처리량 기본 할당량 단원을 참조하십시오.