リクエストごとに、私はデータベースを開いて、クエリを実行してデータベースを閉じていました。MongoDB:データベースを開いたり閉じたりする頻度はどれくらいですか?どうして?
私は散発的に実行してconnection already opened
という問題が発生しました。
設定を変更してmongoを開いたままにしてしまいました。
この方法の短所は何ですか?
ありがとうございます!
(注:Node.jsのを使用して)
リクエストごとに、私はデータベースを開いて、クエリを実行してデータベースを閉じていました。MongoDB:データベースを開いたり閉じたりする頻度はどれくらいですか?どうして?
私は散発的に実行してconnection already opened
という問題が発生しました。
設定を変更してmongoを開いたままにしてしまいました。
この方法の短所は何ですか?
ありがとうございます!
(注:Node.jsのを使用して)
接続を一度開いて、少なくともnode-native-driverと再利用しているように見えます。ドライバーの開発者の主題に関するコメントは、ここにあります:https://github.com/mongodb/node-mongodb-native/issues/84
私はNode.jsのドライバーのために話すことはできませんが、Javaドライバは、このような方法で使用されるように設計されました:http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency - それは内部接続を処理します。おそらくnode.jsドライバもそうです。おそらく、ドライバの開発者に電子メールで質問する価値はありますか?
ここでの答えは、実行しているバージョンによって異なります。 main github pageに記載された方法は、「必要に応じて」接続を開閉することを含む。
現在、レプリカセットを正しくサポートし、基本的な接続プーリングを提供する作業が行われています。実際、clean up of pooled connections on errorに対処するためにちょうど昨日のチェックインがありました。
ドキュメントがこのオープン/クローズメソッドを提供することを考えれば、これはおそらく行く方法です。それは私が現在自分のアプリでやっていることです。あなたが見ている問題に関しては、実際にはバグかもしれません。再び、ドライバのバージョンは< 1.0で、昨日のチェックインと同様のものがありました。問題があるかもしれません。
編集:私は、クリスチャンが10genチームからの限られたサポートで、自分の時間にこの仕事をしている素晴らしい人だと付け加えておきます。そのようなドライバをビルドするのはたくさんの作業です。オープンな接続を再利用するなどのエラーが発生した場合は、間違いなくバグを報告したり、修正を提供したりしてください。
Javaドライバとnode.jsドライバの動作は大きく異なります。 Javaドライバには、構成可能な接続プールが組み込まれています。 node.jsドライバはその方向に動いていますが、node.jsはまったく異なります。 –