Çok sayıda küçük Azure depolama blob kapsayıcısına (her biri bazı blob'lara sahip) veya tonlarca blob içeren gerçekten büyük bir kaba sahip olmak daha mı iyi?


81

Öyleyse senaryo şudur:

Azure Storage'a veri bloğu yazan bir web hizmetinin birden çok örneğine sahibim. Ne zaman alındığına bağlı olarak blobları bir kapsayıcıda (veya sanal bir dizinde) gruplayabilmem gerekiyor. Arada bir (en kötü ihtimalle her gün) eski bloblar işlenir ve sonra silinir.

İki seçeneğim var:

seçenek 1

"Blob" (örneğin) adında bir konteyner yapıyorum ve ardından tüm blogları bu konteynerde depoluyorum. Her blob, alındığı zaman olan dizin adı ile birlikte bir dizin stili adı kullanır (ör. "Hr0min0 / data.bin", "hr0min0 / data2.bin", "hr0min30 / data3.bin", "hr1min45 / data.bin ", ...," hr23min0 / dataN.bin ", vb - her X dakikada bir yeni bir dizin ). Bu blob'ları işleyen şey, önce hr0min0 blob'ları işleyecektir, sonra hr0minX vb. (Ve bloblar işlenirken hala yazılmaktadır).

seçenek 2

Her biri varış zamanına göre bir ada sahip birçok kabım var (yani önce blobs_hr0min0, ardından blobs_hr0minX, vb. Adında bir kapsayıcı olacak) ve kapsayıcıdaki tüm bloblar, belirtilen zamanda gelen bloblardır. Bu blogları işleyen şey, her seferinde bir konteyneri işleyecektir.

Yani sorum şu, hangi seçenek daha iyi? Seçenek 2 bana daha iyi paralelleştirme sağlıyor mu (bir kapsayıcı farklı sunucularda olabileceğinden) yoksa seçenek 1 daha mı iyi çünkü birçok kapsayıcı başka bilinmeyen sorunlara neden olabilir?

Yanıtlar:


61

Bunun gerçekten önemli olduğunu düşünmüyorum (ölçeklenebilirlik / paralelleştirme açısından), çünkü Win Azure blobs depolamasında bölümleme konteynerde değil blob düzeyinde yapılır. Farklı kapsayıcılara yayılma nedenlerinin daha çok erişim denetimi (örneğin SAS) veya toplam depolama boyutu ile ilgisi vardır.

Daha fazla ayrıntı için buraya bakın: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx

("Bölümler" e gidin).

Alıntı yapmak:

Bloblar - Bölüm anahtarı blob adına indirildiğinden, bunlara erişimi ölçeklendirmek için birçok sunucuda farklı bloblara denge erişimi yükleyebiliriz. Bu, kapların ihtiyaç duyduğunuz kadar büyümesine olanak tanır (depolama hesabı alanı sınırı dahilinde). Değiş tokuş, birden çok blob üzerinde atomik işlemler yapma yeteneği sağlamadığımızdır.


Lütfen blob adını olabildiğince kısa tutmaya gerek var mı? ("Tonlarca
damla

60

Herkes bloblara doğrudan erişim konusunda size mükemmel yanıtlar verdi. Bununla birlikte, blobları bir kapsayıcıda listelemeniz gerekirse, çok kapsayıcılı modelde büyük olasılıkla daha iyi performans göreceksiniz. Tek bir kapta çok sayıda damla depolayan bir şirketle konuştum. Sıklıkla kapsayıcıdaki nesneleri listeler ve ardından bu blobların bir alt kümesine karşı eylemler gerçekleştirirler. Tam listeyi alma zamanı büyüdükçe performans artışı görüyorlar.

Bu senaryonuz için geçerli olmayabilir, ancak dikkate alınması gereken bir şey ...


1
Bu iyi bir nokta. Yazım sırasında (Haziran 2016), bir kapsayıcıdaki tüm blobların bir listesini alıp listenin Countözelliğini kontrol etmekten başka bir kaptaki blob sayısını elde etmenin hala bir yolu olmadığına inanıyorum .
Steven Rands

Blob adını olabildiğince kısa tutmaya gerek var mı? ("Tonlarca
damla

Tam olarak kaçınmaya çalıştığımız senaryo
Glenit

21

Teorik olarak konuşursak, çok sayıda kap veya daha fazla blob içeren daha az kap arasında hiçbir fark olmamalıdır. Ekstra kapsayıcılar, ek güvenlik sınırları olarak hoş olabilir (örneğin, genel anonim erişim veya farklı SAS imzaları için). Ekstra kaplar, budama sırasında temizliği biraz daha kolaylaştırabilir (tek bir kabı silmek yerine her bir bloğu hedeflemek). Bu nedenlerle daha fazla kap kullanma eğilimindeyim (performans için değil).

Teorik olarak, performans etkisi olmamalıdır. Blob'un kendisi (tam URL), Windows Azure'daki bölüm anahtarıdır (uzun süredir). Bu, bir bölüm sunucusundan yük dengelenecek en küçük şeydir. Dolayısıyla, aynı kapsayıcıda farklı sunucular tarafından sunulan iki farklı blobunuz olabilir (ve genellikle olacaktır).

Jeremy, giderek daha az kapsayıcı arasında bir performans farkı olduğunu belirtiyor. Durumun neden böyle olduğunu açıklayacak kadar bu kriterlere girmedim, ancak herhangi bir tutarsızlığı açıklamak için başka faktörlerden (boyut, test süresi vb.) Şüphelenirim.


4

Bunun içine giren bir faktör daha var. Fiyat!

Şu anda operasyon Listesi ve Oluşturma kapsayıcı aynı fiyat içindir: 0,054 US $ / 10.000 çağrı

Aynı fiyat aslında blob yazmak için.

Bu nedenle, çok sayıda konteyner oluşturup silerseniz, çok daha fazla ödeme yapabilirsiniz.

  • silmek ücretsizdir

hesap makinesini burada görebilirsiniz: https://azure.microsoft.com/en-us/pricing/calculator/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.