파티션 및 데이터 배포 - Amazon DynamoDB

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

파티션 및 데이터 배포

Amazon DynamoDB는 데이터를 파티션에 저장합니다. 파티션은 솔리드 스테이트 드라이브 (SSD) 로 뒷받침되고 지역 내 여러 가용 영역에 자동으로 복제되는 테이블에 대한 스토리지 할당입니다. AWS 파티션 관리는 DynamoDB에서 전적으로 처리하므로 사용자가 파티션을 직접 관리할 필요가 없습니다.

테이블을 생성할 때 테이블 초기 상태는 CREATING입니다. 이 단계 동안, DynamoDB는 테이블에 충분한 파티션을 할당하여 프로비저닝된 처리량 요구 사항을 만족할 수 있도록 합니다. 테이블 상태가 ACTIVE로 전환되면 테이블 데이터를 쓰거나 읽을 수 있습니다.

DynamoDB는 다음과 같은 상황에서 테이블에 추가 파티션을 할당합니다.

  • 기존 파티션이 지원할 수 있는 한도를 초과하여 테이블의 할당된 처리량 설정을 늘리는 경우.

  • 기존 파티션 용량이 다 차서 추가 스토리지 공간이 필요한 경우.

파티션 관리는 백그라운드에서 자동으로 이루어지므로 애플리케이션에는 표시되지 않습니다. 테이블은 사용 가능한 처리량을 유지하며 프로비저닝된 처리량 요구 사항을 완전히 지원합니다.

자세한 내용은 파티션 키 설계를 참조하세요.

DynamoDB의 글로벌 보조 인덱스도 파티션으로 구성됩니다. 글로벌 보조 인덱스의 데이터는 기본 테이블의 데이터와 별도로 저장되지만 인덱스 파티션은 테이블 파티션과 동일한 방식으로 동작합니다.

데이터 배포: 파티션 키

테이블이 단순 기본 키를 가질 경우(파티션 키만 있음) DynamoDB가 파티션 키 값을 기준으로 각 항목을 저장하고 검색합니다.

테이블에 항목을 쓰기 위해 DynamoDB는 내부 해시 함수에 대한 입력으로 파티션 키 값을 사용합니다. 해시 함수 출력 값은 항목을 저장할 파티션을 결정합니다.

테이블에서 항목을 읽으려면 항목의 파티션 키 값을 지정해야 합니다. DynamoDB는 이 값을 해당 해시 함수의 입력으로 사용하여 항목을 찾을 수 있는 파티션을 결정합니다.

다음 다이어그램은 여러 파티션에 걸쳐 데이터가 저장된 Pets라는 테이블을 보여줍니다. 테이블의 기본 키는 입니다 AnimalType(이 키 속성만 표시됨). DynamoDB는 해시 함수를 사용하여 새 항목을 저장할 위치를 결정합니다. 이 경우 문자열 Dog의 해시 값이 기준으로 사용됩니다. 항목은 정렬 순서대로 저장되지 않습니다. 각 항목의 위치는 파티션 키의 해시 값으로 결정됩니다.

참고

DynamoDB는 파티션 수와 상관없이 항목을 테이블의 파티션에 균일하게 분배하는 데 최적화되어 있습니다. 테이블 항목 수에 비해 많은 수의 고유 값을 가질 수 있는 파티션 키를 선택할 것을 권장합니다.

데이터 배포: 파티션 키 및 정렬 키

테이블에 복합 기본 키(파티션 키 및 정렬 키)가 있는 경우 데이터 배포: 파티션 키에 설명된 동일한 방식으로 DynamoDB에서 파티션 키의 해시 값을 계산합니다. 하지만 파티션 키 값이 같은 항목을 서로 가깝게 유지하고 정렬 키 속성 값을 기준으로 정렬하는 경향이 있습니다. 파티션 키 값이 같은 항목 집합을 항목 컬렉션이라고 합니다. 항목 컬렉션은 컬렉션 내 항목 범위를 효율적으로 검색할 수 있도록 최적화되어 있습니다. 테이블에 로컬 보조 인덱스가 없는 경우 DynamoDB는 데이터를 저장하고 읽기 및 쓰기 처리량을 제공하는 데 필요한 만큼의 파티션으로 항목 컬렉션을 자동으로 분할합니다.

테이블에 항목을 기록하기 위해 DynamoDB는 파티션 키의 해시 값을 계산하여 항목을 저장할 파티션을 결정합니다. 해당 파티션에서는 여러 항목이 동일한 파티션 키 값을 가질 수 있습니다. 따라서 DynamoDB에서 동일한 파티션 키의 다른 항목 간에 정렬 키에 의해 오름차순으로 항목을 저장합니다.

테이블에서 항목을 읽으려면 항목의 파티션 키 값과 정렬 키 값을 지정해야 합니다. DynamoDB는 파티션 키의 해시 값을 계산하여 항목을 찾을 수 있는 파티션을 결정합니다.

원하는 항목이 동일한 파티션 키 값을 가질 경우 단일 작업(Query)으로 테이블에서 여러 항목을 읽을 수 있습니다. DynamoDB는 해당 파티션 키 값을 갖는 모든 항목을 반환합니다. 특정 값 범위의 항목만 반환되도록 정렬 키에 조건을 적용할 수 있습니다(선택 사항).

Pets 테이블에 AnimalType(파티션 키) 와 Name (정렬 키) 으로 구성된 복합 기본 키가 있다고 가정해 보겠습니다. 다음 다이어그램에서는 DynamoDB가 파티션 키 값 Dog와 정렬 키 값 Fido를 사용하여 항목을 씁니다.

Pets 테이블에서 동일한 항목을 읽기 위해 DynamoDB는 Dog의 해시 값을 계산하여 이들 항목이 저장된 파티션을 알아냅니다. 그런 다음 DynamoDB는 Fido를 찾을 때까지 정렬 키 속성 값을 스캔합니다.

Of Dog를 사용하여 모든 항목을 읽으려면 정렬 키 조건을 지정하지 않고 Query 작업을 실행하면 됩니다. AnimalType 기본적으로 항목은 정렬 순서대로, 즉 정렬 키 기준 오름차순으로 반환됩니다. 선택 사항으로 내림차순을 요청할 수 있습니다.

일부 Dog 항목만 쿼리하려면 정렬 키에 조건을 적용할 수 있습니다(예: NameA~K 범위 내 문자로 시작하는 Dog 항목만).

참고

DynamoDB 테이블에서 파티션 키 값당 고유 정렬 키 값의 수는 상한이 없습니다. Pets 테이블에서 수십억 개의 Dog 항목을 저장해야 하는 경우 DynamoDB는 충분한 스토리지를 할당하여 이 요구 사항을 자동으로 처리합니다.