sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb Läs preferenser

Läsinställningarna är som följer:

  • PRIMÄR :Förfrågningar skickas till replikuppsättningens primära.
  • PRIMARY_PREFERRED :Förfrågningar skickas till den primära om den är tillgänglig, annars en sekundär.
  • SEKUNDÄR :Frågor fördelas mellan sekundärer. Ett fel uppstår om inga sekundärer är tillgängliga.
  • SECONDARY_PREFERRED :Frågor fördelas mellan sekundärer, eller den primära om ingen sekundär är tillgänglig.
  • NÄRST :Frågor distribueras bland alla medlemmar.

Så det finns nej specifik för den närmaste sekundär. Du kan uppnå detta genom att kombinera NEAREST och tag_sets och tagga sekundärerna.

Sedan om sekundärerna har taggats {'secondaries': 1} du kan läsa från närmaste sekundär så här:

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

Uppdatering:

Du bör notera att om ett val inträffar och topologin för din replikuppsättning ändras måste du manuellt ändra tag_set för att representera de nya sekundärerna.



  1. Förstå mongo db förklara

  2. Återställer databasdumpen för en äldre version av mongo till en ny version av mongo

  3. Är det möjligt att gruppera och summera flera kolumner med MongoDB:s aggregeringsramverk?

  4. Nodejs, väntar inte på att Redis-frågan ska slutföras innan du fortsätter med exekvering