programing

CosmosDb에서 파티션 키에 /id를 사용하는 것의 의미

goodsources 2023. 5. 1. 21:03
반응형

CosmosDb에서 파티션 키에 /id를 사용하는 것의 의미

분당 1000개의 항목(고유 키)이 코스모스에 입력되는 시나리오에서 /id를 파티션 키로 사용해도 안전합니까?

특히 논리 파티션의 개념이 있습니다. https://learn.microsoft.com/en-us/azure/cosmos-db/partition-data 여기 그래픽은 논리 파티션이 실제 엔티티(예: "도시": "런던")임을 보여줍니다.만약 내가 8시간의 TTL과 분당 1000개의 엔트리를 가지고 있다면, 나는 코스모스가 관리해야 하는 48만개의 논리 파티션을 꼭 원하지 않습니다.

파티션 키의 값은 물리적 파티션의 수에 따라 해시되고 모듈화됩니다. 예를 들어, https://learn.microsoft.com/en-us/azure/cosmos-db/partitioning-overview#choose-partitionkey 은 "논리 파티션 관리" 섹션에서 이것이 사실임을 나타냅니다.또한 "파티션 키 선택" 섹션에서는 /id가 훌륭한 파티션 키임을 제안합니다. 10GB 제한, 처리량 제한, 핫스팟 없음, 넓은 범위의 값에 대해 걱정할 필요가 없으며 애플리케이션이 ID를 제외한 다른 항목에 대해 필터링할 필요가 없기 때문입니다.교차 파티션 쿼리는 이 사용 사례에서 문제가 되지 않습니다.

요약하자면, 수십만 개의 파티션 키 값(논리 파티션)으로 인한 메모리/CPU/etc 오버헤드에 대해 걱정해야 합니까?문서는 파티션 키의 값이 많을수록 좋다는 것을 나타내지만 너무 많은 값을 가질 수 있는지 여부는 말하지 않습니다.

저는 코스모스 DB 엔지니어링 팀에서 왔습니다.

Cosmos DB 컬렉션/컨테이너에 생성되는 논리 파티션 키의 수에 대해 걱정할 필요가 없습니다.파티션 키가 쓰기(논리 파티션별 키 상한이 10GB인 경우) 및 쿼리에 적합한 선택인 경우에만 적합합니다.

의미는 다음과 같습니다.

  1. 최상의 카디널리티
  2. 쉽고 빠른 문서 읽기

  3. 트랜잭션 범위가 파티션 키이므로 트랜잭션이 없습니다.

  4. 이외의 다른 항목에 의한 쿼리id교차 검색됩니다.

PS. 나는 아무것도 필요하지 않은 경우를 거의 상상할 수 없습니다.id 캐싱"/"입니다.문서 캐싱(TTL과 결합)을 제외합니다.

언급URL : https://stackoverflow.com/questions/54636852/implications-of-using-id-for-the-partition-key-in-cosmosdb

반응형