Amazon DynamoDB
개발자 안내서 (API 버전 2012-08-10)

DynamoDB의 제한 값

이 단원에서는 Amazon DynamoDB 내의 현재 제한을 설명합니다(일부 경우에는 제한이 없음). 각 제한은 달리 지정되지 않은 한 리전별로 적용됩니다.

읽기/쓰기 용량 모드 및 처리량

24시간마다 한 번 읽기/쓰기 용량 모드를 전환할 수 있습니다.

용량 단위 크기(프로비저닝된 테이블의 경우)

읽기 용량 단위 1 = 초당 strongly consistent read 1 또는 초당 eventually consistent reads 2(최대 4 KB 크기 항목의 경우).

쓰기 용량 단위 1 = 초당 쓰기 1(최대 1 KB 크기 항목의 경우)

트랜잭션 읽기 요청은 최대 4 KB 크기 항목의 초당 1회 읽기를 수행하는 데 2개의 읽기 용량 단위가 필요합니다.

트랜잭션 쓰기 요청은 최대 1 KB 크기 항목의 초당 1회 쓰기를 수행하는 데 2개의 쓰기 용량 단위가 필요합니다.

요청 단위 크기(온디맨드 테이블의 경우)

읽기 요청 단위 1 = 강력히 일관된 읽기 1 또는 최종적 일관된 읽기 2(최대 4 KB 크기 항목의 경우)

쓰기 요청 단위 1 = 쓰기 1(최대 1 KB 크기 항목의 경우)

트랜잭션 읽기 요청은 최대 4 KB 크기 항목의 1회 읽기를 수행하는 데 2개의 읽기 요청 단위가 필요합니다.

트랜잭션 쓰기 요청은 최대 1 KB 크기 항목의 1회 쓰기를 수행하는 데 2개의 쓰기 요청 단위가 필요합니다.

처리량 기본 제한

AWS는 프로비저닝할 수 있는 처리량에 몇 가지 기본 제한을 둡니다. 이러한 제한은 용량 증가를 요청하지 않은 경우에 적용됩니다. 서비스 제한 증가를 요청하려면 https://aws.amazon.com/support를 참조하십시오.

온디맨드 프로비저닝됨

Per table

40,000 read request units and 40,000 write request units

40,000 read capacity units and 40,000 write capacity units

Per account

Not applicable

80,000 read capacity units and 80,000 write capacity units

Minimum throughput for any table or global secondary index

Not applicable

1 read capacity unit and 1 write capacity unit

참고

모든 계정의 사용 가능 처리량은 한 테이블 또는 여러 테이블에 적용할 수 있습니다.

할당된 처리량 제한에는 테이블 용량과 모든 글로벌 보조 인덱스의 용량 합계가 포함됩니다.

AWS Management 콘솔에서 Amazon CloudWatch를 통해 지표 탭의 read capacitywrite capacity graphs를 조회하여 지정된 AWS 리전의 현재 읽기 및 쓰기 처리량을 확인할 수 있습니다. 제한에 너무 근접하지 않도록 하십시오.

프로비저닝된 처리량 기본 제한을 늘린 경우 DescribeLimits 작업을 사용하여 현재 제한 값을 알 수 있습니다.

처리량 늘리기 또는 줄이기(프로비저닝된 테이블의 경우)

할당 처리량 상향

AWS Management 콘솔 또는 UpdateTable 작업을 사용하여 필요한 만큼 자주 ReadCapacityUnits 또는 WriteCapacityUnits를 늘릴 수 있습니다. 단일 호출에서 테이블, 해당 테이블의 모든 글로벌 보조 인덱스 또는 테이블과 인덱스 조합의 할당된 처리량을 늘릴 수 있습니다. 새 설정은 UpdateTable 작업이 완료된 후에 적용됩니다.

프로비저닝된 용량을 추가할 때는 계정당 제한을 초과할 수 없으며, DynamoDB가 프로비저닝된 용량이 너무 빠르게 늘지 않도록 제한합니다. 이러한 제한 사항을 만족하는 경우에는 원하는 만큼 테이블의 할당된 용량을 늘릴 수 있습니다. 계정당 제한에 대한 자세한 내용은 앞의 처리량 기본 제한 단원을 참조하십시오.

