항목 컬렉션 - DynamoDB에서 일대다 관계를 모델링하는 방법 - Amazon DynamoDB

항목 컬렉션 - DynamoDB에서 일대다 관계를 모델링하는 방법

DynamoDB에서 항목 컬렉션은 동일한 파티션 키 값을 공유하는 항목 그룹으로, 항목이 관련되어 있음을 의미합니다. 항목 컬렉션은 DynamoDB에서 일대다 관계를 모델링하는 기본 메커니즘입니다. 항목 컬렉션은 복합 기본 키를 사용하도록 구성된 테이블 또는 인덱스에만 존재할 수 있습니다.

참고

항목 컬렉션은 기본 테이블 또는 보조 인덱스에 존재할 수 있습니다. 항목 컬렉션이 인덱스와 상호 작용하는 방식에 대한 자세한 내용은 로컬 보조 인덱스의 항목 컬렉션 단원을 참조하세요.

세 명의 서로 다른 사용자와 게임 내 인벤토리를 보여 주는 다음 표를 살펴보십시오.

서로 다른 속성을 가진 세 가지 항목 컬렉션.

각 컬렉션의 일부 항목에 대해 정렬 키는 inventory::armor, inventory::weapon 또는 info와 같은 데이터를 그룹화하는 데 사용되는 정보로 구성된 연결입니다. 각 항목 컬렉션은 이러한 속성의 서로 다른 조합을 정렬 키로 가질 수 있습니다. 사용자 account1234에게는 inventory::weapons 항목이 있지만 사용자 account1387에게는 없습니다(아직 찾지 못했기 때문). 사용자 account1138은 정렬 키로 두 개의 항목만 사용하고(아직 인벤토리가 없기 때문) 다른 사용자는 세 개를 사용합니다.

DynamoDB를 사용하면 이러한 항목 컬렉션에서 항목을 선택적으로 검색하여 다음을 수행할 수 있습니다.

  • 특정 사용자의 모든 항목 검색

  • 특정 사용자로부터 하나의 항목만 검색

  • 특정 사용자에 속하는 특정 유형의 모든 항목 검색

항목 컬렉션으로 데이터를 구성하여 쿼리 속도 향상

이 예제에서 이 세 항목 컬렉션의 각 항목은 게임 및 플레이어의 액세스 패턴을 기반으로 선택한 플레이어와 데이터 모델을 나타냅니다. 게임에 필요한 데이터는 무엇입니까? 언제 필요합니까? 얼마나 자주 필요합니까? 이렇게 하는 데 비용이 얼마나 듭니까? 이러한 데이터 모델링 결정은 이러한 질문에 대한 답을 바탕으로 이루어졌습니다.

이 게임에서는 무기 인벤토리와 갑옷 인벤토리에 대해 서로 다른 페이지가 플레이어에게 표시됩니다. 플레이어가 인벤토리를 열면 무기가 먼저 표시됩니다. 이 페이지가 매우 빠르게 로드된 다음에 후속 인벤토리 페이지가 로드되도록 하려는 것입니다. 플레이어가 게임 내 항목을 점점 더 많이 획득함에 따라 이러한 각 항목 유형은 상당히 커질 수 있으므로 각 인벤토리 페이지를 데이터베이스의 플레이어 항목 컬렉션에 있는 자체 항목으로 만들었습니다.

다음 단원에서는 Query 작업을 통해 항목 컬렉션과 상호 작용하는 방법을 자세히 설명합니다.

주제