Il existe un projet pour la réservation de cours par l'utilisateur. Étant donné que le backend a un nœud pour le faire, mongodb est un bon choix. Cependant, car le système de réservation de cours a une transaction d'informations de réservation de cours une fois que l'utilisateur a effectué avec succès une réservation ou annulé. la réservation. Opération, ma compréhension de mongo est qu'il ne convient pas à une utilisation dans des scénarios de transaction. Je ne connais pas grand-chose à la conception de bases de données. Je voudrais demander si mongodb est adapté à des projets tels que les réservations de cours ?
MongoDB n'est pas adapté aux scénarios de transaction forte, mais de nombreux scénarios ne nécessitent souvent pas de transactions fortes et peuvent être remplacés par une cohérence éventuelle. De nombreuses transactions fortes peuvent également être converties en atomicité de document MongoDB grâce à des techniques de définition de modèles de données pour éviter les transactions fortes. Vous devez décrire plus clairement de quel type de situation vous parlez afin de pouvoir juger si elle peut être évitée.
Pour le scénario de réservation de cours que je comprends, ce n'est pas un scénario fort qui nécessite MongoDB, mais ce n'est pas un scénario qui nécessite un SGBDR. Donc, pour savoir si MongoDB est adapté à l'utilisation, il est recommandé d'analyser la situation spécifique en détail.
=== Mis à jour le 2017.4.9 ===
Sur la base des mises à jour dans les commentaires, les explications supplémentaires suivantes sont apportées :
L'exigence de limiter le nombre de personnes peut être résolue en utilisant l'atomicité des documents de MongoDB . Pour autant que je comprends le scénario d'inscription, il ne s'agit rien d'autre que d'enregistrer qui s'est inscrit à quel cours, combien de personnes se sont inscrites au total et de contrôler pour ne pas dépasser la limite d'inscription. Ensuite, la structure des données du cours peut être conçue comme ceci :
Ce cours peut être mis à jour lorsqu'une personne s'inscrit :
C'est-à-dire recherchez ce cours en fonction de l'identifiant du cours. Si le nombre de candidats est inférieur au nombre spécifié, de nouveaux candidats seront ajoutés, sinon aucune modification ne sera apportée. Alors comment juger si l’enregistrement est réussi ?
findAndModify
Par défaut, le document avant modification sera restitué (le document après modification peut également être restitué). Alors :Pour l'utilisation de
findAndModify
, veuillez vous référer à db.collection.findAndModify(). Les modifications apportées à un document dans MongoDB sont atomiques, il n'est donc pas difficile de constater queupdate
peut également bien accomplir les tâches ci-dessus. Pour les comparaisons entreupdate
etfindAndUpdate
, veuillez vous référer à : Compare avec la méthode de mise à jour