Amazon DynamoDB 테이블에 대한 글로벌 보조 인덱스를 빠르게 생성하려면 어떻게 해야 하나요?

2분 분량
0

Amazon DynamoDB 테이블에 대해 글로벌 보조 인덱스(GSI)를 생성하려고 하는데 시간이 오래 걸립니다.

간략한 설명

기존 테이블에 새 글로벌 보조 인덱스를 추가하면 IndexStatus가 CREATING으로 설정되고 Backfilling은 true로 설정됩니다. 채우기(Backfilling)는 테이블에서 항목을 읽고 인덱스에 추가할 수 있는지 여부를 결정합니다. 인덱스를 백필하면 DynamoDB는 내부 시스템 용량을 사용하여 테이블에서 항목을 읽습니다. 이는 인덱스 생성의 영향을 최소화하고 테이블의 읽기 용량이 부족하지 않도록 합니다.

글로벌 보조 인덱스 구축에 필요한 시간은 다음과 같은 여러 가지 요소에 따라 달라집니다.

  • 기본 테이블 크기
  • 테이블에서 인덱스에 포함 가능한 항목 수
  • 인덱스로 투사되는 속성 수
  • 인덱스에 프로비저닝된 쓰기 용량
  • 인덱스 생성 시 기본 테이블에서의 쓰기 작업
  • 인덱스 파티션 간의 데이터 분산

생성 프로세스의 속도를 향상하려면 인덱스에서 쓰기 용량 단위(WCU)의 수를 늘립니다.

글로벌 보조 인덱스는 기본 테이블에서 읽기 또는 쓰기 용량 모드를 이어받습니다. 테이블이 온디맨드 모드인 경우 DynamoDB는 온디맨드 모드에서도 인덱스를 생성합니다. 이 경우 온디맨드 DynamoDB 테이블은 수신 트래픽에 따라 자체적으로 확장되므로 인덱스의 용량을 늘릴 수 없습니다.

해결 방법

OnlineIndexPercentageProgress Amazon CloudWatch 지표를 사용하여 인덱스 생성 프로세스를 모니터링합니다.

1.    DynamoDB 콘솔을 엽니다.

2.    탐색 창에서 Tables(테이블)을 선택한 다음, 목록에서 테이블을 선택합니다.

3.    Metrics(지표) 탭을 선택합니다.

4.    View all CloudWatch metrics(모든 CloudWatch 지표 보기)를 선택합니다.

5.    검색 상자에 OnlineIndexPercentageProgress를 입력합니다.
참고: 검색에서 결과를 반환하지 않으면 지표가 채워질 때까지 1분 정도 기다립니다. 그리고 다시 시도합니다.

6.    진행 상황을 보려는 인덱스 이름을 선택합니다.

필요한 추가 WCU 수를 결정합니다. 이렇게 하려면 테이블 크기를 원하는 백필 시간으로 킬로바이트 단위로 나눕니다. 이 계산의 다음 예를 참조하세요.

예시 1

1GiB(1,074,000KB) 테이블이 있다고 가정합니다. 채우기 프로세스를 10분(600초) 내에 완료하려고 합니다. 따라서 다음과 같이 WCU 수를 계산하세요.

1,074,000/600 = 1,790 WCU

예시 2

인덱스 크기를 2GB로 만들고 1시간 내에 인덱스 생성을 완료한다고 가정합니다. 따라서 다음과 같이 WCU 수를 계산하세요.

(2GB*1024*1024)KB/60분/60초 = ~583 WCU 필요한 WCU 수는 인덱스 크기 및 예상 시간에 따라 다릅니다.

참고: 이는 추정치에 불과합니다. 생성 시간은 키 배포, 항목 크기, 인덱스에 투영되는 속성 수 등 여러 요인에 따라 달라집니다.

추가 쓰기 용량을 프로비저닝하려면 다음을 수행합니다.

1.    DynamoDB 콘솔을 엽니다.

2.    탐색 창에서 Tables(테이블)을 선택한 다음, 목록에서 테이블을 선택합니다.

3.    Capacity(용량) 탭을 선택합니다.

4.    인덱스의 쓰기 용량을 늘린 다음, Save(저장)을 선택합니다.

5.    약 1분 후 OnlineIndexPercentageProgress 지표의 생성 속도가 개선되었는지 확인합니다.

참고: 추가 읽기 용량을 프로비저닝할 필요는 없습니다.


관련 정보

보조 인덱스를 사용하여 데이터 액세스 향상

기존 테이블에 글로벌 보조 인덱스 추가

글로벌 보조 인덱스 관리

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음