할당 처리량 하향

UpdateTable 작업의 모든 테이블 및 글로벌 보조 인덱스에 대해 ReadCapacityUnits 또는 WriteCapacityUnits(또는 둘 다)를 줄일 수 있습니다. 새 설정은 UpdateTable 작업이 완료된 후에 적용됩니다. 하루 중 원하는 시간에 최대 네 번까지 줄일 수 있습니다. 하루는 협정 세계시(UTC)에 따라 정의됩니다. 또한 지난 한 시간 동안 처리량을 줄이지 않은 경우 추가로 줄일 수 있습니다. 이에 따라 하루에 줄일 수 있는 최대 횟수를 27회로 설정할 수 있습니다(처음 1시간 동안 4번 줄이기, 이후 1시간마다 1회 줄이기(당일 기준)).

중요

테이블 감소 제한과 글로벌 보조 인덱스 감소 제한은 별개이므로 특정 테이블에 대한 모든 글로벌 보조 인덱스는 자체 감소 제한을 갖습니다. 그러나 단일 요청이 테이블 및 글로벌 보조 인덱스에 대한 처리량을 감소시키는 경우에는 둘 중 하나가 현재 제한을 초과하게 되면 요청이 거부됩니다. 요청은 부분적으로 처리되지 않습니다.

하루의 첫 4시간 동안에는 글로벌 보조 인덱스가 있는 테이블을 다음과 같이 수정할 수 있습니다.

  • 테이블의 WriteCapacityUnits 또는 ReadCapacityUnits(또는 둘 다)를 네 번 감소합니다.

  • 글로벌 보조 인덱스의 WriteCapacityUnits 또는 ReadCapacityUnits(또는 둘 다)를 네 번 감소합니다.

같은 날의 종료 시간에 테이블 및 글로벌 보조 인덱스 처리량은 잠재적으로 각각 총 27회 감소될 수 있습니다.

테이블

테이블 크기

테이블 크기는 실제로 제한이 없습니다. 테이블은 항목 수 또는 바이트 수에서 제약이 없습니다.

계정당 테이블

임의의 AWS 계정에 대해 AWS 리전당 256개 테이블의 초기 제한이 있습니다.

서비스 제한 증가를 요청하려면 https://aws.amazon.com/support를 참조하십시오.

보조 인덱스

테이블당 보조 인덱스

5 로컬 보조 인덱스의 최대값을 정의할 수 있습니다.

처음에는 테이블당 20 글로벌 보조 인덱스 제한이 있습니다. 서비스 제한 증가를 요청하려면 https://aws.amazon.com/support를 참조하십시오.

UpdateTable 작업마다 생성 또는 삭제할 수 있는 글로벌 보조 인덱스는 1개로 제한됩니다.

테이블당 프로젝션 보조 인덱스 속성

테이블의 모든 로컬 및 글로벌 보조 인덱스에 속성을 총 100개까지 프로젝션할 수 있습니다. 사용자 지정 프로젝션 속성에만 이 제한이 적용됩니다.

CreateTable 작업에서 INCLUDEProjectionType을 지정할 경우 모든 보조 인덱스에서 합계한 NonKeyAttributes에 지정되는 속성의 총 개수는 100을 초과하지 않아야 합니다. 동일한 속성을 2개의 다른 인덱스에 프로젝션할 경우 합계를 확인할 때 2개의 서로 다른 속성으로 계산됩니다.

이 제한은 ProjectionTypeKEYS_ONLY 또는 ALL인 보조 인덱스에 적용되지 않습니다.

파티션 키와 정렬 키

파티션 키 길이

파티션 키 값의 최소 길이는 1바이트입니다. 최대 길이는 2048 bytes입니다.

파티션 키 값

고유 파티션 키 값의 수는 테이블 또는 보조 인덱스에 대해 실제로 제한이 없습니다.

정렬 키 길이

