>

Azure Cosmos Document DB를 사용하고 있으며 한 번의 호출로 여러 문서를 가져오고 싶습니다.

ID가있는 경우 문서를 검색하는 가장 좋은 방법은 DocumentClient.ReadDocumentAsync(...) 를 사용하는 것입니다.

여러 문서를 가져 오는 비슷한 방법이 있는지 궁금합니다. 지금 나는 DocumentClient.CreateDocumentQuery<T>(...).Where(document => ids.Contains(document.id)) 를하고있다

이것이 선호되는 방법인지 다른 방법이 있는지 아는 사람이 있습니까?


  • 답변 # 1

    CreateDocumentQuery를 사용한 두 번째 접근 방식이 효과적입니다. 파티션 된 컬렉션을 사용하고 파티션 간 쿼리를 수행하고 고유 한 문서 당 파티션 키와 ID가있는 경우 둘 다 고유하더라도 ID 대신 파티션 키에 대한 성능 제한이 더 나은 것으로 나타났습니다. ID가 파티션 키인 경우 특별한 노력없이 작동합니다.

    많은 문서를 검색하는 경우 생성 된 SQL 표현식 (long IN 문)의 길이 제한을 피하기 위해 id 콜렉션을 일괄 처리로 나눠야합니다. 현재 프로젝트에서 배치 500을 사용하지만 ID 길이에 따라 다릅니다. 여러 개의 일괄 처리를 동시에 발행 할 수 있습니다.

  • 이전 java - 공유 목록의 다른 인덱스를 수정하는 다른 스레드
  • 다음 mysql - 범주가있는 테이블에서 최소 및 최대 선택