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

Intégrité des données MongoDB

Je doute qu'il y ait quoi que ce soit qui puisse garantir l'intégrité des données en dehors de la validation en 2 phases mentionnée. Au moins jusqu'à annoncé v4 .

Il y a peu de choses pour minimiser les risques d'erreurs. Combinez l'insertion et la mise à jour en un seul en gros . Cela réduira les risques d'échec de l'une des opérations du côté de l'application, car il s'agit d'une requête unique.

Vérifiez ensuite si nInserted === 1 , et nModified === 1 . Sinon, réessayez ou mettez en file d'attente une tâche de recalcul pour l'identifiant de publication donné.

Pour les nouvelles tentatives, il est essentiel d'avoir des écritures réessayables activé, car vous allez utiliser $inc sur les postes, ce qui est assez loin d'un fonctionnement idempotent.

Une autre option consiste à appliquer sans transaction approche - une sorte de combinaison de "Exécuter le script à chaque période de temps pour mettre à jour commentsNumber" et "Ne pas stocker du tout commentsNumber". Vous devrez conserver les horodatages du dernier travail de recalcul et compter les nouveaux commentaires depuis la date.