DynamoDB 글로벌 테이블 버전 - Amazon DynamoDB

DynamoDB 글로벌 테이블 버전

DynamoDB 글로벌 테이블에는 글로벌 테이블 버전 2019.11.21(현재)과 글로벌 테이블 버전 2017.11.29(레거시)의 두 가지 버전이 있습니다. 글로벌 테이블 버전 2019.11.21(현재)을 사용하는 것이 좋습니다. 버전 2017.11.29(레거시)에 비해 사용이 더 쉽고, 더 많은 리전에서 지원되며, 대부분의 워크로드에 대해 비용이 저렴하기 때문입니다.

글로벌 테이블 버전 확인

AWS CLI를 사용하여 버전 확인

버전 2019.11.21(현재) 글로벌 테이블 복제본 식별

테이블이 글로벌 테이블 버전 2019.11.21(현재) 복제본인지 확인하려면 테이블에 대한 describe-table 명령을 간접적으로 호출합니다. 출력에 값이 ‘2019.11.21’인 GlobalTableVersion 속성이 포함된 경우 테이블은 버전 2019.11.21(현재) 글로벌 테이블 복제본입니다.

describe-table에 대한 CLI 명령의 예:

aws dynamodb describe-table \ --table-name users \ --region us-east-2

(약식) 출력에는 값이 ‘2019.11.21’인 GlobalTableVersion 속성이 포함되어 있으므로 이 테이블은 버전 2019.11.21(현재) 글로벌 테이블 복제본입니다.

{ "Table": { "AttributeDefinitions": [ { "AttributeName": "id", "AttributeType": "S" }, { "AttributeName": "name", "AttributeType": "S" } ], "TableName": "users", ... "GlobalTableVersion": "2019.11.21", "Replicas": [ { "RegionName": "us-west-2", "ReplicaStatus": "ACTIVE", } ], ... } }

버전 2017.11.29(레거시) 글로벌 테이블 복제본 식별

글로벌 테이블 버전 2017.11.29(레거시)는 글로벌 테이블 관리를 위한 전용 명령 세트를 사용합니다. 테이블이 글로벌 테이블 버전 2017.11.29(레거시) 복제본인지 확인하려면 테이블에 대한 describe-global-table 명령을 간접적으로 호출합니다. 성공적인 응답을 받으면 테이블은 버전 2017.11.29(레거시) 글로벌 테이블 복제본입니다. describe-global-table 명령이 GlobalTableNotFoundException 오류를 반환하면 테이블은 버전 2017.11.29(레거시) 복제본이 아닙니다.

describe-global-table에 대한 CLI 명령의 예:

aws dynamodb describe-global-table \ --table-name users \ --region us-east-2

명령이 성공적인 응답을 반환하므로 이 테이블은 버전 2017.11.29(레거시) 글로벌 테이블 복제본입니다.

{ "GlobalTableDescription": { "ReplicationGroup": [ { "RegionName": "us-west-2" }, { "RegionName": "us-east-2" } ], "GlobalTableArn": "arn:aws:dynamodb::123456789012:global-table/users", "CreationDateTime": "2025-06-10T13:55:53.630000-04:00", "GlobalTableStatus": "ACTIVE", "GlobalTableName": "users" } }

DynamoDB 콘솔을 사용하여 버전 확인

글로벌 테이블 복제본의 버전을 식별하려면 다음을 수행합니다.

  1. https://console.aws.amazon.com/dynamodb/home에서 DynamoDB 콘솔을 엽니다.

  2. 콘솔 왼쪽의 탐색 창에서 테이블을 선택합니다.

  3. 글로벌 테이블 버전을 식별할 테이블을 선택합니다.

  4. 전역 테이블 탭을 선택합니다.

    요약 섹션에는 사용 중인 글로벌 테이블의 버전이 표시됩니다.

레거시 버전과 현재 버전 간의 동작 차이

