質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

2回答

2555閲覧

MongoDBでデッドロックは起こりますか?

kalon

総合スコア198

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2018/11/30 12:58

皆様いつもお世話になっております。

Node.js + MongoDBの組み合わせでふと思ったのです。
RDBMSですとデッドロックに気をつけないといけないのは分かったのですが、MongoDBのようなNoSQLではデッドロックは起きるのでしょうか?英語でも調べたのですが分からなかったのです。
お詳しい方、どうかご教授のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

デッドロックは、あるレコードに排他制御で握ったままで他のレコードをアクセスすることが原因で起こります。
トランザクション1が、レコードAを握ったまま、レコードBをアクセスしようとしたときに、すでにレコードBを握っているトランザクション2が、レコードAをアクセスしようとしたときにデッドロックが起こります。つまり、どちらも2つ目のレコードがアクセス出来るようになるまで無限に待ち続けるということです(実際には無限に待つのでなくDBMSが検知するはずですが)。

MongoDBだと、トランザクション制御の機能が無いので、「レコードを排他で握ったまま」というのが無いため、デッドロックは起こらないということでしょう。

つまり、RDBMSかNoSQLかどうかは関係なくて、トランザクション処理をするかどうかに依ります。
RDBMSでも、トランザクション機能を使わない事が出来るRDBMSで、実際にトランザクション制御を行わないとデッドロックは起こりません。

投稿2018/11/30 17:40

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kalon

2018/12/01 00:31

詳しい説明をありがとうございます。よく分かりました。 MongoDB4からトランザクション機能が搭載されたようなので、それを利用する場合はデッドロックがかかりそうですね。
guest

0

MongoDBでゆるふわDB体験

また,開発者がデッドロックについて考えないで良いようなシンプルでわかりやすいシステムにしたいという目的もありました。

って記述があります。

投稿2018/11/30 16:37

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問