Wenn Sie von einem sekundären lesen möchten, sollten Sie Ihre Lesepräferenz zu einem von:
-
secondaryPreferred
- In den meisten Situationen werden Operationen von sekundären Mitgliedern gelesen, aber wenn keine sekundären Mitglieder verfügbar sind, werden Operationen von den primären gelesen. -
secondary
- Alle Vorgänge, die von den sekundären Mitgliedern des Replikatsatzes gelesen werden.
Lesen vom nearest
wie in Ihrem Beispiel wird das nächste Mitglied nach Ping-Zeit ausgewählt (das entweder das primäre oder ein sekundäres sein kann).
Warnhinweise
Bei Verwendung einer anderen Leseeinstellung als primary
, müssen Sie sich potenzieller Probleme mit Eventual Consistency bewusst sein, die sich auf Ihre Anwendungslogik auswirken können. Wenn Sie beispielsweise von einem sekundären Server lesen, gibt es möglicherweise Änderungen auf dem primären Server, die noch nicht auf diesen sekundären Server repliziert wurden.
Wenn Sie Bedenken hinsichtlich einer stärkeren Konsistenz beim Lesen von Secondaries haben, sollten Sie den Schreiben Sie Bedenken wegen Replikatsets Dokumentation.
Da Secondaries die gleichen Daten schreiben müssen wie die Primarys, kann das Lesen von Secondaries die Leistung nicht verbessern, es sei denn, Ihre Anwendung ist sehr leseintensiv oder mit Eventual Consistency in Ordnung.