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

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

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

Amazon DynamoDB은 지정된 기본 키 값을 사용하여 테이블의 항목에 신속하게 액세스할 수 있습니다. 그러나 많은 애플리케이션에서는 주요 키가 아닌 속성을 가진 데이터에 효율적으로 액세스할 수 있다는 장점을 활용하기 위해 하나 이상의 보조(또는 대체) 키를 사용하기도 합니다. 이를 위해 테이블에서 하나 이상의 보조 인덱스를 생성하고 이 인덱스에 대해 Query 또는 Scan 요청을 발행할 수 있습니다.

보조 인덱스는 대체 키와 함께 테이블의 속성 하위 집합을 포함하여 Query 작업을 지원하는 데이터 구조입니다. 테이블에서 Query를 사용하는 것과 거의 같은 방식으로 Query를 사용하여 인덱스에서 데이터를 가져올 수 있습니다. 한 테이블에 여러 개의 보조 인덱스를 포함할 수 있어서 애플리케이션이 서로 다른 여러 쿼리 패턴에 액세스할 수 있습니다.

참고

또한 테이블을 Scan하는 것과 거의 동일한 방식으로 인덱스를 Scan할 수 있습니다.

모든 보조 인덱스은 정확하게 하나의 테이블과 연결되어 데이터를 얻습니다. 이를 인덱스의 기본 테이블이라고 합니다. 인덱스를 생성할 때 인덱스 파티션 및 정렬 키로 대체 키를 정의할 수 있습니다. 또한 기본 테이블에서 인덱스로 프로젝션하거나 복사하려는 속성을 정의합니다. DynamoDB는 이 속성을 기본 테이블의 기본 키 속성과 함께 인덱스로 복사합니다. 그러면 테이블을 쿼리하거나 스캔하는 것처럼 인덱스를 쿼리하거나 스캔할 수 있습니다.

DynamoDB에서 자동으로 모든 보조 인덱스를 유지 관리합니다. 기본 테이블의 항목을 추가, 수정 또는 삭제할 때 해당 테이블의 모든 인덱스도 업데이트되어 이 변경 사항이 반영됩니다.

DynamoDB는 두 종류의 보조 인덱스를 지원합니다.

  • Global secondary index파티션 키 및 정렬 키가 기본 테이블의 파티션 및 정렬 키와 다를 수 있는 인덱스. 모든 파티션에서 인덱스의 쿼리가 기본 테이블의 모든 데이터에 적용될 수 있으므로 글로벌 보조 인덱스는 "글로벌"하게 간주됩니다. 글로벌 보조 인덱스는 기본 테이블과 별개로 자체 파티션 공간에 저장되며 기본 테이블과는 별도로 확장됩니다.

  • 로컬 보조 인덱스기본 테이블과 파티션 키는 동일하지만 정렬 키는 다른 인덱스. local secondary index는 local secondary index의 모든 파티션이 동일한 파티션 키 값을 가진 기본 테이블 파티션으로 한정된다는 의미에서 "로컬"입니다.

사용할 인덱스 유형을 결정할 때 애플리케이션의 요구 사항을 고려해야 합니다. 다음은 글로벌 보조 인덱스와 local secondary index의 주된 차이를 나타내는 표입니다.

특성 글로벌 보조 인덱스 로컬 보조 인덱스
키 스키마 글로벌 보조 인덱스의 기본 키는 단순 기본 키(파티션 키)이거나 복합 기본 키(파티션 키 및 정렬 키)일 수 있습니다. local secondary index의 기본 키는 반드시 복합 기본 키(파티션 키 및 정렬 키)여야 합니다.
키 속성 인덱스 파티션 키 및 정렬 키(있을 경우)는 문자열, 숫자 또는 이진수 형식의 기본 테이블 속성일 수 있습니다. 인덱스의 파티션 키는 기본 테이블의 파티션 키와 동일한 속성입니다. 정렬 키는 문자열, 숫자 또는 이진수 형식의 기본 테이블 속성일 수 있습니다.
파티션 키 값당 크기 제한 글로벌 보조 인덱스es에는 크기 제한이 없습니다. 파티션 키 값마다 인덱싱된 모든 항목의 전체 크기가 10GB 이하여야 합니다.
온라인 인덱스 작업 테이블을 생성할 때 동시에 Global secondary index를 생성할 수 있습니다. 기존 테이블에 새 글로벌 보조 인덱스를 추가하거나 기존 글로벌 보조 인덱스를 삭제할 수도 있습니다. 자세한 내용은 글로벌 보조 인덱스 관리 단원을 참조하십시오. 테이블을 생성할 때 동시에 로컬 보조 인덱스가 생성됩니다. 기존 테이블에 local secondary index를 추가할 수도 없고 기존 local secondary index를 삭제할 수도 없습니다.
쿼리 및 파티션 글로벌 보조 인덱스를 사용하면 모든 파티션에서 전체 테이블을 쿼리할 수 있습니다. local secondary index를 사용하면 쿼리에서 파티션 키 값으로 지정한 대로 단일 파티션을 쿼리할 수 있습니다.
읽기 일관성 글로벌 보조 인덱스es에 대한 쿼리는 최종 일관성만 지원합니다. local secondary index를 쿼리할 때 최종 일관성 또는 강력한 일관성을 선택할 수 있습니다.
프로비저닝된 처리량 소비 모든 글로벌 보조 인덱스에는 읽기 및 쓰기 활동에 대한 자체 프로비저닝 처리량 설정이 있습니다. 글로벌 보조 인덱스의 쿼리 및 스캔은 기본 테이블이 아닌 인덱스의 용량 단위를 소비합니다. 테이블 쓰기로 인해 글로벌 보조 인덱스 업데이트의 경우도 마찬가지입니다. local secondary index의 쿼리 또는 스캔은 기본 테이블의 읽기 용량 단위를 소비합니다. 테이블에 쓸 때 해당 local secondary indexes도 업데이트됩니다. 이 업데이트는 기본 테이블의 쓰기 용량 단위를 소비합니다.
프로젝션 속성 글로벌 보조 인덱스 쿼리 또는 스캔을 사용하면 인덱스로 프로젝션되는 속성만 요쳥할 수 있습니다. DynamoDB는 테이블에서 속성을 가져오지 않습니다. local secondary index를 쿼리하거나 스캔할 경우 인덱스로 프로젝션되지 않는 속성을 요청할 수 있습니다. DynamoDB는 테이블에서 해당 속성을 자동으로 가져옵니다.

