繁体   English   中英

MongoDB Java Driver什么时候连接?

[英]When does MongoDB Java Driver makes connection?

我正在为MongoDB使用最新的Java驱动程序(2.11.1)。 MongoDB Java API本质上是

  • MongoClient类的一个实例(带有内部连接池)
  • 获取DB对象的getDB()
  • 获取DBCollection对象的getCollection()

1)什么时候建立与db的连接? 是在调用getDB()还是调用getCollection()时?

2)一次或每次需要调用getDB()会更好吗? (这有关系吗? - MongoClient保持DB对象缓存?)

3)通过多线程重用单个DBCollection对象或从多线程调用getCollection()会更好吗? (DBCollection缓存了吗?)

MongoClient类管理从客户端应用程序到MongoDB集群的延迟加载的连接池。 您可以使用每个主机的特定连接数以及等待连接的线程数初始化MongoClient。 由于MongoClient管理连接数和线程并发性,因此您需要为每个虚拟机使用该类的一个实例。 DB和DBCollection都通过MongoClient的连接池执行操作,因此不需要为此缓存它们。 您实例化的DB或DBCollection对象的数量没有限制。 但是,由于这些类是线程安全的,并且可以使用特定的读取首选项和写入问题进行设置,因此可以使用DB或DBCollection类的单个实例来执行多个操作。

1)当我们做一些操作(查找,更新,删除等)时建立连接

2)Doc说:“通常,您只为给定的数据库集群创建一个实例,并在整个应用程序中使用它”。 因此,没有缓存DB对象的意义,它也没有缓存在驱动程序代码中

3)DBCollection和DB是线程安全的。 DBCollection缓存在驱动程序的DBApiLayer类中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM