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
)를 나타냅니다. ReadCapacityUnits
및 WriteCapacityUnits
에 지정한 값에 따라 테이블을 생성하는 데 시간이 걸릴 수 있습니다. 이 값이 크면 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
TableStatus
가 CREATING
에서 ACTIVE
로 변경되면 테이블을 사용할 준비가 된 것입니다.
참고
CreateTable
요청 직후에 DescribeTable
요청을 실행하면 DynamoDB는 오류(ResourceNotFoundException
)를 반환할 수 있습니다. 이는 DescribeTable
이 eventually consistent query를 사용하여 당장은 테이블 메타데이터를 이용할 수 없기 때문입니다. 이때는 몇 초 기다린 후 DescribeTable
요청을 다시 실행하십시오.
요금을 청구하기 위해 DynamoDB 스토리지 비용에는 100바이트의 항목별 오버헤드가 포함됩니다. (자세한 내용은 DynamoDB 요금DescribeTable
작업에 사용되지 않습니다.
테이블 업데이트
UpdateTable
작업을 통해 다음 중 하나를 수행할 수 있습니다.
-
테이블의 프로비저닝된 처리량 설정을 수정합니다(프로비저닝된 모드 테이블의 경우).
-
테이블의 읽기/쓰기 용량 모드를 변경합니다.
-
테이블에서 전역 보조 인덱스를 조작합니다(DynamoDB에서 글로벌 보조 인덱스 사용 참조).
-
테이블에서 DynamoDB Streams를 활성화하거나 비활성화합니다(DynamoDB Streams에 대한 변경 데이터 캡처 참조).
예
다음 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 계정 및 리전에 대한 읽기 및 쓰기 용량 단위의 상한 할당량을 확인할 수 있습니다.
이러한 할당량과 할당량 증가를 요청하는 방법에 대한 자세한 내용은 처리량 기본 할당량 단원을 참조하십시오.