Comment MongoDB traiter avec des mises à jour simultanées?
J'ai commencé à utiliser MongoDB au travail c'est très bien.
Je me demandais bien comment MongoDB traiter avec des mises à jour simultanées ?
J'ai lu qu'il n'y a pas de fonction de verrouillage dans MongoDB, donc je me demandais quelle est la pratique la plus répandue pour traiter cette question.
Grâce.
stackoverflow.com/a/50262110/431012 explique wiredTiger (actuel) de la simultanéité de l'approche.
OriginalL'auteur lollancf37 | 2011-08-09
Vous devez vous connecter pour publier un commentaire.
MongoDB utilisé un processus de large verrou en écriture afin de garantir qu'une seule opération d'écriture (mise à jour/insérer/supprimer) peut être effectuée à un moment. En tant que tel, il a automatiquement résout des problèmes de concurrence, car écrire de la simultanéité n'est tout simplement pas permis.
Si 4 threads tentent une opération de mise à jour de l'un d'eux prendra le verrou d'écriture, faire sa mise à jour et libérer le verrou. Après que l'un des 3 autres saisira la serrure, faire sa mise à jour, etc.
Simultanéité n'intervient que si votre opération ne peut pas être enveloppé dans une seule opération d'écriture. Notez que pour la plupart des cas d'utilisation (trouver une doc, mettre à jour et saisir la nouvelle version atomiquement) MongoDB propose le "findAndModify de la commande" qui ne fait que cela : http://www.mongodb.org/display/DOCS/findAndModify+Commande
Mise à JOUR : le Verrouillage est plus granulaire ces jours-ci.
Vous êtes les bienvenus. Il semble comme un facteur limitant, mais parce que les écritures sont relativement rapide, il est en fait rarement un problème de performance. Garder un oeil sur "verrouillé %" dans mongostat de voir comment beaucoup de temps est passé avec le verrou.
MongoDb 3.2 à partir de La WiredTiger moteur de stockage est le moteur de stockage par défaut, et il prend en charge au niveau du document de serrures pour les opérations d'écriture. docs.mongodb.com/manual/core/wiredtiger/#storage-wiredtiger.
Cette réponse est spécifiquement applicables aux poids et explique bien les choses stackoverflow.com/a/50262110/431012
OriginalL'auteur Remon van Vliet
Utilisation modificateur des opérations:
$inc $set $unset $push $pushAll $addToSet $pop $pull $pullAll $rename $bit
tous d'entre eux sont atomiques.
tant que vous êtes en utilisant un modificateur d'opérations, il n'a pas d'importance combien d'écritures simultanées que vous avez.
OriginalL'auteur Karoly Horvath