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

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

DynamoDB 테이블에 대한 기본 작업

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

테이블 생성

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

  • 테이블 이름 이름은 DynamoDB 명명 규칙을 준수해야 하며 현재 계정 및 지역에 대해 고유해야 합니다. AWS 예를 들어 미국 동부(버지니아 북부)에서 People 테이블을 생성하고 유럽(아일랜드)에서 또 하나의 People 테이블을 생성할 수 있습니다. 하지만 이 두 테이블은 서로 완전히 다릅니다. 자세한 설명은 Amazon DynamoDB에서 지원되는 데이터 형식 및 이름 지정 규칙 섹션을 참조하세요.

  • 기본 키. 속성 한 개(파티션 키) 또는 두 개(파티션 키와 정렬 키)로 기본 키를 구성할 수 있습니다. 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으로 설정됩니다.

예 3: DynamoDB Standard-Infrequent Access 테이블 클래스를 사용하여 테이블 생성

DynamoDB Standard-Infrequent Access 테이블 클래스를 사용하여 동일한 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 \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --table-class STANDARD_INFREQUENT_ACCESS

다음과 같이 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 }, "TableClassSummary": { "LastUpdateDateTime": 1542397215.37, "TableClass": "STANDARD_INFREQUENT_ACCESS" }, "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 } }

테이블 설명

테이블에 대한 세부 정보를 보려면 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바이트의 항목별 오버헤드가 포함됩니다. (자세한 내용은 DynamoDB 요금을 참조하세요.) 이렇게 항목별로 추가된 100바이트는 용량 단위 계산이나 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에는 해당 테이블이 더 이상 존재하지 않습니다.

삭제 보호 기능 사용

삭제 보호 속성을 사용하여 테이블이 실수로 삭제되지 않도록 보호할 수 있습니다. 테이블에 이 속성을 활성화하면 관리자가 일반적인 테이블 관리 작업을 수행하는 동안 테이블이 실수로 삭제되는 것을 방지할 수 있습니다. 이렇게 하면 정상적인 비즈니스 운영이 중단되는 것을 방지하는 데 도움이 됩니다.

테이블 소유자 또는 권한이 부여된 관리자가 각 테이블의 삭제 보호 속성을 제어합니다. 모든 테이블의 삭제 보호 속성은 기본적으로 해제되어 있습니다. 여기에는 글로벌 복제본과 백업에서 복원된 테이블이 포함됩니다. 테이블에 대한 삭제 보호가 비활성화되면 Identity and Access Management(IAM) 정책에 의해 승인된 모든 사용자가 테이블을 삭제할 수 있습니다. 삭제 보호가 활성화된 테이블은 그 누구도 삭제할 수 없습니다.

이 설정을 변경하려면 테이블의 추가 설정으로 이동하여 삭제 보호 패널로 이동한 다음, 삭제 보호 활성화를 선택합니다.

삭제 보호 속성은 DynamoDB 콘솔, API, CLI/SDK 및 AWS CloudFormation에서 지원됩니다. CreateTable API는 테이블 생성 시 삭제 보호 속성을 지원하고, UpdateTable API는 기존 테이블의 삭제 보호 속성 변경을 지원합니다.

참고
  • AWS 계정이 삭제되더라도 90일 이내에 테이블을 포함한 해당 계정의 모든 데이터가 삭제됩니다.

  • DynamoDB가 테이블을 암호화하는 데 사용된 고객 관리형 키에 액세스할 수 없는 경우에도 테이블은 여전히 아카이브됩니다. 아카이브에는 테이블을 백업하고 원본을 삭제하는 작업이 포함됩니다.

테이블 이름 나열

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

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

aws dynamodb list-tables

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

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

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

aws dynamodb describe-limits

출력에는 현재 계정 및 지역의 읽기 및 쓰기 용량 단위 상한 할당량이 표시됩니다. AWS

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