Parçalama küçük koleksiyonlar için etkili midir?


11

Eğer büyük koleksiyonları varsa veritabanı parçalama harika görünüyor. Çok fazla sayıda koleksiyonum varsa ne olur? Diyelim ki 100.000.000 belgenin 1 koleksiyonu için (çok büyük yorumlar değil) parçalama etkili. Her biri 10.000 belge olan 10.000 koleksiyon için de etkili midir?

(Koleksiyonları tablolar ve belgelerle satırlarla değiştirirseniz bu soru hala tablo odaklı veritabanları için geçerlidir. Cevap.)

Yanıtlar:


5

Her biri 10.000 belge olan 10.000 koleksiyon için de etkili midir?

Çoğu insan "tek büyük toplama" sorununa sahiptir ve bu nedenle parçalama, bu verilerin dengelenmesi ile ilgili baş ağrılarını azaltmak için açıkça yararlıdır.

Bununla birlikte, 10.000 küçük koleksiyonunuz olduğunda baş ağrınız muhtemelen "verileri dengelemiyor". Bu çok sayıda küçük koleksiyonla, probleminiz muhtemelen bu koleksiyonları izlemekle ilgilidir. Belge boyutunuza bağlı olarak, parçalamanın gerçekte gerçekleşmesi için alt sınırı bile aşmayabilirsiniz.

Gerçekten küçük koleksiyonlar için, verilerinizin konumunu yönetmek için az bilinen movePrimary komutunu kullanabilirsiniz.

Tabii ki, buna bakmanın bir diğer yolu da neden 10 bin koleksiyonunuz var? Bir koleksiyonun homojen nesnelere ihtiyacı yoktur ve 10k koleksiyonlarla çoğunun oluşturulması gerekir. Farklı veri türlerini aynı koleksiyonda saklamak, koleksiyon sayısını azaltmak ve daha sonra türü parça anahtarının bir parçası olarak eklemek oldukça mümkündür.


Teşekkürler, yapabileceğim en iyi şeyin bu tonlarca koleksiyondan kurtulup büyük bir tane yapmak olup olmadığını tam olarak öğrenmeye çalışıyordum. Daha önce tonlarca koleksiyonum vardı, çünkü ortak bir inanç duydum: "Büyük koleksiyonlar sizin için kötü çünkü dizinler RAM'e sığmıyor ve bunları sorgulamak ve güncellemek çok yavaş olacak". Ama sanırım kırıntı bu sorunu çözmek için yaratıldı ... Teşekkürler !!
João Pinto Jerónimo

Dürüst olmak gerekirse, ben de sık sık dizinlerde "hile" bulabilirsiniz. İki koleksiyonunuz varsa foove baraynı veri yapısıyla, içine birleştirebilirsiniz baztoplanması ve geçersiz _ids(kod): { _id: "foo123" }, { _id: "bar123" }. Daha büyük bir dizininiz var, ancak türü içeren yalnızca bir dizininiz var. Bir gereksinim değil, sadece "düşünce için yiyecek".
Gates VP

4

MongoDB parçalama, bir koleksiyonu daha küçük 'parçalara' bölerek ve bir dizi makinede eşit olarak dağıtarak çalışır. Genellikle en verimli olan varsayılan yığın boyutu 200 MB'dir. Bu nedenle, bir koleksiyon 200 MB'den çok daha büyük bir boyutta büyümezse, parçalara bölünmez ve bu nedenle parçalanmaya uygun olmaz, bu yüzden hiçbir faydası olmaz.

Genel durumda, verileri birden fazla makine üzerinde parçalamak, okuma, yazma ve sorguları ölçeklendirmenin çok etkili bir yoludur. Verileri okumak, yazmak ve işlemek için paralel olarak çalışan birden çok CPU, sabit disk ve bellek deposundan faydalanırsınız. Belleğin ölçeklendirilmesi, yüksek performansın bellekteki veri uyumuna çok duyarlı olduğu MongoDB için özellikle önemlidir.


FYI varsayılan yığın boyutu 1.8 olarak 64MB'dir.
Gates VP
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.