私はこれまでのところ、仕事でMongoDBを使い始めました。 MongoDBは同時更新をどのように処理するのでしょうか? MongoDBにはロック機能がないことを読んだので、これに対処するための一般的な方法は何であるか疑問に思いました。
ありがとう。
MongoDBは、プロセス全体の書き込みロックを使用して、一度に1つの書き込み操作(更新/挿入/削除)のみを実行できることを保証しました。そのため、書き込みの同時実行は単に許可されていないため、同時実行の問題は自動的に解決されます。
4つのスレッドが更新操作を試行すると、そのうちの1つが書き込みロックを取得し、更新を実行してロックを解放します。その後、残りの3つのうちの1つがロックを取得し、更新などを行います。
同時実行性は、操作を1回の書き込み操作でラップできない場合にのみ機能します。最も一般的なユースケース(ドキュメントを検索し、それを更新して、新しいバージョンをアトミックに取得する)の場合、MongoDBはまさにそれを行う「findAndModify」コマンドを提供することに注意してください: http://www.mongodb.org/display/DOCS/findAndModify + Command
更新:最近、ロックはよりきめ細かくなりました。
使用 修飾子操作 :
$inc $set $unset $Push $pushAll $addToSet $pop $pull $pullAll $rename $bit
それらはすべてアトミックです。