プロが教えるわが家の防犯対策術!

WebサイトのDBとしてMongoDBを使ってみようか迷っています。

「MongoDBは1レコードを更新する際、DB単位でロックする。」といった表現がちらほらネット上で散見されるため、ユーザによる更新が頻繁に発生するようなWEBサイト(SNS)でのMongoDBの使用をためらっています。

で、「MongoDBは1レコードを更新する際、DB単位でロックする。」とは本当でしょうか?
(「コレクション単位でロック」などの表現もみられるのですが、どっちにしろ、
頻繁にロックで待機がかかると実用性が乏しくなってしまう気がしています。)

よろしくお願いいたします。

A 回答 (1件)

自分はMongoDBを使ったことはありませんが、MongoDBのマニュアルにはそういうことが書いてあるように見えます。


http://docs.mongodb.org/manual/faq/concurrency/

http://docs.mongodb.org/manual/faq/concurrency/# …
によれば、ほとんどの操作に対してdatabase単位でロックを行なっているようです。
read/write lockなのでwrite lockが必要なケースが少ないと問題ないでしょうが、ユーザーによる更新が多発する場合には大きな問題になりそうです。

http://docs.mongodb.org/manual/faq/concurrency/# …
更新の際には当然、write lockが行われるようです。

work aroundとしてはすべてのユーザーを単一のdatabaseに入れるのではなく、ユーザーIDごとに散らして入れておくという方法がありそうですが。複数のユーザーに関わる操作をされた場合には複数のdatabaseのロックを取得しないといけなくなります。
    • good
    • 0
この回答へのお礼

柔軟性の高いフィールド設定など、便利そうだったのですが、
多数のユーザが使用するサイトでは、実用性が薄そうですね・・。

ありがとうございました。

お礼日時:2013/01/01 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す