Yanıtlar:
Parçalama kullanıyorsanız, "yük dengeleyici" mongos işlemidir - aslında daha çok bir yönlendirici gibidir - yapılandırma veritabanının bellek içi bir kopyasını tutar ve parça anahtarına göre kararlar verebilir.
Aynı çoğaltma kümeleri arasında veya kümenin üyeleri arasında yük dengelemeyi kastediyorsanız, mongosun bu senaryoyu da ele alması için bir özellik isteği vardır ( https://jira.mongodb.org/browse/SERVER-1594 ), ancak sürücülerin nasıl çalıştığı gerçekten gerekli değildir (yine de sürücüleri daha az karmaşık hale getirir).
Tek bir çoğaltma kümesinde yazarları dağıtamazsınız, hepsinin birincil dosyaya gitmesi gerekir. Uygun gördüğünüzde Okuma Tercihleri aracılığıyla okumaları zaten ikincil bölgelere dağıtabilirsiniz . Sürücü, birincil olanı ve ikincil olanı izler ve sorguları uygun şekilde yönlendirir.
'Yük dengeleme' parçalama ile sağlanır. Parçalayarak, yazma / güncellemeleri ayrı ayrı parçalara dağıtırsınız. Bunu yapan belirli bir algoritma yoktur, çünkü mongo verileri istediğiniz anahtar kombinasyonuna göre bölümlendirmenize izin verecektir. En iyi bölüm algoritmaları, sıralı girdilerin bir bileşiğine ve rastgele bir bileşiğe sahip olanlardır.
Örneğin, bir kullanıcı kimliği aşağıdaki gibi bölümlenebilir
xx-sha1(user email)
xx = time sequence
Parçalamayı uygulamak için üç yapılandırma sunucusuna ve veri düğümüne sahip olmanız gerektiğini unutmayın. Veri düğümleri artıklık için çoğaltma kümelerine gruplandırılabilir ve ikincil veriler okumak için kullanılabilir (ancak mümkünse). Ben sadece çoğaltma asenkron yapılır çünkü veri okumak için eğer diyorum ki yeni verilerin ikincil sorgulama zamanında kullanılabilir olacağını garanti etmez.
Bölüm algoritmasının tamamen size bağlı olduğunu ve uygulama gereksinimlerinizi karşılaması gerektiğini unutmayın. Ayrıca sadece verileri yazmak isteyip istemediğinizi ve sadece arada sırada okuduğunuzu veya yazdıktan hemen sonra okumanız gerektiğini düşünmelisiniz.