В настоящее время у нас есть хранилище 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