다음 목록은 글로벌 테이블의 레거시 버전과 현재 버전 간의 동작 차이를 설명합니다.

  • 버전 2019.11.21(현재)은 버전 2017.11.29(레거시)에 비해 몇몇 DynamoDB 작업에 대한 쓰기 용량을 적게 소비합니다. 따라서 대부분의 고객에게 더 비용 효과적입니다. 이러한 DynamoDB 작업의 차이점은 다음과 같습니다.

    • 한 리전에 있는 1KB 항목에 대해 PutItem을 간접 호출하고 다른 리전에 복제할 때 2017.11.29(레거시)의 경우 리전당 2개의 rWRU가 필요하지만 2019.11.21(현재)의 경우 1개만 필요합니다.

    • 1KB 항목에 대해 UpdateItem을 간접 호출할 때 2017.11.29(레거시)의 경우 소스 리전당 2개의 rWRU와 대상 리전당 1개의 rWRU가 필요하지만 2019.11.21(현재)의 경우 소스 및 대상 리전에 모두 1개의 rWRU만 필요합니다.

    • 1KB 항목에 대해 DeleteItem을 간접 호출할 때 2017.11.29(레거시)의 경우 소스 리전당 1개의 rWRU와 대상 리전당 2개의 rWRU가 필요하지만 2019.11.21(현재)의 경우 소스 또는 대상 리전에 1개의 rWRU만 필요합니다.

    다음 표에서는 2개 리전에 있는 1KB 항목에 대한 2017.11.29(레거시) 및 2019.11.21(현재) 테이블의 rWRU 사용량을 보여줍니다.

    Operation 2017.11.29(레거시) 2019.11.21(현재) 절감
    PutItem rWRU 4개 rWRU 2개 50%
    UpdateItem rWRU 3개 rWRU 2개 33%
    DeleteItem rWRU 3개 rWRU 2개 33%
  • 버전 2017.11.29(레거시)는 11개 AWS 리전에서만 사용할 수 있습니다. 그러나 버전 2019.11.21(현재)은 모든 AWS 리전에서 사용할 수 있습니다.

  • 먼저 빈 리전 테이블 세트를 만든 다음 CreateGlobalTable API 간접 호출로 글로벌 테이블을 구성하여 버전 2017.11.29(레거시) 글로벌 테이블을 생성합니다. UpdateTable API 간접 호출로 기존 리전 테이블에 복제본을 추가하여 버전 2019.11.21(현재) 글로벌 테이블을 생성합니다.

  • 버전 2017.11.29(레거시)에서는 생성 중일 때를 포함하여 새 리전에 복제본을 추가하기 전에 테이블의 모든 복제본을 비워야 합니다. 버전 2019.11.21(현재)에서는 이미 데이터가 포함된 테이블의 리전에 복제본을 추가 및 제거할 수 있습니다.

  • 버전 2017.11.29(레거시)는 복제본 관리를 위해 다음과 같은 컨트롤 플레인 전용 API 세트를 사용합니다.

    버전 2019.11.21(현재)은 DescribeTableUpdateTable API를 사용하여 복제본을 관리합니다.

  • 버전 2017.11.29(레거시)는 각 쓰기에 대해 2개의 DynamoDB Streams 레코드를 게시합니다. 버전 2019.11.21(현재)은 각 쓰기에 대해 1개의 DynamoDB Streams 레코드를 게시합니다.

  • 버전 2017.11.29(레거시)는 aws:rep:deleting, aws:rep:updateregionaws:rep:updatetime 속성을 채우고 업데이트합니다. 버전 2019.11.21(현재)은 이러한 속성을 채우거나 업데이트하지 않습니다.

  • 버전 2017.11.29(레거시)는 복제본 간에 DynamoDB에서 TTL(Time To Live) 사용 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 TTL 설정을 동기화합니다.

  • 버전 2017.11.29(레거시)는 TTL 삭제를 다른 복제본에 복제하지 않습니다. 버전 2019.11.21(현재)은 TTL 삭제를 모든 복제본에 복제합니다.

  • 버전 2017.11.29(레거시)는 복제본 간에 Auto Scaling 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 Auto Scaling 설정을 동기화합니다.

  • 버전 2017.11.29(레거시)는 복제본 간에 글로벌 보조 인덱스(GSI) 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 GSI 설정을 동기화합니다.

  • 버전 2017.11.29(레거시)는 복제본 간에 저장 시 암호화 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 저장 시 암호화 설정을 동기화합니다.

  • 버전 2017.11.29(레거시)는 PendingReplicationCount 지표를 게시합니다. 버전 2019.11.21(현재)은 이 지표를 게시하지 않습니다.

현재 버전으로 업그레이드

글로벌 테이블 업그레이드에 필요한 권한

버전 2019.11.21(현재)로 업그레이드하려면 복제본이 있는 모든 리전에 dynamodb:UpdateGlobalTableversion 권한이 있어야 합니다. DynamoDB 콘솔에 액세스하고 테이블을 보는 데 필요한 권한에 더해 이러한 권한이 필요합니다.

다음 IAM 정책은 글로벌 테이블을 버전 2019.11.21(현재)로 업그레이드할 수 있는 권한을 부여합니다.

{ "version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:UpdateGlobalTableversion", "Resource": "*" } ] }

다음 IAM 정책은 두 개의 리전에 복제본이 있는 Music 글로벌 테이블만 버전 2019.11.21(현재)로 업그레이드할 수 있는 권한을 부여합니다.

{ "version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:UpdateGlobalTableversion", "Resource": [ "arn:aws:dynamodb::123456789012:global-table/Music", "arn:aws:dynamodb:ap-southeast-1:123456789012:table/Music", "arn:aws:dynamodb:us-east-2:123456789012:table/Music" ] } ] }

