현재 Azure 컨테이너 아래에 수천 개의 파일이있는 BLOB 저장소가 있습니다. 나는 각각의 특정 subteam에 대한 파일을 표시하는 도구를 쓰고 있어요azure blob storage 쿼리 속도 향상
저장소 이름 \ 팀 \ SubTeam \의 파일 이름 : 우리의 파일 이름 지정 규칙은 다음과 같이한다. 이 코드는 컨테이너에 대한 얼룩의 목록을 가져오고, 그 다음 각각에 대해 올바른 Team \ Subteam과 일치 시키려고 시도합니다 (샘플 코드는 아래 참조).
이것은 작동하지만 매우 느립니다 (특정 하위 팀과 일치하는지 확인하려면 모든 파일을 검토해야하기 때문에). 쿼리 속도를 향상시킬 수있는 방법이 있습니까? "당신이 찾고있는 팀과 일치하는 첫 번째 파일을 찾은 다음 다른 팀을 찾아서 일찍 끝낼 때 추적하십시오"와 같은 최적화를 생각할 수 있습니다.하지만 BlobList가 정렬되어 수정되지 않을 것이라고 가정합니다. 최악의 시나리오.
불행히도 다른 컨테이너에서 파일을 분할하는 것은 현재로서는 옵션이 아닙니다. 당신이
http://somwhere.com/mycontainername/?restype=container&comp=list&delimiter=/&prefix=\Team\SubTeam
를 전달할 수 있으며,이 하위에있는 파일 만있는 XML 문서를 반환합니다 REST 인터페이스와
IEnumerable<IListBlobItem> blobs = blobContainer.ListBlobs(
new BlobRequestOptions()
{
UseFlatBlobListing = true,
BlobListingDetails = BlobListingDetails.Metadata
}).OfType<CloudBlob>();
foreach (var blob in blobs) {
var cloudy = blob as CloudBlob;
string blobTeamId = cloudy.Uri.Segments[2].Trim('/');
if (blobTeamId != teamId)
continue;
//Do something interesting with the file
listblobs는 실제로 MSDN http://msdn.microsoft.com/en-us/library/dd135734.aspx에 따라 정렬됩니다. – krolth