Có khả năng có hàng ngàn người dùng trong Postgres?


9

Chúng tôi đang tạo SAAS nơi chúng tôi sẽ có tối đa 50.000 khách hàng. Chúng tôi đang xem xét việc tạo người dùng trong cơ sở dữ liệu Postgres cho mỗi khách hàng. Chúng tôi sẽ ánh xạ từng người dùng đăng nhập vào dịch vụ của chúng tôi tới người dùng trong cơ sở dữ liệu để chắc chắn rằng họ chỉ có quyền truy cập vào dữ liệu của riêng họ. Chúng tôi cũng muốn thực hiện một lộ trình kiểm toán trực tiếp trong cơ sở dữ liệu bằng các giải pháp này , sử dụng các kích hoạt. Nếu mỗi khách hàng có người dùng cơ sở dữ liệu riêng, thì sẽ rất dễ dàng để xem ai đã làm gì, ngay cả khi hai khách hàng sẽ chia sẻ cùng một dữ liệu.

Chúng tôi sẽ gặp phải một số sự cố không mong muốn vì chúng tôi có 50.000 người dùng trong cơ sở dữ liệu của mình? Hiệu suất-khôn ngoan hoặc quản trị khôn ngoan. Có thể việc kết nối sẽ khó khăn hơn, nhưng tôi thực sự không biết liệu chúng ta có cần nó không.


2
Bạn sẽ không thể thực hiện bất kỳ loại kết nối nào nếu bạn đang sử dụng DB auth phải không? Để thực hiện, vấn đề quan trọng là số lượng kết nối đồng thời và lượng tài nguyên họ đang sử dụng thay vì số lượng người dùng trong DB.
Jack nói hãy thử topanswers.xyz

2
@JackDoumund Có, bạn có thể sử dụng kết nối tổng hợp. Kết nối với tư cách là "người dùng chung" sau đóset role actualUser
Neil McGuigan

2
@ Không chắc chắn, nhưng đó không phải là DB auth. Nếu bạn đang xác thực bằng mật khẩu người dùng cơ sở dữ liệu, bạn sẽ cần sử dụng một số loại xác thực bên ngoài trong postgres.
Jack nói hãy thử topanswers.xyz

2
@JackDoumund bạn nói đúng, đó là proxy auth trái ngược với db auth.
Neil McGuigan

Các câu trả lời cho đến nay đang giả sử một số lượng lớn người dùng đồng thời, đây sẽ là trường hợp?
Jack nói hãy thử topanswers.xyz

Câu trả lời:


12

Vâng, nó sẽ ổn thôi. Tuy nhiên, bạn nên sử dụng nhóm kết nối, vì pg sử dụng một lượng bộ nhớ hợp lý cho mỗi kết nối (khoảng 10MB AFAIK).

Hơn 500 kết nối đồng thời trên mỗi hộp sẽ là một vấn đề (như truy vấn tích cực cơ sở dữ liệu cùng một lúc). Nhiều cpus / lõi là tốt hơn. Sử dụng SSD với RAID 10.

Ứng dụng SaaS của bạn sẽ kết nối với tư cách một người dùng, sau đó set roleđến người dùng thực. Điều này cho phép bạn sử dụng nhóm kết nối, vì chuỗi kết nối sẽ giống nhau, nhưng sử dụng những người dùng khác nhau. Bạn nên reset rolekhi kết nối trở lại hồ bơi.

Đây không phải là xác thực cơ sở dữ liệu. Đó là xác thực proxy (còn gọi là Mạo danh).

Bạn cũng có thể xem xét các nhóm riêng biệt cho mỗi công ty hoặc mỗi vai trò.

Để giúp quản trị viên dễ dàng hơn, bạn có thể đặt người dùng vào các nhóm và đặt quyền thông qua các nhóm. Điều này được gọi là RBAC.

Cập nhật: Tôi đã có thể tạo 50.000 người dùng trong 2,4 giây. PGAdmin chậm hơn đáng chú ý, do số lượng người dùng. Tuy nhiên, kết nối qua JDBC vẫn nhanh như trước. Tôi không thể giảm 50.000 người dùng cùng một lúc, nhưng có thể làm khoảng 10.000 người một lúc.


Cảm ơn bạn rất nhiều cho nghiên cứu của bạn. Có thể làm việc trong PGAdmin không? Đó có phải là một vấn đề lớn với hiệu suất ở đó?
David

@David PGAdmin đã ổn, chỉ cần chậm thôi. psql sẽ ổn Có thể điều chỉnh PGAdmin để tăng tốc mọi thứ.
Neil McGuigan

2

Hiệu suất: hàng ngàn kết nối đồng thời sẽ ăn hết bộ nhớ của bạn, xấp xỉ giá trị trên 1.000 kết nối đồng thời được khuyên nên sử dụng kết nối, pgbouncer là một kết nối tốt, được phát triển bởi skype.

Quản trị: Quản trị 50.000 người dùng sẽ là một IMO công việc lớn. Làm thế nào về phân biệt chi phí với cùng một truy cập dữ liệu bằng cách sử dụng khác nhau application_name, vì vậy mỗi chi phí sẽ kết nối với cơ sở dữ liệu bằng cùng một tên người dùng.

Thí dụ :

sử dụng tên người dùng khác nhau, chuỗi kết nối của từng khách hàng sẽ là: --user user1, --user user2vv

Nhưng sử dụng khác nhau application_name, chuỗi kết nối của từng khách hàng sẽ là: --user user1 --application_name costumer1, --user user1 --aplication_name costumer2vv

Điều application_namenày được ghi lại pg_stat_activityvà cũng có thể được ghi lại. Tôi nghĩ rằng sẽ dễ dàng hơn để thực hiện. Và application_namecũng được đăng nhập vào kích hoạt kiểm toán mà bạn muốn áp dụng. Thêm chi tiết tại đây .

Hy vọng nó giúp.


4
Làm cách nào để quản trị 50.000 người dùng db khó hơn 50.000 người dùng ứng dụng?
Neil McGuigan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.