假设您为每个站点实例提供一个唯一的表,使用站点框架可以为"租户"提供安全保障.
另一方面,如果您拥有少量租户并且浪费大量服务器资源将是一个很大的麻烦,因为即使他们不使用,您也需要每个客户至少一个服务器进程系统.如果您拥有大量租户,那将不会那么麻烦,因为无论您的方法如何,您都将被迫自动化解决方案.
在几乎所有模型中放置租户外键都可以正常工作,Django的ORM可以轻松(更简单?)使用自定义管理器强制执行安全性.如果您开始受到大量用户的打击,那么缺点就是性能,因为没有简单的扩展方法.
如果你确实需要扩展,我认为最好的解决方案可能是两种方法的结合.每个模型都有一个租户外键,因此可以共享数据库,但是您可以在比Django更高级别开发一些机制来将客户路由到站点实例.这使得您可以将真正大租户放在他们自己的数据库上,并为他们正确调整资源(例如,适当数量的mod_wsgi守护程序,数据库连接数,正确大小的memcache池等),并且较小的租户共享公共资源.
看看https://github.com/bcarneiro/django-tenant-schemas 你只有一个项目实例,不需要在你的代码中做很多修改.
| 归档时间: |
|
| 查看次数: |
3918 次 |
| 最近记录: |