전역 테이블 관리 모범 사례 및 요구 사항
중요
이 설명서는 버전 2017.11.29(레거시)의 글로벌 테이블에 대한 것이므로 새 글로벌 테이블의 경우 사용하지 않아야 합니다. 가능하면 글로벌 테이블 버전 2019.11.21(현재)을 사용해야 합니다. 이는 2017.11.29(레거시)보다 유연성과 효율성이 뛰어나고 쓰기 용량을 적게 소비합니다.
사용 중인 버전을 확인하려면 사용 중인 DynamoDB 글로벌 테이블 버전 확인 섹션을 참조하세요. 기존 전역 테이블을 버전 2017.11.29(레거시)에서 버전 2019.11.21(현재)로 업데이트하는 경우 글로벌 테이블 업그레이드 섹션을 참조하세요.
Amazon DynamoDB 전역 테이블을 사용하여 AWS 리전 간에 테이블 데이터를 복제할 수 있습니다. 전역 테이블의 복제본 테이블과 보조 인덱스의 쓰기 용량을 동일하게 설정해 데이터를 적절히 복제하는 것이 중요합니다.
글로벌 테이블 버전
DynamoDB 글로벌 테이블에는 글로벌 테이블 버전 2019.11.21(현재)과 글로벌 테이블 버전 2017.11.29(레거시)의 두 가지 버전이 있습니다. 가능하면 글로벌 테이블 버전 2019.11.21(현재)을 사용해야 합니다. 이는 2017.11.29(레거시)보다 유연성과 효율성이 뛰어나고 쓰기 용량을 적게 소비합니다.
사용 중인 버전을 확인하려면 사용 중인 DynamoDB 글로벌 테이블 버전 확인 섹션을 참조하세요. 기존 글로벌 테이블을 버전 2017.11.29(레거시)에서 버전 2019.11.21(현재)로 업데이트하는 경우 글로벌 테이블 업그레이드 섹션을 참조하세요.
새 복제본 테이블 추가 요구 사항
새 복제본 테이블을 전역 테이블에 추가하려면 다음 조건이 모두 충족되어야 합니다.
-
테이블은 모든 다른 복제본과 동일한 파티션 키를 갖습니다.
-
테이블에는 지정된 동일한 쓰기 용량 관리 설정이 있어야 합니다.
-
테이블은 모든 다른 복제본과 동일한 이름을 갖습니다.
-
테이블에는 DynamoDB Streams가 활성화되어야 하며, 스트림에 항목의 새 이미지와 이전 이미지가 모두 포함되어야 합니다.
-
전역 테이블의 신규 또는 기존 복제본 테이블은 데이터를 포함할 수 없습니다.
글로벌 보조 인덱스가 지정되어 있으면, 다음 조건을 충족해야 합니다.
-
글로벌 보조 인덱스의 이름이 같아야 합니다.
-
전역 보조 인덱스의 파티션 키와 정렬 키(존재하는 경우)가 같아야 합니다.
중요
쓰기 용량 설정은 전역 테이블의 복제본 테이블과 해당 보조 인덱스에 대해 일관되게 설정해야 합니다. 전역 테이블에 대한 쓰기 용량 설정을 업데이트하려면 DynamoDB 콘솔이나 UpdateGlobalTableSettings
API 작업을 사용하는 것이 좋습니다. UpdateGlobalTableSettings
는 쓰기 용량 설정에 대한 변경 사항을 전역 테이블에 있는 모든 복제 테이블과 해당 보조 인덱스에 자동으로 적용합니다. UpdateTable
, RegisterScalableTarget
및 PutScalingPolicy
작업을 사용할 경우 각 복제본 테이블과 해당 보조 인덱스에 개별적으로 변경 사항을 적용해야 합니다. 자세한 내용은 Amazon DynamoDB API 참조의 UpdateGlobalTableSettings를 참조하세요.
프로비저닝된 쓰기 용량 설정을 관리하기 위해 Auto Scaling을 활성화하는 것이 좋습니다. 쓰기 용량 설정을 수동으로 관리하고 싶다면, 동일하게 복제한 WCU(쓰기 용량 단위)를 모든 복제본 테이블에 프로비저닝해야 합니다. 또한 여러 전역 테이블의 일치하는 보조 인덱스에 동일하게 복제한 WCU(쓰기 용량 단위)를 프로비저닝해야 합니다.
또한 적절한 AWS Identity and Access Management(IAM) 권한이 있어야 합니다. 자세한 내용은 전역 테이블에 IAM 사용 단원을 참조하십시오.
용량 관리 모범 사례 및 요구 사항
DynamoDB에서 복제 테이블에 대한 용량 설정을 관리할 때 다음을 고려하세요.
DynamoDB Auto Scaling 사용
프로비저닝된 모드를 사용하는 복제 테이블의 처리량 용량 설정을 관리하려면 DynamoDB Auto Scaling을 사용하는 것이 좋습니다. DynamoDB Auto Scaling은 실제 애플리케이션 워크로드를 기반으로 각 복제 테이블에 대한 읽기 용량 단위(RCU) 및 쓰기 용량 단위(WCU)를 자동으로 조정합니다. 자세한 내용은 DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리 단원을 참조하십시오.
AWS Management Console을 사용하여 복제본 테이블을 생성하는 경우, 각 복제본 테이블에 대해 RCU(읽기 용량 유닛) 및 WCU(쓰기 용량 유닛)를 관리하기 위한 기본 Auto Scaling 설정과 함께 Auto Scaling이 기본적으로 활성화됩니다.
DynamoDB 콘솔이나 UpdateGlobalTableSettings
호출을 사용하여 복제 테이블 또는 보조 인덱스에 대한 Auto Scaling 설정을 변경할 경우, 전역 테이블에 있는 모든 복제 테이블과 해당 보조 인덱스에 변경 사항이 자동으로 적용됩니다. 이러한 변경 사항이 기존 Auto Scaling 설정을 덮어씁니다. 따라서 전역 테이블에 있는 복제본 테이블과 보조 인덱스에 대해 할당된 쓰기 용량 설정이 일관되게 유지됩니다. UpdateTable
, RegisterScalableTarget
, PutScalingPolicy
호출 등을 사용할 경우 각 복제본 테이블과 해당 보조 인덱스에 개별적으로 변경 사항을 적용해야 합니다.
참고
Auto Scaling에서 애플리케이션의 용량 변경이 만족스럽지 않거나(예측할 수 없는 워크로드) 설정(최소값, 최대값 또는 사용률 임계값)을 구성하지 않으려면 온디맨드 모드를 사용하여 전역 테이블에 대한 용량을 관리할 수 있습니다. 자세한 내용은 온디맨드 모드 단원을 참조하십시오.
전역 테이블에 대한 온디맨드 모드를 활성화한 경우 복제된 쓰기 요청 단위(rWCUs) 소비량이 rWCUs 프로비저닝 방법과 일치하게 됩니다. 예를 들어 두 추가 리전에 복제되는 로컬 테이블에 10번 쓸 경우 쓰기 요청 단위를 60회 사용하게 됩니다(10 + 10 + 10 = 30, 30 x 2 = 60). 사용된 60개의 쓰기 요청 단위에는 글로벌 테이블 버전 2017.11.29(레거시)에서 aws:rep:deleting
, aws:rep:updatetime
및 aws:rep:updateregion
속성을 업데이트하는 데 사용된 추가 쓰기가 포함됩니다.
수동으로 용량 관리
DynamoDB Auto Scaling을 사용하지 않기로 결정하는 경우, 각 복제 테이블과 보조 인덱스에서 읽기 용량 설정과 쓰기 용량 설정을 수동으로 설정해야 합니다.
모든 복제본 테이블에 대해 각 리전에서 프로비저닝된 rWCU(복제된 쓰기 용량 단위)는 모든 리전에서 애플리케이션 쓰기에 필요한 총 rWCU 수에 2를 곱해야 합니다. 이는 로컬 리전에서 발생하는 애플리케이션 쓰기, 다른 리전에서 발생하는 복제된 애플리케이션 쓰기를 수용합니다. 예를 들어, 오하이오의 복제본 테이블의 초당 쓰기를 5건으로, 버지니아 북부 복제본 테이블의 초당 쓰기를 5건으로 설정하고 싶다면, 각 복제본 테이블에 20개 rWCU를 프로비저닝해야 합니다(5 + 5 = 10, 10 x 2 = 20).
전역 테이블에 대한 쓰기 용량 설정을 업데이트하려면 DynamoDB 콘솔이나 UpdateGlobalTableSettings
API 작업을 사용하는 것이 좋습니다. UpdateGlobalTableSettings
는 쓰기 용량 설정에 대한 변경 사항을 전역 테이블에 있는 모든 복제 테이블과 해당 보조 인덱스에 자동으로 적용합니다. UpdateTable
, RegisterScalableTarget
및 PutScalingPolicy
작업을 사용할 경우 각 복제본 테이블과 해당 보조 인덱스에 개별적으로 변경 사항을 적용해야 합니다. 자세한 내용은 Amazon DynamoDB API 참조를 확인하세요.
참고
DynamoDB의 전역 테이블에 대한 설정(UpdateGlobalTableSettings
)을 업데이트하려면 dynamodb:UpdateGlobalTable
, dynamodb:DescribeLimits
, application-autoscaling:DeleteScalingPolicy
및 application-autoscaling:DeregisterScalableTarget
권한이 있어야 합니다. 자세한 내용은 전역 테이블에 IAM 사용 단원을 참조하십시오.