多租户Django应用程序

时间:2009-07-09 21:27:53

标签: django multi-tenant

是否有人使用Django创建多租户应用程序的常见模式。内置的“站点”框架似乎是一种选择。人们有其他成功的方法吗?

2 个答案:

答案 0 :(得分:9)

使用网站框架可以为“租户”提供安全保障,假设您为每个网站实例提供了一个独特的表格。

另一方面,如果您拥有少量租户并且您将浪费大量服务器资源将是一个很大的麻烦,因为每个客户至少需要一个服务器进程,即使他们不是不使用该系统。如果您拥有大量租户,那将不会那么麻烦,因为无论您的方法如何,您都将被迫自动化解决方案。

在几乎所有模型中放置租户外键都可以正常工作,而Django的ORM可以使用custom managers轻松(更容易?)强制执行安全性。如果你开始受到大量用户的打击,那么缺点是性能,因为没有简单的扩展方法。

如果你确实需要扩展,我认为最好的解决方案可以两种方法的组合。每个模型都有一个租户外键,因此可以共享数据库,但是您可以在比Django更高级别开发一些机制来将客户路由到站点实例。这使得您可以将真正大租户放在他们自己的数据库上,并为他们正确调整资源(例如,适当数量的mod_wsgi守护程序,数据库连接数,正确大小的memcache池等)和较小的租户共享公共资源。

答案 1 :(得分:7)

看看https://github.com/bcarneiro/django-tenant-schemas 您将只有一个项目实例,而不必在代码中进行许多修改。