MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Preferências de leitura do Mongodb


As preferências de leitura são as seguintes:
  • PRIMÁRIO :as consultas são enviadas para o primário do conjunto de réplicas.
  • PRIMARY_PREFERRED :as consultas são enviadas para o primário, se disponível, caso contrário, um secundário.
  • SECUNDÁRIO :as consultas são distribuídas entre os secundários. Um erro é gerado se não houver secundários disponíveis.
  • SECONDARY_PREFERRED :as consultas são distribuídas entre os secundários ou o primário se nenhum secundário estiver disponível.
  • MAIS PRÓXIMO :as consultas são distribuídas entre todos os membros.

Então não há não específico para o mais próximo secundário. Você pode conseguir isso combinando NEAREST e tag_sets e marcando os secundários.

Então, se os secundários tiverem sido marcados como {'secondaries': 1} você pode ler do secundário mais próximo assim:
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}]

Atualização:


Você deve observar que, se ocorrer uma eleição e a topologia do seu replicaset for alterada, será necessário alterar manualmente o tag_sets para representar os novos secundários.