정렬 키 값의 최소 길이는 1바이트입니다. 최대 길이는 1024 bytes입니다.

정렬 키 값

일반적으로 파티션 키 값당 고유 정렬 키 값의 수는 실제로 제한이 없습니다.

보조 인덱스를 포함하는 테이블은 예외입니다. local secondary index의 경우 항목 모음 크기에 제한이 있습니다. 모든 고유 파티션 키 값에 대해 모든 테이블 및 인덱스 항목의 총 크기가 10GB 이내여야 합니다. 이 때문에 파티션 키 값당 정렬 키 수가 제약을 받을 수 있습니다. 자세한 내용은 항목 컬렉션 크기 제한 단원을 참조하십시오.

이름 지정 규칙

테이블 이름 및 보조 인덱스 이름

테이블 및 보조 인덱스의 이름은 3자 이상이어야 하며 255자를 초과할 수 없습니다. 다음은 허용된 문자입니다.

  • A-Z

  • a-z

  • 0-9

  • _ (밑줄)

  • - (하이픈)

  • .(점)

속성 이름

일반적으로 속성 이름은 1자 이상이어야 하며 64KB를 초과할 수 없습니다.

다음과 같은 예외가 있습니다. 이러한 속성 이름은 255자 이내여야 합니다.

  • Secondary index파티션 키 이름.

  • Secondary index정렬 키 이름.

  • 사용자 지정 프로젝션 속성 이름(local secondary indexes에만 적용 가능). CreateTable 작업에서 INCLUDEProjectionType을 지정할 경우 NonKeyAttributes 파라미터에 있는 속성 이름의 길이가 제한됩니다. KEYS_ONLYALL 프로젝션 유형에는 적용되지 않습니다.

이러한 속성 이름은 UTF-8로 인코딩해야 하며, 인코딩 후 각 이름의 총 크기가 255바이트를 초과할 수 없습니다.

데이터 형식

문자열

문자열 길이는 최대 항목 크기 400 KB의 제한을 받습니다.

문자열은 UTF-8 이진수 인코딩을 사용하는 유니코드입니다. UTF-8은 가변 폭 인코딩이므로, DynamoDB는 문자열의 길이를 UTF-8 바이트 기준으로 결정합니다.

번호

숫자는 최대 38자리 정밀도의 양수, 음수 또는 0이 될 수 있습니다.

  • 양의 범위: 1E-130 ~ 9.9999999999999999999999999999999999999E+125

  • 음의 범위: -9.9999999999999999999999999999999999999E+125 ~ -1E-130

DynamoDB는 요청 및 응답에서 JSON 문자열을 사용하여 숫자 데이터를 표시합니다. 자세한 내용은 DynamoDB하위 수준 API 단원을 참조하십시오.

숫자 정밀도가 중요한 경우에는 숫자 형식에서 변환된 문자열을 사용하여 숫자를 DynamoDB로 전달해야 합니다.

이진수

이진수 길이는 최대 항목 크기 400 KB의 제한을 받습니다.

이진 속성을 처리하는 애플리케이션에서는 데이터를 DynamoDB로 보내기 전에 Base64 형식으로 인코딩해야 합니다. DynamoDB가 데이터를 받아 부호가 없는 바이트 배열로 디코딩하고 속성 길이로 사용합니다.

항목

항목 크기

DynamoDB에서 최대 항목 크기가 400 KB를 초과할 수 없습니다. 여기에는 속성 이름 이진 길이(UTF-8 길이)와 속성 값 길이(이진 길이)가 모두 포함됩니다. 속성 이름은 크기 제한에 포함됩니다.

예를 들어 속성이 2개인 항목이 있습니다. 한 속성은 이름이 "shirt-color"이고 값이 "R"이며 다른 속성은 이름이 "shirt-size"이고 값이 "M"입니다. 해당 항목의 총 크기는 23바이트입니다.

로컬 보조 인덱스 포함 테이블의 항목 크기

