Carga por lotes de conjuntos enormes de imágenes a Azure Blob Storage
Tengo alrededor de 110,000 imágenes de varios formatos (jpg, png y gif) y tamaños (2-40KB) almacenados localmente en mi disco duro. Necesito subirlos a Azure Blob Storage. Mientras hago esto, necesito configurar algunos metadatos y el ContentType del blob, pero de lo contrario es una carga masiva directa.
Actualmente estoy usando lo siguiente para manejar la carga de una imagen a la vez (en paralelo en 5-10 tareas simultáneas).
static void UploadPhoto(Image pic, string filename, ImageFormat format)
{
//convert image to bytes
using(MemoryStream ms = new MemoryStream())
{
pic.Save(ms, format);
ms.Position = 0;
//create the blob, set metadata and properties
var blob = container.GetBlobReference(filename);
blob.Metadata["Filename"] = filename;
blob.Properties.ContentType = MimeHandler.GetContentType(Path.GetExtension(filename));
//upload!
blob.UploadFromStream(ms);
blob.SetMetadata();
blob.SetProperties();
}
}
e preguntaba si había otra técnica que pudiera emplear para manejar la carga, para que sea lo más rápido posible. Este proyecto en particular implica la importación de una gran cantidad de datos de un sistema a otro, y por razones del cliente, debe realizarse lo más rápido posible.