Chúng tôi hiện đang xem xét cách chúng tôi có thể thay đổi quy mô hệ thống trong đó chúng tôi có nhiều người dùng, mỗi người có lược đồ postgres riêng và thông tin xác thực người dùng DB của riêng họ để đảm bảo sự cô lập. Tuy nhiên, điều này có nghĩa là mỗi người dùng sẽ thực sự cần kết nối của riêng họ với cơ sở dữ liệu và vì số lượng kết nối mở đồng thời đến máy chủ postgres khá hạn chế do chi phí bộ nhớ cho mỗi kết nối trên máy chủ nên chúng tôi đang xem xét các giải pháp tiềm năng. pgBouncer
sẽ rất tuyệt nếu sử dụng và ghép nhiều kết nối đến với nhóm kết nối cố định tới cơ sở dữ liệu thực, tuy nhiên, chúng tôi không thể xác nhận rằng sự cô lập người dùng dựa trên thông tin đăng nhập của người dùng và giản đồ cơ sở dữ liệu có thể được ánh xạ tới tình huống đó hay không.
Các phiên của người dùng, và do đó, thời gian tồn tại của kết nối, có thời lượng vài phút, nhưng không được sử dụng nhiều (giao dịch DB đơn lẻ với cụm truy vấn được liên kết cứ sau vài giây) và các truy vấn được không phải nhạy cảm với độ trễ, do đó, về mặt kỹ thuật, chúng tôi có thể ngắt kết nối giữa các giao dịch và kết nối lại theo yêu cầu, với một proxy chẳng hạn như pgBouncer
giữ nguyên trạng thái kết nối. Nói về trạng thái, ứng dụng không sử dụng các câu lệnh được đặt tên sẵn, do đó, trạng thái phía máy chủ có thể không lớn, nhưng là cơ sở dữ liệu được lưu trữ trên đám mây, chúng tôi cũng không thể dễ dàng sửa đổi trạng thái. max_connections
cấu hình trên máy chủ.
Có cách nào để ánh xạ kịch bản này tới pgBouncer
hoặc một proxy tương tự?