簡體   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