2011-08-05 2 views
0

Je construis un magasin de vente en ligne qui a une quantité fixe de vêtements à vendre évidemment avant son "sold-out" marqué. En supposant que le trafic pourrait devenir très élevé avec des vêtements et d'autres articles se vendant rapidement, je voulais utiliser MongoDB pour suivre l'inventaire. Cependant, est-ce le meilleur cas d'utilisation pour MongoDb.Inventaire de cas d'utilisation de MongoDB

Comment MongoDB gère plusieurs mises à jour d'un seul document.

Dans mon cas disons qu'il y a 10 t-shirts, et 11 personnes viennent à la page de smae pour l'acheter. Maintenant que je l'achète, je vérifie si l'inventaire est disponible, puis j'effectue une mise à jour en diminuant le nombre. MongoDB mettra-t-il en file d'attente les opérations pour que la mise à jour d'un utilisateur précédent soit faite et que le compte soit appelé?

Répondre

0

strictement parlant à la question « cas utilisation », je pense que la gestion des stocks est quelque chose que vous regardez toujours vers un SGBDR transactionnelles pour. Mais cela ne veut pas dire que MongoDB ne pourrait pas ou ne fonctionnerait pas bien (comme d'autres l'ont déjà signalé), mais que ce n'est pas à mes yeux l'une des caractéristiques principales. Vous pouvez envisager de partitionner votre logique métier en deux parties: les visites sur site (probablement très élevées) et les achats/transactions (vraisemblablement un très faible pourcentage de visites). Ensuite, considérez les avantages de la distribution de contenu distribuée pour le premier, et le comportement transactionnel pour le second.

2

MongoDB possède une fonction findandmodify qui vous permettra de faire une mise à jour atomique.

http://www.mongodb.org/display/DOCS/findAndModify+Command

Il devrait vous permettre de faire

+0

Je viens de relire votre question et cela pourrait ne pas répondre à votre question. ma faute. – atbebtg

+2

Je pense que 'findAndModify' fonctionnera. Vous voulez interroger l'élément d'inventaire avec quelque chose comme '{available: {$ gt: 0}}', et le modifier avec {{available: {$ inc: -1}} '. L'ensemble 'findAndModify' est atomique, donc si aucun élément d'inventaire (avec un nom correspondant, id, quelquechose) existe avec un nombre disponible supérieur à 0, il échouera (et vous pouvez informer l'utilisateur qu'il est épuisé); Sinon, il modifiera atomiquement le nombre disponible pour "extraire" l'élément à l'utilisateur. Voir aussi http://kylebanker.com/blog/2010/06/07/mongodb-inventory-transactions/ qui a beaucoup de conseils sur ce sujet. – dcrosta

+0

@drcosta Merci pour ce lien! – atbebtg

Questions connexes