
WebサイトのDBとしてMongoDBを使ってみようか迷っています。
「MongoDBは1レコードを更新する際、DB単位でロックする。」といった表現がちらほらネット上で散見されるため、ユーザによる更新が頻繁に発生するようなWEBサイト(SNS)でのMongoDBの使用をためらっています。
で、「MongoDBは1レコードを更新する際、DB単位でロックする。」とは本当でしょうか?
(「コレクション単位でロック」などの表現もみられるのですが、どっちにしろ、
頻繁にロックで待機がかかると実用性が乏しくなってしまう気がしています。)
よろしくお願いいたします。
No.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のロックを取得しないといけなくなります。
柔軟性の高いフィールド設定など、便利そうだったのですが、
多数のユーザが使用するサイトでは、実用性が薄そうですね・・。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT時の行ロックの必要性に...
-
SELECT文でのデッドロックに対...
-
排他ロックしたレコードが、別...
-
UPDATE文で発生するデッドロッ...
-
Oracleの排他制御について教え...
-
MySQLは難易度が高いのでSQLite...
-
MongoDBのデータ更新はDBを排他...
-
SELECT文でタイムアウト...
-
INSERTにおいてロック処理は必要か
-
DB2のロック調査
-
SQLのロールバック
-
デッドロックに関しての質問
-
AccessShareLock はどの程度気...
-
パススルークエリでのロックに...
-
SQLServer Insertが遅い
-
accessのロック
-
MYSQLのトランザクションについ...
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
オラクルではできるのにSQLSERV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SQLServer Insertが遅い
-
SELECT時の行ロックの必要性に...
-
accessのロック
-
AccessShareLock はどの程度気...
-
Oracleの排他制御について教え...
-
更新ロックとデッドロック
-
INSERTにおいてロック処理は必要か
-
DB2のロック調査
-
排他ロックしたレコードが、別...
-
トランザクションとlast_insert_id
-
SELECT文でタイムアウト...
-
トランザクション中にSELECTし...
-
デッドロックが発生します。
-
ExcelからAccess2013DBを更新す...
-
UPDATE文で発生するデッドロッ...
-
トランザクション処理について
-
DB2でSelectした時(rollback,c...
-
パススルークエリでのロックに...
-
SELECT FOR UPDATE にトランザ...
おすすめ情報