服务器 Swift 与 mongodb 管理器单例

Server Swift with mongodb manager singleton

我正在使用 VaporMongodb 进行一个项目。
假设在特定路线

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

我想查询数据库,看看输入的用户是否已经存在。
拥有一个单例 MongoManager class 来处理与数据库的所有连接是否明智?

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

此实施是否会造成瓶颈?

不,除非在 Vapor Handler 和 MongoDB 之间有一个单线程机制,否则不会造成瓶颈。

MongoKitten(Swift + MongoDB 项目的底层驱动程序)在内部管理连接池。您可以在 MongoKitten 上盲目地发起查询,它会找出要使用的连接或在必要时创建一个新连接。

MongoKitten 3 的用户将对每个请求使用一个连接。如果同时处理多个请求,将打开额外的连接。

MongoKitten 4 的用户将对 3 个请求使用单个连接,这是可配置的。如果正在完成的请求太多,连接池将通过打开更多连接来扩展。

即将推出的 Meow ORM(其工作方式与您正在构建的类似)的用户将在每个线程中使用一个连接。如果保留所有连接,连接池将扩大。