2014-12-16 19 views
6

Bazı görüntüleri blob deposuna eşzamanlı olarak yükleme görevim var. Blobun adı bloğun md5'i olarak tanımlanır. Farklı konuların aynı dosyaları farklı konumlardan yüklemeye çalışması mümkündür.Azure Blob Storage içinde Blob Oluşturma Aynı adla aynı anda Blob Depolama

Şimdi, daha önce böyle bir bloğu yüklemeye çalışıyorsa, diğer dosyaların aynı dosyaya yüklenmesinin nasıl engelleneceğini bilmem gerekiyor.

cevap

5

İyimser bir eşzamanlılık kullanarak kiralamaksızın bunu yapabilirsiniz. Temel olarak, bu blobun bu adla tüm bloğunun etags'larından farklı olacağını belirten bir erişim koşulu ayarlayın. Bazı etag içeren bir blob varsa ikinci yükleme başarısız olur.

var access = AccessCondition.GenerateIfNoneMatchCondition("*"); 
await blobRef.UploadFromStreamAsync(stream, access, null, null); 
+0

Blob yoksa ve iki işlem aynı anda aynı dosyayı yüklemeye başlarsa ne olur? Yanılmıyorsam, bu özel erişim koşulu için bloğun depoda bulunması gerekir. –

+1

Depolamada kesinlikle bulunmamalıdır. Şu anda bu yöntemi kullanıyoruz. Azure depolamayı doğru anlarsam, her iki süreç de verileri yükler. Sonunda, blob adı altında birkaç parçayı birleştiren bir manifesto yüklenir. Bu bir atomik işlemdir ve sadece aramalardan biri başarılı olacaktır. –

+0

Teşekkürler. Hiç denemedim bu yüzden merak ettim. Senaryonuzda, bir blob'u bloklara böler ve bu blokları yüklüyorsunuz. Blob'un gerçekten küçük olduğu ve parçalara ayrılmadığı bir senaryo ile denediniz mi? –

İlgili konular