sql >> Base de Datos >  >> NoSQL >> MongoDB

Preferencias de lectura de Mongodb

Las preferencias de lectura son las siguientes:

  • PRIMARIO :las consultas se envían al principal del conjunto de réplicas.
  • PRIMARY_PREFERRED :las consultas se envían al principal si está disponible; de ​​lo contrario, al secundario.
  • SECUNDARIO :Las consultas se distribuyen entre los secundarios. Se genera un error si no hay secundarios disponibles.
  • SECUNDARIO_PREFERIDO :Las consultas se distribuyen entre los secundarios, o el principal si no hay ningún secundario disponible.
  • EL MÁS CERCANO :Las consultas se distribuyen entre todos los miembros.

Entonces no uno específico para el más cercano secundario. Puede lograr esto combinando NEAREST y tag_sets y etiquetar los secundarios.

Luego, si los secundarios han sido etiquetados {'secondaries': 1} puedes leer desde el secundario más cercano así:

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

Actualizar:

Debe tener en cuenta que si se produce una elección y la topología de su conjunto de réplicas cambia, tendrá que cambiar manualmente los conjuntos de etiquetas para representar los nuevos secundarios.