2012-09-03 20 views
6

Düzgün ve kopyalanmış bir MongoDB'm var ve onlarca milyonlarca kayıt var. Mongo'nun veriyi hızlı güncellemelere izin vermek için bir miktar dolgu faktörü ile yazdığını biliyorum ve ayrıca Mongo'nun veritabanını çoğaltmak için bazı (aslında çok) alan gerektiren işlem günlüğünü depolaması gerektiğini biliyorum. Bu bilgi ile bile, tipik bir veritabanı kaydının büyüklüğüne göre Mongo'nun gerektirdiği gerçek büyüklüğü nasıl tahmin edeceğimi bilmiyorum. Şimdiye kadar haftalık onarımlar arasında 2 - 3 kat fazlalığım var.Toplam MongoDB veri depolama boyutu

Dolayısıyla soru şudur: MongoDB tarafından istenen toplam depolama boyutu, bayt cinsinden ortalama kayıt boyutu verildiğinde nasıl tahmin edilir?

cevap

4

Kısa cevap şudur: sadece avg bazında değildir. Belge boyutu (en azından doğru bir şekilde değil).

daha verbosely açıklamak için: diskte gerekli

uzay basitçe ortalama belge boyutunun bir fonksiyonu değildir. Oluşturduğunuz herhangi bir dizin için gerekli alan da vardır. Sonra bu hareketleri tetiklerseniz gerekli olan boşluk var (dolguya rağmen, bu gerçekleşir) - bu alan yeniden kullanılacak bir listeye yerleştirilir, ancak sonradan eklediğiniz verilere bağlı olarak, mümkün olabilir veya olmayabilir. o alanı tekrar kullan.

Ayrıca, ön ayırmanın, zaman zaman bir avuç dolusu belgenin, disk alanı kullanımınızı ~ 2 GB artırarak yeni bir veri dosyasının ayrılacağı anlamına geleceği gerçeğine de ekleyebilirsiniz. Tabii ki, yeterli veri ile, bu aslında bir yuvarlama hatası olacaktır, ancak akılda tutmaya değer.

Tutarlı bir kullanım kalıbı varsayarak, bu tür veri boyutunu boyut oranına göre tahmin etmenin tek yolu, kullanım durumunuz için zaman içinde eğilimlidir ve eklenen veriyle disk alanı kullanımını izler (belge sayısı doc boyutunun değişkenliğine bağlı olarak veri hacminden daha iyi).

Benzer şekilde, ekleme oranını, doküman boyutunu ve resync/repair öğesinden geri kazanılan alanı izlerseniz. FYI - daha az yıkıcı olabilir ve kurulumunuza bağlı olarak daha az yer kaplayan bir onarım çalıştırmak yerine veri dosyalarının "yeni" bir kopyasını almak için sıfırdan ikincil olarak yeniden oluşturabilirsiniz.