2009-07-09 24 views
17

Có các mẫu phổ biến mà mọi người sử dụng để tạo các ứng dụng đa chủ đề bằng Django hay không. Việc xây dựng trong "trang web" khuôn khổ có vẻ như một lựa chọn. Có cách tiếp cận nào khác mà mọi người đã thành công không?Ứng dụng Django đa người thuê nhà

+1

bản sao có thể có của [kiến trúc tối ưu cho ứng dụng đa nhiệm trên django] (http://stackoverflow.com/questions/7194341/optimal-architecture-for-multitenant-application-on-django) – akaihola

Trả lời

9

Sử dụng khung trang web đi một chặng đường dài hướng tới việc cung cấp bảo đảm bảo mật cho "người thuê nhà", giả sử bạn cung cấp cho mỗi cá thể trang web một bảng duy nhất. Mặt khác, nó sẽ là một rắc rối lớn nếu bạn có một số lượng nhỏ người thuê và bạn sẽ lãng phí một lượng lớn tài nguyên máy chủ vì bạn sẽ cần ít nhất một quy trình máy chủ cho mỗi khách hàng ngay cả khi họ không sử dụng hệ thống. Nếu bạn có một số lượng lớn người thuê nhà, nó sẽ không được khá nhiều rắc rối bởi vì bạn sẽ bị buộc phải tự động hóa các giải pháp bất kể cách tiếp cận của bạn.

Đặt khóa người nước ngoài thuê ở hầu hết các mô hình của bạn sẽ hoạt động tốt và ORM của Django giúp dễ dàng (dễ dàng hơn) để thực thi bảo mật bằng cách sử dụng custom managers. Hạn chế là hiệu suất nếu bạn bắt đầu bị rèn với rất nhiều người dùng, bởi vì không có cách nào dễ dàng để mở rộng quy mô.

Nếu bạn cần mở rộng quy mô, tôi nghĩ giải pháp tốt nhất có thể là kết hợp cả hai cách tiếp cận. Mỗi mô hình có một người nước ngoài thuê để cơ sở dữ liệu có thể được chia sẻ nhưng sau đó bạn phát triển một số cơ chế ở mức cao hơn Django để định tuyến khách hàng vào một trường hợp trang web. Điều này cho phép bạn đặt những người thuê thực sự lớn trên cơ sở dữ liệu của riêng mình với các tài nguyên được điều chỉnh đúng cho họ (ví dụ: số lượng daemon mod_wsgi, số lượng kết nối cơ sở dữ liệu, nhóm memcache đúng kích cỡ, v.v.) và người thuê nhỏ hơn chia sẻ tài nguyên chung.

7

Hãy xem https://github.com/bcarneiro/django-tenant-schemas Bạn sẽ chỉ có một phiên bản dự án và sẽ không phải thực hiện nhiều sửa đổi trong mã của bạn.

+0

Đây là một cách tiếp cận tốt đẹp nếu bạn muốn nhiều DB - cho phép bạn sử dụng nhiều lược đồ trong một DB, với chi phí thấp hơn. Yêu cầu PostgreSQL. Django đơn giản-người thuê nhà-schemas cũng là thú vị. – RichVel

+0

@RichVel có nghĩa là nếu bạn không ** muốn nhiều DB, phải không? – Clash

+1

Tôi có nghĩa là "nếu bạn muốn nhiều phương pháp giống DB nhưng sử dụng lược đồ", xin lỗi – RichVel

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