테이블에 있는 각 local secondary index의 경우 다음의 전체 크기에 400 KB의 제한이 적용됩니다.

  • 테이블에 있는 항목의 데이터 크기

  • 키 값과 프로젝션 속성을 포함하여 그 항목에 해당하는 local secondary index 항목 크기

속성

항목별 속성 이름-값 페어

항목당 속성 누적 크기는 최대 DynamoDB 항목 크기(400 KB) 이내여야 합니다.

목록, 맵 또는 집합 내 값 수

목록, 맵 또는 집합 내 값의 수에는 제한이 없습니다. 단, 값을 포함하는 항목이 400 KB 항목 크기 제한을 초과하지 않아야 합니다.

속성 값

속성 값은 빈 문자열이나 빈 집합(문자열 집합, 숫자 집합 또는 이진수 집합)일 수 없습니다. 하지만 빈 목록 및 맵은 허용됩니다.

속성 중첩 깊이

DynamoDB는 최대 32 수준 깊이까지 중첩된 속성을 지원합니다.

표현식 파라미터

표현식 파라미터는 ProjectionExpression, ConditionExpression, UpdateExpressionFilterExpression을 포함합니다.

길이

표현식 문자열의 최대 길이는 4KB입니다. 예를 들어, ConditionExpression a=b의 크기는 3바이트입니다.

표현식 속성 이름 또는 표현식 속성 값 하나의 최대 길이는 255바이트입니다. 예를 들어, #name은 5바이트이고, :val은 4바이트입니다.

한 표현식에서 모든 치환 변수의 최대 길이는 2MB입니다. 이 길이는 모든 ExpressionAttributeNamesExpressionAttributeValues의 길이의 합계입니다.

연산자 및 피연산자

UpdateExpression에 허용된 최대 연산자 또는 함수의 수는 300개입니다. 예를 들어 UpdateExpression SET a = :val1 + :val2 + :val3에 2개의 "+" 연산자가 포함됩니다.

IN 비교기의 최대 피연산자 수는 100개입니다.

예약어

DynamoDB는 예약어와 충돌하는 이름의 사용을 금지하지 않습니다. (전체 목록은 DynamoDB의 예약어 단원을 참조하십시오.)

하지만 표현식 파라미터에 예약어를 사용하는 경우에는 ExpressionAttributeNames도 지정해야 합니다. 자세한 내용은 식 속성 이름 단원을 참조하십시오.

DynamoDB 트랜잭션

DynamoDB 트랜잭션 API 작업의 제약 조건은 다음과 같습니다.

  • 트랜잭션은 고유 항목을 25개 이상 포함할 수 없습니다.

  • 트랜잭션은 4MB를 초과하는 데이터를 포함할 수 없습니다.

  • 트랜잭션에서 동일한 테이블의 동일한 항목에 대해 두 작업을 동시에 수행할 수 없습니다. 예를 들어 동일한 트랜잭션에서 동일한 항목에 대해 ConditionCheck 작업과 Update 작업을 동시에 수행할 수 없습니다.

  • 하나의 트랜잭션을 여러 AWS 계정 또는 리전의 테이블에서 작동할 수 없습니다.

  • 트랜잭션은 기본적으로 전역 테이블에 대해서는 활성화되지 않습니다. 전역 테이블에서 트랜잭션을 사용하려면 계정 담당자 또는 Amazon Support에 문의하십시오.

DynamoDB 스트림

DynamoDB 스트림 내 샤드의 동시 리더

3개 이상의 프로세스가 동시에 동일 DynamoDB 스트림 샤드에서 읽기 작업을 수행하도록 허용하지 마십시오. 이 제한을 초과하면 요청 병목이 발생할 수 있습니다.

스트림이 활성화된 테이블에 대한 최대 쓰기 용량

AWS는 DynamoDB 스트림이 활성화된 DynamoDB 테이블에 대한 쓰기 용량에 몇 가지 기본 제한을 둡니다. 이러한 제한은 용량 증가를 요청하지 않은 경우에 적용됩니다. 서비스 제한 증가를 요청하려면 https://aws.amazon.com/support를 참조하십시오.

  • 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(캘리포니아 북부 지역), 미국 서부(오레곤), 남아메리카(상파울루), EU(프랑크푸르트), EU(아일랜드), 아시아 태평양(도쿄), 아시아 태평양(서울), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 중국(베이징) 리전:

    • 테이블당 – 쓰기 용량 유닛 40,000

  • 기타 모든 리전:

    • 테이블당 – 쓰기 용량 유닛 10,000

