2011-08-05 28 views
0

私は明らかに売り切れ前に売るために一定量の衣服を持っているオンライン小売店を建設しています。服やその他の商品が急激に売り切れてトラフィックが非常に高くなることが想定される場合は、MongoDBを使用して在庫を追跡したかったのです。しかし、これはMongoDbにとって最良のケースです。MongoDBユースケースの在庫

MongoDBは1つのドキュメントに対して複数の更新をどのように処理しますか?

私の場合、10のTシャツがあり、11人がそれを購入するためにsmaeページに来ると言う。今、それを購入すると、私は在庫が利用可能であるかどうかをチェックし、カウントを減らす更新を実行します。 mongoDBは操作をキューに入れて、前のユーザーからの更新が行われてからカウントが呼び出されるようにしますか?

答えて

0

を行うことを許可する必要があり、私は在庫管理は、あなたが伝統的のトランザクションRDBMSに向かって見てね何かだと思います。しかし、MongoDBがうまく動作しなかったり、うまく動かなかったりすることはない(他の人がすでに投稿しているように)、それは私の目には目立った特徴ではないということだけである。

ビジネスロジックを2つのセクション(サイト訪問数(おそらく非常に高い)と購入/トランザクション数(おそらくごくわずかな訪問割合)に分割することを検討するとよいでしょう。次に、前者の場合の分散コンテンツ配信の利点と後者の場合のトランザクション動作を考慮してください。

2

MongoDBにはアトミックな更新を可能にするfindandmodify関数があります。

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

それはあなたの「ユースケース」の質問に厳密にいえば

+0

私はちょうどあなたの質問を読んで、これは実際にあなたの質問に答えないかもしれません。私の悪い。 – atbebtg

+2

'findAndModify'が動作すると思います。あなたは '{available:{$ gt:0}}'のようなものでインベントリ項目を問い合わせ、 '{available:{$ inc:-1}} 'でそれを修正したいとします。 'findAndModify'全体がアトミックなので、使用可能なカウントが0より大きいインベントリ項目(名前、IDなど)が存在しない場合、失敗します(ユーザに売り切れであることを通知できます)。それ以外の場合は、項目をユーザーに「チェックアウト」するために利用可能な数をアトミックに変更します。また、このトピックに関する多くのアドバイスがあるhttp://kylebanker.com/blog/2010/06/07/mongodb-inventory-transactions/を参照してください。 – dcrosta

+0

@drcostaこのリンクをありがとうございます! – atbebtg