보조 인덱스es가 있는 테이블을 2개 이상 생성하려면 순차적으로 해야 합니다. 예를 들어 첫 번째 테이블을 만들고 테이블이 ACTIVE가 될 때까지 기다리고, 다음 테이블을 만들고 이 테이블이 ACTIVE가 될 때까지 기다리는 방식으로 진행됩니다. 보조 인덱스가 있는 테이블을 2개 이상 동시에 생성하면 DynamoDB에서 LimitExceededException을 반환합니다.

각 보조 인덱스에 대해 다음을 지정해야 합니다.

  • 생성할 인덱스 유형 – 글로벌 보조 인덱스 또는 local secondary index

  • 인덱스의 이름. 인덱스의 이름 지정 규칙은 Amazon DynamoDB의 서비스, 계정 및 테이블 할당량에 나온 대로 테이블의 경우와 동일합니다. 이름은 연관된 기본 테이블에 대해 고유해야 하지만 다른 기본 테이블과 연관된 인덱스에 동일한 이름을 사용할 수 있습니다.

  • 인덱스의 키 스키마. 인덱스 키 스키마의 모든 속성은 String, Number 또는 Binary 형식의 최상위 속성이어야 합니다. 문서, 집합 등 다른 데이터 형식은 허용되지 않습니다. 키 스키마의 다른 요구 사항은 인덱스 유형에 따라 결정됩니다.

    • 글로벌 보조 인덱스의 경우 파티션 키는 기본 테이블의 스칼라 속성일 수 있습니다. 정렬 키는 선택적이며 역시 기본 테이블의 스칼라 속성일 수 있습니다.

    • local secondary index의 경우 파티션 키는 기본 테이블의 파티션 키와 동일해야 하며 정렬 키는 키가 아닌 기본 테이블 속성이어야 합니다.

  • 기본 테이블에서 인덱스로 프로젝션할 추가 속성(있는 경우). 테이블 키 속성 외에 이 속성도 모든 인덱스에 자동으로 프로젝션됩니다. 스칼라, 문서, 집합을 포함하여 모든 데이터 형식의 속성을 프로젝션할 수 있습니다.

  • 필요할 경우 인덱스의 프로비저닝 처리량 설정:

    • 글로벌 보조 인덱스의 경우 읽기 및 쓰기 용량 단위 설정을 지정해야 합니다. 이 할당 처리량 설정은 기본 테이블의 설정과 관련이 없습니다.

    • local secondary index의 경우 읽기 및 쓰기 용량 단위 설정을 지정할 필요가 없습니다. local secondary index의 읽기 및 쓰기 작업은 기본 테이블의 프로비저닝 처리량 설정을 가져옵니다.

쿼리 유연성을 극대화하도록 테이블당 최대 20개의 글로벌 보조 인덱스(기본 할당량)와 최대 5개의 로컬 보조 인덱스를 생성할 수 있습니다.

다음 AWS 리전의 경우 테이블당 글로벌 보조 인덱스의 할당량은 5입니다.

  • AWS GovCloud(미국 동부)

  • AWS GovCloud(미국 서부)

  • 유럽(스톡홀름)

테이블의 보조 인덱스에 대한 상세 목록을 가져오려면 DescribeTable 작업을 사용하십시오. DescribeTable은 테이블에 있는 모든 보조 인덱스의 이름, 스토리지 크기 및 항목 수를 반환합니다. 이 값은 실시간으로 업데이트되지 않지만 거의 6시간마다 새로 고쳐집니다.

Query 또는 Scan 작업을 사용하여 보조 인덱스의 데이터에 액세스할 수 있습니다. 사용하려는 인덱스의 이름과 기본 테이블의 이름, 결과에 반환할 속성, 적용할 조건 표현식 또는 필터를 지정해야 합니다. DynamoDB는 결과를 오름차순 또는 내림차순으로 반환할 수 있습니다.

테이블을 삭제할 때 테이블과 연관된 모든 인덱스도 삭제됩니다.

모범 사례는 Best Practices for Using Secondary Indexes in DynamoDB 단원을 참조하십시오.