2010-02-24 37 views
7

Vì vậy, hành khách của tôi quay lên 5 trường hợp của ứng dụng Rails của tôiMongoDB: Kết nối tổng hợp và thời gian chờ là gì?

tôi kết nối với MongoDB sử dụng Connection.new ("localhost", 3000,: pool_size => 1,: timeout => 5)

Tại sao Tôi cần một "hồ bơi kết nối" nếu tôi chỉ chịu phí khi khởi động ứng dụng Rails, không phải theo yêu cầu? Tại sao một quá trình đơn lẻ cần nhiều hơn 1 kết nối?

Và mục đích của thời gian chờ là gì? Tại sao tôi muốn kết nối với thời gian chờ? Nó có nên tồn tại trong suốt quá trình Rails không?

Vì vậy, bối rối ...

Câu hỏi này là cụ thể cho Ruby và Mongo nhưng tôi đoán nó áp dụng cho ngôn ngữ/cơ sở dữ liệu khác.

Trả lời

3

Bạn không cần phải sử dụng kết nối tổng hợp tại đây. Khi bạn đang sử dụng Hành khách, chỉ cần đảm bảo rằng mỗi cá thể sử dụng một kết nối riêng biệt bằng cách bắt sự kiện start_worker_process. Đây là tài liệu trong trình điều khiển README.

Kết nối tổng hợp có thể hữu ích cho một số ứng dụng đa luồng nhất định. pool_size là số lượng tối đa các luồng đồng thời mà kết nối sẽ xử lý và thời gian chờ là số giây tối đa mà một chuỗi có thể đợi cho một ổ cắm khả dụng trước khi một ngoại lệ được ném.

+0

Trong trường hợp của trình điều khiển ruby, conn = Connection.new (...,: pool_size => 10), đối tượng nào sở hữu hồ bơi và các kết nối của nó? Liệu gộp có nghĩa là tôi không phải khóa kết nối trong chủ đề của tôi? – Alexandre

+0

trong trường hợp đó, conn sẽ sở hữu kết nối và hồ bơi. bạn không cần phải khóa xung quanh đối tượng kết nối. –

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