2011-01-24 1 views
0

내 엔티티는 키 값 쌍입니다. 시간의 90 %는 키를 기반으로 엔터티를 검색하지만 시간의 10 %는 역방향 조회를 수행합니다. 즉 값으로 검색하고 키를 가져옵니다.Azure를 선택하는 방법 고유 속성이 이미있는 테이블에 대해 ParitionKey 및 RowKey

키와 값은 모두 고유성을 보장하므로 고유성이 보장됩니다.

Key를 PartitionKey 및 Key를 RowKey로 사용하는 것이 맞습니까?

나는 ParitionKey가 고유하기 때문에 내 데이터가 서버간에 완벽하게 부하 분산되어 있는지 확인합니다.

위의 결정에 문제가 있습니까? 하드 코딩 된 파티션 키를 사용하는 것이 현실적입니까? 모든 행에 동일한 파티션 키가 있습니까? 및 RowKey 고유 유지?

답변

7

네, 그렇긴하지만 데이터 크기에 따라 그다지 좋은 생각이 아닙니다. 파티션 키를 쿼리 할 때 테이블 저장소는 정확한 파티션으로 직접 이동하여 모든 레코드를 검색 할 수 있습니다. Rowkey만으로 조회하는 경우, 테이블 저장소는 테이블의 모든 파티션에 행이 있는지 점검해야합니다. 따라서 키 값 쌍이 1000 개인 경우 키로 검색하면 단일 파티션/행을 읽습니다. 홀로 가치를 통한 검색을하면 1000 개의 파티션을 모두 읽을 수 있습니다!

  1. 는 2 개 개의 다른 테이블, 당신의 키와 같은에 PartitionKey 하나,에 PartitionKey 같은 값을 가진 다른 유무 : 나는 비슷한 문제에 직면

    , 나는 그것을 두 가지 방법으로 해결했다. 스토리지가 저렴하기 때문에 데이터 복제 비용이 많이 들지 않습니다.

  2. (내가 마지막으로 한 것) 고유 한 키를 기반으로 단일 엔 태터를 효과적으로 반환하는 경우 테이블을 탐색 할 필요가 없으므로 (점 1과 같이 분할되고 피벗 됨) , 그렇게하지 마라.

관련 문제