Lorsque vous utilisez MongoDB dans une configuration de réplique (1 arbiter, 1 primaire, 2 esclaves); Comment définir une préférence que la lecture soit effectuée contre les secondaires et laissez le primaire uniquement pour les écrit? J'utilise Mongodb 2.0.4 avec Morphia. Je vois qu'il y a une méthode slaveok (), mais je ne sais pas comment cela fonctionne.
morphia http://code.google.com/p/morphia/ p>
Détails B>
Mon Mongo est défini avec les options suivantes: p>
Datastore ds = getDatastore();
Query<MyEntity> query = ds.find(MyEntity.class).field("entityId").equal(entityId);
query.queryNonPrimary(); // appears equivalent to ReadPrefererence.secondary()
MyEntity entity = query.get();
4 Réponses :
Utilisez la préférence de lecture "secondaire" http://www.mongodb.org / Affichage / Documents / Lecture + Préférences + et + Marquage + In + le pilote + Java + P>
"secondaire: lire à partir d'un nœud secondaire si disponible, sinon une erreur." P>
C'est obsolète. Utilisez readprefererence.secondaire () code> à la place.
La bonne réponse, après beaucoup de sang et de sueur est la suivante:
C'est également une bonne pratique pour définir une préoccupation d'écriture appropriée lors de l'utilisation des répliques, comme: P>
mongo.setWriteConcern(WriteConcern.REPLICAS_SAFE);
Il semble que la méthode actuelle (selon Java Driver 2.8+) consiste à faire
mongo = new com.mongodb.Mongo(Arrays.asList(address1, address2), options);
Bon à savoir, je suis sûr que je vais courir à nouveau si Mongo reste pertinent
Vous pouvez également définir la préférence de lecture après la création du client de Mongo comme celui-ci mongoclient.sedreadPreference (readpreference.secondaryprefer rouge ()) code>. mongoclient.slaveok () code> est obsolète.
pour le pilote Java 3.6 La méthode est maintenant
MongoClientOptions l_opts =
MongoClientOptions
.builder()
.readPreference( ReadPreference.secondary() )
.build();
ServerAddress l_addr = new ServerAddress( "localhost", 27017 );
try
(
MongoClient l_conn = new MongoClient( l_addr, l_opts );
)
{
...
Votez-le sans commentaire, à quelle utilité :(
La question ne montre aucun effort de recherche.
l'a ajouté .. Slaveok .. va-t-il fonctionner? Aucune idée pour le moment, mais ça ne me plaise pas.
"Aucune idée encore" - c'est ce que je veux dire. Avez-vous essayé Googling avant de poser la question?
Je cherche à Query.QuerynonPrimary () ATM
Oui, Googled en premier; Préférez les réponses de la sorte depuis qu'ils viennent avec l'expérience de nombreux développeurs.
de toute façon, je viens de fouetter à cause de la traîne qui va ici; Demandez à une question que vous avez besoin d'une réponse à et qu'il obtient moins de visibilité en raison des personnes qui le votent automatiquement; Cela devient vraiment ennuyeux. Surtout quand il n'y a pas de commentaire à expliquer ou à aider.
Wow mec, je commence à penser moins à vous. Si tel est le cas, cela ne doit pas être assisté peut-être à mettre à jour la page à propos de: "Avec votre aide, nous travaillons ensemble pour construire une bibliothèque de réponses détaillées à chaque question sur la programmation." Je pense certainement que cette question serait très utile pour les personnes dans ma situation; Apparemment, vous n'avez pas de bonne réponse, mais préférez frapper à la place des autres; Comment cela aide-t-il quelqu'un ??
Homme, s'il vous plaît. Stackoverflow search , Recherche Google . Les premiers liens dans les deux recherches contiennent une réponse à votre question. Effort de recherche, c'est ce dont je parle.
Aussi Recherche de DuckDuckGo
En fait Stackoverflow.com/Questtions/6520439/... a la réponse la plus proche et est la plus utile; Mais cela ne dit rien sur Morphia qui est la bibliothèque Orm notée dans la question; Par conséquent, aucun de ces liens n'a la réponse. Merci d'avoir aidé cependant.
Afaik, Morphia n'est pas pertinente ici, puisqu'il s'appuie sur le pilote Java pour le routage de la demande. Je pourrais avoir tort, cependant.
Ajout de la balise "morphia". C'est la documentation semble assez fine sur la manière dont il enveloppe le pilote Java, vous devrez peut-être regarder la source. Le docteur Java Driver Doc est API.MONGODB.ORG/JAVA/CURRENT/ com / mongodb / readprefreence.html et les documents généraux de Mongodb sont à: docs.mongodb.org/manual/applications/replication/...
Oui, les détails du doc sont rares à coup sûr; Mais c'est une très bonne bibliothèque.