sql >> Database >  >> NoSQL >> MongoDB

Mongodb Leesvoorkeuren

De leesvoorkeuren zijn als volgt:

  • PRIMAIR :Query's worden verzonden naar de primaire van de replicaset.
  • PRIMARY_PREFERRED :Query's worden verzonden naar de primaire indien beschikbaar, anders een secundaire.
  • SECUNDAIR :Query's worden verdeeld onder secundairen. Er wordt een fout gegenereerd als er geen secundaire bronnen beschikbaar zijn.
  • SECONDARY_PREFERRED :Query's worden verdeeld onder secundairen, of de primaire als er geen secundaire beschikbaar is.
  • DICHTBIJ :Query's worden verdeeld onder alle leden.

Dus er is nee specifiek voor de dichtstbijzijnde ondergeschikt. U kunt dit bereiken door NEAREST en tag_sets te combineren en taggen van de secundairen.

Als de secundairen zijn getagd {'secondaries': 1} je kunt zo lezen van de dichtstbijzijnde secundaire:

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}]

Bijwerken:

Houd er rekening mee dat als er een verkiezing plaatsvindt en de topologie van uw replicaset verandert, u de tag_sets handmatig moet wijzigen om de nieuwe secondaries weer te geven.



  1. Ga:maak io.Writer-interface om in te loggen op de mongodb-database

  2. Waarom werkt findRandom() mongoose voor de node.js-methode niet?

  3. Willekeurige, schemaloze gegevens in HTML weergeven met node.js / mongodb

  4. Redis is single-threaded, hoe doet het dan gelijktijdige I/O?