MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mutex avec MongoDB

La fonctionnalité clé de MongoDB dans ce domaine est qu'une mise à jour vers un single le document est atomique. Depuis la documentation :

Donc pour votre mise à jour de :

db.collection.update({done: false, taken: false},{$set: {taken: true, takenBy: myIp}});

cela signifie qu'il trouvera atomiquement un document correspondant aux critères, puis le mettra à jour. Alors oui, cela fonctionnera bien pour assigner une tâche à un serveur donné.

Voir cet autre message pour plus de détails sur la mise en œuvre d'une file d'attente de travail partagée dans MongoDB. Un point clé qui y est mentionné est l'utilisation de findAndModify pour effectuer à la fois la mise à jour et renvoie le document mis à jour.