참고

프로비저닝된 처리량 제한은 DynamoDB 스트림이 활성화된 DynamoDB 테이블에도 적용됩니다. 자세한 내용은 처리량 기본 제한 단원을 참조하십시오.

DAX(DynamoDB Accelerator)

AWS 리전 가용성

DAX를 사용할 수 있는 AWS 리전 목록은 AWS General ReferenceDynamoDB Accelerator(DAX) 단원을 참조하십시오.

노드

DAX 클러스터는 정확히 1개의 기본 노드와 0-9개 사이의 읽기 전용 복제본 노드로 구성됩니다.

하나의 AWS 리전에서 AWS 계정당 총 노드 수는 50개를 초과할 수 없습니다.

파라미터 그룹

리전마다 최대 20개의 DAX 파라미터 그룹을 생성할 수 있습니다.

서브넷 그룹

리전마다 최대 50개의 DAX 서브넷 그룹을 생성할 수 있습니다.

하나의 서브넷 그룹 내에서는 최대 20개까지 서브넷을 정의할 수 있습니다.

API별 제한

CreateTable/UpdateTable/DeleteTable

일반적으로 최대 10개의 CreateTable, UpdateTableDeleteTable 요청을 동시에 실행할 수 있습니다(임의의 조합으로). 즉 CREATING, UPDATING 또는 DELETING 상태의 총 테이블 수가 50을 초과할 수 없습니다.

보조 인덱스es가 1개 이상인 테이블을 생성하는 경우가 유일한 예외입니다. 이러한 요청을 최대 25개까지 동시에 실행할 수 있습니다. 그러나 테이블 또는 인덱스 사양이 복잡한 경우 DynamoDB에서 일시적으로 동시 실행 작업 수를 줄일 수 있습니다.

BatchGetItem

단일 BatchGetItem 작업은 최대 100개의 항목까지 가져올 수 있습니다. 가져온 모든 항목의 전체 크기는 16 MB를 초과할 수 없습니다.

BatchWriteItem

단일 BatchWriteItem 작업은 최대 25개의 PutItem 또는 DeleteItem 요청을 포함할 수 있습니다. 쓰여진 모든 항목의 전체 크기는 16 MB를 초과할 수 없습니다.

DescribeLimits

DescribeLimits는 주기적으로만 호출해야 합니다. 1분에 두 번 이상 호출하는 경우 병목 오류가 발생할 수 있습니다.

Query

Query의 결과 집합은 호출당 1 MB로 제한됩니다. 쿼리 응답의 LastEvaluatedKey를 사용하여 더 많은 결과를 가져올 수 있습니다.

Scan

Scan의 결과 집합은 호출당 1 MB로 제한됩니다. 스캔 응답의 LastEvaluatedKey를 사용하여 더 많은 결과를 가져올 수 있습니다.

유휴 시 DynamoDB 암호화

AWS 소유 고객 마스터 키(CMK)에서 AWS 관리형 CMK로의 전환은 테이블 생성 시점을 기점으로 24시간마다 최대 4회까지 언제든 허용됩니다. 그리고 지난 6시간 내 변경 사항이 없는 경우 추가 변경이 허용됩니다. 이에 따라 하루에 변경할 수 있는 최대 횟수를 8회로 설정할 수 있습니다(처음 6시간 동안 4번 변경, 이후 6시간마다 1번 변경(당일 기준)).

암호화 키를 전환하여 AWS 소유 CMK를 필요한 횟수만큼 사용할 수 있습니다.

이러한 제한은 용량 증가를 요청하지 않은 경우에 적용됩니다. 서비스 제한 증가를 요청하려면 https://aws.amazon.com/support를 참조하십시오.