В настоящее время у нас есть хранилище больших двоичных объектов с тысячами файлов в одном контейнере Azure. Наше соглашение об именах файлов выглядит примерно так:
StorageName \ Команда \ SubTeam \ FileName
Я пишу инструмент, который отображает файлы для каждого конкретного подгруппы. Код получает список больших двоичных объектов для Контейнера, а затем для каждого из тех, которые он пытается сопоставить с правильным Team \ Subteam (пример кода см. Ниже).
Это работает, но очень медленно (потому что мне нужно просмотреть все файлы, чтобы увидеть, соответствуют ли они определенной подгруппе). Есть ли способ повысить скорость запроса? Я могу подумать об оптимизации, такой как «Найти первый файл, который соответствует команде, которую вы ищете, а затем отслеживать, когда вы находите другую команду, чтобы выйти из нее раньше», но это предполагает, что BlobList отсортирован и не будет исправлен. худший вариант развития событий.
К сожалению, в настоящее время разделение файлов по разным контейнерам не вариант.
Вот пример кода:
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