2016-07-11 68 views
0

我在JSP中使用MongoDB創建一個Web應用程序,它執行不同的操作,例如搜索,更新,刪除多個頁面。那麼我可以爲所有頁​​面創建一個單一的實例嗎?或者創建單個實例並在必要時調用它們?在效率和速度方面效率更高?如何訪問數據庫類實例?

回答

1

MongoClient是一個連接池對象。您應該只創建一次並在整個應用程序中使用它。

API Doc

甲MongoDB的客戶端與內部連接池。對於大多數應用程序,您應該爲整個JVM提供一個MongoClient實例。

如果需要更改池的大小使用MongoClientOptions.Builder

MongoClientOptions.Builder builder = new MongoClientOptions.Builder(); 
MongoClientOptions options = builder.connectionsPerHost(30).build(); 
MongoClient client = new MongoClient(new ServerAddress("localhost"), options); 

一般頁數無關與我們創建連接的數量。

我們的服務器負載決定了我們應該使用多少個連接。在生產環境中,我們始終使用Connection Pool。連接池是用於已經實例化的客戶端的存儲器,其管理這些客戶端的生命週期(實例化和處置)。客戶端對象是使用此池對象獲取的。池的大小取決於服務器上的負載。此處加載意味着應用程序在生產環境中每單位時間進行的數據庫調用次數。

2

在正式文件中http://mongodb.github.io/mongo-java-driver/3.2/driver/getting-started/quick-tour/

據說:

的MongoClient實例實際上代表到 數據庫連接池;即使有多個線程,您也只需要一個類MongoClient 的實例。

而且重要的是要注意的是:

通常只創建一個給定的 數據庫集羣一個MongoClient實例,並在您的應用程序中使用它。當創建 多個實例:每個MongoClient例如

  • 所有資源使用限制(最大連接數等)申請

  • 要處理一個實例,請確保調用MongoClient.close()清理資源

希望它有幫助!