Replica set ölçek değil, erişilebilirlik zemini sağlar
MongoDB replica set, primary ve secondary düğümlerle erişilebilirliği artırır. Primary düşerse yeni primary seçilir. Bu, yüksek erişilebilirlik için önemlidir; ama yazma kapasitesini otomatik olarak yatay büyütmez.
Secondary okuma bazı senaryolarda yardımcı olabilir; fakat stale read riski ve read preference davranışı ürün beklentisiyle birlikte düşünülmelidir.
Sharding kararı shard key kararıdır
Sharding, koleksiyon verisini birden fazla shard üzerine dağıtır. Bu dağılımın sağlığı shard key seçimine bağlıdır. Sürekli artan created_at gibi bir alan tek yöne yazma baskısı yaratabilir. Çok düşük kardinaliteli alanlar da dağılımı kötü yapar.
İyi shard key hem sorgularınızda kullanılır hem de veriyi dengeli dağıtır. Sadece benzersiz diye bir alanı shard key seçmek yeterli değildir.
- Shard key yüksek kardinaliteye sahip olmalıdır.
- Yazma yükünü tek shard üzerinde toplamamalıdır.
- Sık sorgular shard key alanını kullanabiliyorsa hedefli sorgu artar.
- Tenant bazlı sistemlerde büyük tenantlar ayrıca düşünülmelidir.
Hot shard büyümenin sessiz düşmanıdır
Sharded cluster var diye yük eşit dağılmaz. Eğer yazmaların çoğu aynı shard key aralığına gidiyorsa tek shard darboğaz olur. Sistem yatay görünür ama pratikte tek düğüm kadar davranır.
Bu yüzden chunk dağılımı, shard başına okuma/yazma, en büyük tenantlar ve sorgu hedefleme oranı izlenmelidir.
Shard key karar notu
Koleksiyon: En sık sorgular: En sık yazma deseni: Shard key adayı: Kardinalite: Tek yöne büyüme riski: Büyük tenant etkisi: Sorgular hedefli mi yoksa scatter-gather mı:
Kullanım örneği: çok tenantlı event koleksiyonu
Bir SaaS ürününde events koleksiyonu tenant_id ve created_at ile büyüyorsa yalnızca created_at shard key seçmek yazmaları yeni zaman aralığında yoğunlaştırabilir. Yalnızca tenant_id seçmek de büyük tenantları tek shardda toplayabilir.
Bu durumda bileşik shard key veya hashed yaklaşım değerlendirilebilir; ama karar gerçek sorgularla test edilmelidir. Panolar tenant ve zaman aralığıyla çalışıyorsa shard key bu okuma desenini de desteklemelidir.