Повышение скорости запросов к хранилищу BLOB-объектов Azure

В настоящее время у нас есть хранилище BLOB-объектов с тысячами файлов в одном контейнере Azure. Наше соглашение об именах файлов выглядит примерно так:

StorageName \ Team \ SubTeam \ FileName

Я пишу инструмент, который отображает файлы для каждой конкретной подгруппы. Код получает список больших двоичных объектов для Контейнера, а затем для каждого из них он пытается сопоставить правильную команду Team \ Subteam (пример кода см. Ниже).

Это работает, но очень медленно (потому что мне нужно просмотреть все файлы, чтобы увидеть, соответствуют ли они конкретной подгруппе). Есть ли способ улучшить скорость запроса? Я могу думать об оптимизации, такой как «Найдите первый файл, который соответствует команде, которую вы ищете, а затем отслеживайте, когда вы найдете другую команду, чтобы выйти из нее раньше», но это будет предполагать, что BlobList отсортирован и не будет t исправить наихудший сценарий.

К сожалению, разделение файлов по разным контейнерам в настоящее время невозможно.

Вот пример кода:

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
7
задан abatishchev 4 September 2013 в 01:01
поделиться