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

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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

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

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

참고

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

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

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

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

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

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

사용할 인덱스 유형을 결정할 때 애플리케이션의 요구 사항을 고려해야 합니다. 다음 표에서는 글로벌 보조 인덱스와 로컬 보조 인덱스 간의 주요 차이점을 보여 줍니다.

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

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

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

  • 생성할 인덱스의 유형 (글로벌 보조 인덱스 또는 로컬 보조 인덱스) 입니다.

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

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

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

    • 로컬 보조 인덱스의 경우 파티션 키는 기본 테이블의 파티션 키와 동일해야 하며 정렬 키는 키가 아닌 기본 테이블 속성이어야 합니다.

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

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

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

    • 로컬 보조 인덱스의 경우 읽기 및 쓰기 용량 단위 설정을 지정할 필요가 없습니다. 로컬 보조 인덱스에 대한 읽기 및 쓰기 작업은 기본 테이블의 프로비저닝된 처리량 설정을 가져옵니다.

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

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

  • AWS미국 동부 GovCloud (미국 동부)

  • AWS미국 서부 GovCloud (미국 서부)

  • Europe (Stockholm)

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

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

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

모범 사례는 DynamoDB 에서 보조 인덱스 사용에 대한 모범 사례 단원을 참조하십시오.