Actualmente tenemos un almacenamiento blob con miles de archivos en el mismo contenedor de Azure. Nuestra convención de nomenclatura de archivos es algo como esto:Mejorando la velocidad de consulta de almacenamiento de blobs azules
StorageName \ equipo \ Subequipos \ Nombre de archivo
estoy escribiendo una herramienta que muestra los archivos de cada sub-equipo en particular. El código obtiene la lista de blobs para el contenedor y luego para cada uno de los que trata de hacer coincidir con el Team \ Subteam correcto (ver abajo el código de muestra).
Esto funciona pero es extremadamente lento (porque necesito revisar todos los archivos para ver si coinciden con un subteam particular). ¿Hay alguna manera de mejorar la velocidad de la consulta? Puedo pensar en optimizaciones como "Encuentre el primer archivo que coincida con el equipo que está buscando y luego realice un seguimiento cuando encuentre un equipo diferente para salir temprano", pero eso supondría que BlobList está ordenado y no arreglaría el peor de los casos.
Desafortunadamente, dividir los archivos en diferentes contenedores no es una opción en este momento.
Aquí es código de ejemplo:
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
parece que las listas se ordenan de acuerdo con MSDN http://msdn.microsoft.com/en-us/library/dd135734.aspx. – krolth