Bir Çoğaltma Kümesi , her biri birbirinin tüm verilerini yansıtan birden fazla MongoDB örneği bulunduğunuz anlamına gelir. Bir kopya seti bir Master ("Birincil" olarak da bilinir) ve bir veya daha fazla Slave'den (aka İkincil) oluşur. Okuma işlemleri herhangi bir bağımlı tarafından yapılabilir, böylece çoğaltma setine daha fazla bağımlı ekleyerek okuma performansını artırabilirsiniz (müşteri uygulamanız gerçekten farklı üyeler kullanabiliyorsa). Ancak, yazma işlemleri her zaman kopya kümesinin efendisinde gerçekleşir ve daha sonra kölelere yayılır, böylece daha fazla köle eklediğinizde yazma işlemi daha hızlı gerçekleşmez.
Çoğaltma setleri de hata toleransı sunar. Çoğaltma grubunun üyelerinden biri aşağı indiğinde diğerleri devraldı. Master düştüğünde, köleler yeni bir master seçeceklerdir. Bu nedenle , üretken dağıtımın her zaman en az üç sunucunun çoğaltma kümesi olarak MongoDB'yi kullanması önerilir ; bunlardan ikisi veri tutar (üçüncüsü, yeni bir ana makineyi belirlemek için gerekli olan veri içermeyen bir "hakemdir") kölelerden biri aşağı iner).
Kesikli Bir Küme , kümenin her bir parçasının (aynı zamanda bir çoğaltma kümesi de olabilir) verilerin bir bölümünü karşıladığı anlamına gelir. Hem okuyan hem de yazan her istek, verilerin bulunduğu küme tarafından yerine getirilir. Bu, bir kümeye daha fazla kırık eklenerek hem okuma hem de yazma performansının arttırılabileceği anlamına gelir. Hangi belgenin üzerinde bulunduğu hangi belge , her bir koleksiyonun shard anahtarıyla belirlenir . Verilerin tüm kümelere eşit olarak dağıtılabileceği şekilde seçilmelidir ve böylece shard anahtarının bulunduğu en yaygın sorgular için açıktır (örneğin: sık user_name
sorduğunuzda, shard anahtarınız alan, user_name
böylece her sorgu yalnızca bu belgeye sahip olan bir gruba devredilebilir).
Dezavantajı, hata toleransının zarar görmesidir. Bir kümenin bir parçası düştüğünde, onun üzerindeki hiçbir veriye erişilemez. Bu nedenle, kümenin her bir üyesi aynı zamanda bir kopya kümesi olmalıdır. Bu gerekli değil. Yüksek kullanılabilirliği umursamıyorsanız, bir kırılma, çoğaltmadan tek bir mongod örneği de olabilir . Ancak üretimde kullanmak için her zaman çoğaltma kullanmalısınız .
Peki bu sizin örneğiniz için ne anlama geliyor?
Sharded Cluster
/ | \
Shard A Shard B Shard C
/ \ / \ / \
+-------+ +---------+ +-------+ +---------+ +-------+ +---------+
|Primary| |Secondary| |Primary| |Secondary| |Primary| |Secondary|
| 25GB |=| 25GB | | 25 GB |=| 25 GB | | 25GB |=| 25GB |
+-------+ +---------+ +-------+ +---------+ +-------+ +---------+
75 GB'lık verilerinizi her biri 25 GB'lik 3 parçaya bölmek istediğinizde, üç çoğaltma kümesinde organize edilmiş en az 6 veritabanı sunucusuna ihtiyacınız vardır. Her kopya grubu, aynı 25 GB veriye sahip iki sunucudan oluşur.
Ayrıca üç kopya setinin hakemleri için sunucuların yanı sıra, mongos yönlendiricisini ve küme için config sunucusunu da kullanabilirsiniz. Hakemler çok hafiftir ve sadece bir kopya setinin düştüğü durumlarda gereklidir, bu yüzden genellikle aynı donanımı başka bir şeyle paylaşabilirler. Ancak Moğol yönlendiricisi ve config sunucusu yedekli olmalı ve kendi sunucularında olmalıdır.