MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Coerenza di lettura propria in Mongodb

Ci sono un paio di punti su questa domanda.

  1. Non è garantito che tu abbia la coerenza lettura dopo scrittura a meno che tu non stia utilizzando "safe=true" , "w=1" (o superiore) o "j=true" con la tua scrittura Puoi includerli come parte di insert() o update() comandi, oppure usa set_lasterror_options() per impostare queste opzioni per la connessione, il database o la raccolta che stai utilizzando.

  2. Se consenti letture da nodi secondari (ad es. una ReadPreference diversa da PRIMARY), non otterrai una semantica read-after-write, ma solo un'eventuale coerenza.

  3. Se stai usando una ReadPreference di PRIMARY e stai impostando le opzioni di lasterror appropriate, hai la garanzia di ottenere la semantica di lettura dopo scrittura su tutte le operazioni che utilizzano lo stesso socket, ovvero lo stesso thread.

  4. Se stai usando più thread e NON stai leggendo da nodi secondari, hai la garanzia di ottenere la coerenza di lettura dopo scrittura fintanto che emetti la lettura nel secondo thread dopo che la scrittura è stata completata nel primo thread. Puoi usare le primitive di sincronizzazione dei thread standard per assicurarti questo.