2017-03-26 1 views
0

VaporMongodb을 사용하는 프로젝트에서 작업하고 있습니다.
는의 특정 경로 I 데이터베이스를 조회 및 입력 사용자가 이미 존재하는 경우 표시 할mongodb manager singleton을 사용한 서버 스위프트

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 사용자는 요청 당 하나의 연결을 사용합니다. 여러 요청을 동시에 처리하는 경우 추가 연결이 열립니다.

MongoKitten 4 사용자는 3 개의 요청에 대해 단일 연결을 사용합니다. 구성 가능합니다. 요청이 너무 많으면 더 많은 연결을 열어 연결 풀을 확장합니다.

Meow ORM (사용자가 제작하는 것과 유사한 방식으로 작동)의 사용자는 스레드 당 하나의 연결을 사용합니다. 모든 연결이 예약되어 있으면 연결 풀이 확장됩니다.

관련 문제