2016-09-20 2 views
1

documentDB 분할 된 컬렉션에서 저장 프로 시저를 실행할 수 있으려면 partitionKey 값을 알아야합니다. 그러나 count 저장 프로 시저와 같은 작업을 수행하려면 모든 파티션에서 작동하거나 각 파티션에 대해 실행해야합니다.DocumentDB : 사용 된 파티션 키 나열

즉, 저장 프로 시저를 실행하여 파티션 키 목록 (AFAIK)을 생성 할 수 없음을 의미합니다. 쿼리를 실행하여 모든 문서에서 partition 키의 모든 값을 반환 한 다음 클라이언트 측에서이를 중복 제거하는 것은 매우 지저분하고 무차별하고 값 비싼 작업입니다. 당신은 SELECT DISTINCT 수 없습니다.

SELECT partitionkey FROM docs 접근 방식을 사용하지 않고 어떻게 파티션 키 목록을 만들 수 있습니까?

답변

1

내가 분할 된 컬렉션 정확한 수를 얻을 알고있는 가장 효율적인 방법은이 같은 쿼리를 사용하는 것입니다

SELECT VALUE 1 FROM docs 

그런 다음 계산/합계 더 나은 아직 반환되거나 결과의 읽기 x-ms-item-count 헤더.

나는 그것을 시도하지는 않았지만 문서의 대략적인 개수를 원할 경우 어떤 요청에서든 x-ms-resource-usage을 사용할 수 있다고 생각합니다. documentsSize 값을 평균 문서 크기로 나눈 값 (어떻게 든 계산해야합니다. 아마도 샘플링입니까?)을 사용하면 대략적인 값을 얻을 수 있습니다. 나는 그 헤더가 파티션 된 콜렉션에 대해 사용 가능하고 정확하다고 가정하고 있으므로 이것을 시도해야 할 수도 있습니다.

현재 파티션 구성 (어떤 범위의 해시 키 값 범위를 보여주는 테이블)을 검색 할 수있는 방법이있는 경우 수동 팬 지정을 수행 할 수 있습니다. sproc 외침에서. 그러나 그들의 구현이 광산과 같은 것이라면, (파티션이 추가되거나 제거 될 때) 리 밸런싱 중 조작은 까다 롭습니다. 그리고 sproc을 팬 아웃했을 때와 비교하여 검색된 시간 사이의 설정 변경에주의해야합니다 전화. 차라리 내 디자인은 현재 파티션 구성을 아는 것에 의존하지 않을 것입니다.