업그레이드 중 기대할 수 있는 사항

  • 업그레이드하는 동안 모든 글로벌 테이블 복제본은 읽기 및 쓰기 트래픽을 계속 처리합니다.

  • 업그레이드 프로세스에는 테이블 크기와 복제본 수에 따라 몇 분에서 몇 시간이 소요됩니다.

  • 업그레이드 프로세스 중에 TableStatus의 값은 ACTIVE에서 UPDATING으로 변경됩니다. DescribeTable API를 간접적으로 호출하거나 테이블 보기를 사용하여 테이블 상태를 볼 수 있습니다.

  • 테이블이 업그레이드되는 동안에는 Auto Scaling이 글로벌 테이블의 프로비저닝된 용량 설정을 조정하지 않습니다. 업그레이드 중에는 테이블을 온디맨드 용량 모드로 설정하는 것이 좋습니다.

  • 업데이트 중에 프로비저닝된 용량 모드를 Auto Scaling과 함께 사용하도록 선택한 경우 업그레이드 기간 동안 예상되는 트래픽 증가를 수용하여 업그레이드 중 제한을 피하기 위해 정책의 최소 읽기 및 쓰기 처리량을 늘려야 합니다.

  • 업그레이드 프로세스 중에 ReplicationLatency 지표가 지연 시간 급증을 일시적으로 보고하거나 지표 데이터 보고를 중지할 수 있습니다. 자세한 내용은 ReplicationLatency를 참조하세요.

  • 업그레이드 프로세스가 완료되면 테이블 상태가 ACTIVE로 변경됩니다.

업그레이드 전, 업그레이드 중, 업그레이드 후의 DynamoDB Streams 동작

Operation 복제본 리전 업그레이드 전 동작 업그레이드 중 동작 업그레이드 후 동작

넣기 또는 업데이트

소스

타임스탬프 채우기가 UpdateItem을 사용하여 발생합니다. 타임스탬프 채우기가 PutItem을 사용하여 발생합니다. 고객이 볼 수 있는 타임스탬프가 생성되지 않습니다.
두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 고객이 작성한 속성이 포함됩니다. 두 번째 레코드에 aws:rep:* 속성이 포함됩니다. 두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 고객이 작성한 속성이 포함됩니다. 두 번째 레코드에 aws:rep:* 속성이 포함됩니다. 고객이 작성한 속성을 포함하는 단일 Streams 레코드가 생성됩니다.
각 고객 쓰기 작업에 rWCU 2개가 사용됩니다. 각 고객 쓰기 작업에 rWCU 2개가 사용됩니다. 각 고객 쓰기 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

대상

복제가 PutItem을 사용하여 수행됩니다. 복제가 PutItem을 사용하여 수행됩니다. 복제가 PutItem을 사용하여 수행됩니다.
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성만 포함하고 복제 속성은 포함하지 않는 단일 Streams 레코드가 생성됩니다.
대상 리전에 항목이 있는 경우 rWCU 1개가 사용됩니다. 대상 리전에 항목이 없는 경우 rWCU 2개가 사용됩니다. 대상 리전에 항목이 있는 경우 rWCU 1개가 사용됩니다. 대상 리전에 항목이 없는 경우 rWCU 2개가 사용됩니다. 각 고객 쓰기 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

삭제

소스

DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다.
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다.
각 고객 삭제 작업에 rWCU 1개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

대상

2단계 삭제가 이루어집니다.

  • 1단계에서 UpdateItem이 삭제 플래그를 설정합니다.

  • 2단계에서 DeleteItem이 항목을 삭제합니다.

DeleteItem을 사용하여 항목을 삭제합니다. DeleteItem을 사용하여 항목을 삭제합니다.
두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 aws:rep:deleting 필드 변경 사항이 포함됩니다. 두 번째 레코드에 고객이 작성한 속성과 aws:rep:* 속성이 포함됩니다. 고객이 작성한 속성을 모두 포함하는 단일 Stream 레코드가 생성됩니다. 고객이 작성한 속성을 모두 포함하는 단일 Stream 레코드가 생성됩니다.
각 고객 삭제 작업에 rWCU 2개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

버전 2019.11.21(현재)로 업그레이드

AWS Management Console을 사용하여 DynamoDB 글로벌 테이블의 버전을 업그레이드하려면 다음 단계를 수행하세요.

글로벌 테이블을 버전 2019.11.21(현재)로 업그레이드하는 방법
  1. https://console.aws.amazon.com/dynamodb/home에서 DynamoDB 콘솔을 엽니다.

  2. 콘솔 왼쪽의 탐색 창에서 테이블을 선택한 다음 버전 2019.11.21(현재)로 업그레이드할 글로벌 테이블을 선택합니다.

  3. 전역 테이블 탭을 선택합니다.

  4. Update version(버전 업데이트)을 선택합니다.

    버전 업데이트 버튼을 보여주는 콘솔 스크린샷
  5. 새 요구 사항을 읽고 동의한 다음 버전 업데이트(Update version)를 선택합니다.

  6. 업그레이드 프로세스가 완료되면 콘솔에 나타나는 글로벌 테이블 버전이 2019.11.21로 변경됩니다.