首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB驱动程序什么时候建立连接?

MongoDB驱动程序什么时候建立连接?
EN

Stack Overflow用户
提问于 2013-06-06 04:50:44
回答 2查看 3.8K关注 0票数 6

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

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

1)到db的连接何时建立?是在调用getDB()还是调用getCollection()时?

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

3)通过多线程重用单个DBCollection对象还是从多线程调用getCollection()比较好?( DBCollection缓存了吗?)

EN

回答 2

Stack Overflow用户

发布于 2013-06-11 15:18:47

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

票数 7
EN

Stack Overflow用户

发布于 2013-06-06 08:35:15

( 1)当我们进行某些操作(查找、更新、删除等)时,建立了连接。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16953878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档