2013-06-06 37 views
6

Tôi đang sử dụng Trình điều khiển Java mới nhất (2.11.1) cho MongoDB. MongoDB Java API cơ bản làKhi nào Trình điều khiển Java MongoDB tạo kết nối?

  • Một thể hiện của MongoClient lớp (với hồ bơi kết nối nội bộ)
  • getDB() để nhận đối tượng DB
  • getCollection() để nhận DBCollection đối tượng

1) Khi nào thì kết nối với db được thiết lập? Có phải khi getDB() được gọi hay getCollection() được gọi không?

2) Tốt hơn bạn nên gọi hàm getDB() một lần hoặc mọi lúc bạn cần? (Liệu nó có quan trọng không? - MongoClient giữ cho đối tượng DB được lưu trữ?)

3) Tốt hơn là tái sử dụng đối tượng DBCollection đơn bằng nhiều chủ đề hoặc gọi getCollection() từ nhiều luồng? (Is DBCollection cache?)

+0

Có một thử nghiệm đơn giản để biết: tạo một 'main()' thực hiện một truy vấn đơn giản, với MongoDB của bạn tắt, và xem nơi nó barfs: p – fge

Trả lời

0

1) nối được thiết lập khi chúng ta làm một số hoạt động (tìm kiếm, cập nhật, xóa, vv)

2) Doc nói: "Thông thường bạn tạo chỉ có 1 ví dụ cho một cụm cơ sở dữ liệu cho và sử dụng nó trên ứng dụng của bạn ". Vì vậy, không có điểm của bộ nhớ đệm DB đối tượng, và nó cũng không được lưu trữ trong mã trình điều khiển

3) DBCollection và DB là an toàn thread. DBCollection được lưu trữ trong lớp DBApiLayer trong trình điều khiển.

+1

Doc nói rằng cần có một cá thể của MongoClient mỗi JVM. Làm thế nào điều này liên quan đến bộ nhớ đệm DB hoặc đối tượng DBCollection. – shicky

+0

Đối tượng DB là cái gì đó là biểu diễn logic của cơ sở dữ liệu thực tế. Có thể là ngôn ngữ của tôi được sử dụng là sai, có các chi tiết của DB đã được lưu trữ, nhưng nó chỉ là 1 đối tượng DB mỗi MongoClient, nhưng nhiều DBCollection cho mỗi DB. –

7

Lớp MongoClient quản lý một nhóm kết nối được tải từ ứng dụng khách của bạn đến một cụm MongoDB. Bạn có thể khởi tạo MongoClient với một số lượng kết nối cụ thể cho mỗi máy chủ cũng như số lượng chủ đề chờ kết nối. Vì MongoClient quản lý cả số lượng kết nối và đồng thời luồng, bạn sẽ muốn sử dụng một cá thể của lớp trên mỗi máy ảo. Cả DB và DBCollection thực hiện các hoạt động của họ thông qua nhóm kết nối của MongoClient, vì vậy không cần phải cache chúng vì lý do đó. Không có giới hạn về số lượng đối tượng DB hoặc DBCollection bạn khởi tạo. Tuy nhiên, vì các lớp này là thread an toàn và có thể được thiết lập với các sở thích đọc cụ thể & viết các mối quan tâm, bạn có thể sử dụng một cá thể đơn DB hoặc DBCollection để thực hiện nhiều thao tác.

Các vấn đề liên quan