MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb-Leseeinstellungen

Die Leseeinstellungen lauten wie folgt:

  • PRIMÄR :Abfragen werden an den primären Replikatsatz gesendet.
  • PRIMARY_PREFERRED :Anfragen werden an den primären gesendet, falls verfügbar, andernfalls an einen sekundären.
  • SEKUNDÄRE :Abfragen werden auf Secondaries verteilt. Wenn keine Secondaries verfügbar sind, wird ein Fehler ausgelöst.
  • SECONDARY_PREFERRED :Abfragen werden auf Secondarys oder den Primary verteilt, falls kein Secondary verfügbar ist.
  • NÄCHSTER :Anfragen werden an alle Mitglieder verteilt.

Also gibt es nein speziell für die nächste zweitrangig. Sie könnten dies erreichen, indem Sie NEAREST und tag_sets kombinieren und Tagging der Secondaries.

Dann, wenn die Secondaries getaggt wurden {'secondaries': 1} Sie können von der nächsten Sekundärseite wie folgt lesen:

from pymongo import ReplicaSetConnection
from pymongo import ReadPreference

db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]

Aktualisierung:

Sie sollten beachten, dass Sie, wenn eine Wahl stattfindet und sich die Topologie Ihres Replikats ändert, die tag_sets manuell ändern müssten, um die neuen Secondaries darzustellen.