2017-03-26 10 views
0

私はVaporMongodbを使ってプロジェクトを進めています。
はのは、特定のルートmongodbマネージャーシングルトンを使用したサーバースウィフト

drop.get("user", String.self) { request, user in 
     // ... query Mongodb 
    } 

で、私はデータベースを照会し、入力されたユーザーが既に存在するかどうかを確認したいとしましょう。
データベースとのすべての接続を処理するシングルトンMongoManagerクラスを持つことをお勧めしますか?

drop.get("user", String.self) { request, user in 
      MongoManager.sharedInstance.findUser(user) 
     } 

この実装でボトルネックを作成しますか?

答えて

0

いいえ、蒸気ハンドラとMongoDBの間にある単一スレッドのメカニズムがない限り、ボトルネックは作成されません。

MongoKitten(Swift + MongoDBプロジェクトの基本となるドライバ)は、内部的に接続プールを管理します。あなたは盲目的にMongoKittenでクエリを呼び出すことができ、必要に応じて、使用する接続を調べたり、新しい接続を作成したりします。

MongoKitten 3のユーザーは、リクエストごとに1つの接続を使用します。複数の要求が同時に処理されている場合は、追加の接続が開かれます。

MongoKitten 4のユーザーは3つの要求に対して1つの接続を使用しますが、これは設定可能です。あまりにも多くのリクエストが行われている場合、接続を開くことによって接続プールが拡張されます。

今後のMeow ORM(構築しているのと同じように機能します)のユーザーは、スレッドごとに1つの接続を使用します。すべての接続が予約されている場合、接続プールは拡張されます。

関連する問題