这看起来像是一系列问题,但都与我们一直在构建的基于SaaS和PHP的应用程序有关。我们意识到我们的应用程序架构并对其进行研究,以便我们确保在进入生产之前遇到所有必要的技术,并且不会遇到任何故障。!
为了支持SaaS,我们决定使我们的数据库成为多租户,每个客户都拥有自己的数据库。我的思绪进一步令人难以理解。
如何提供定制SaaS多租户应用程序以满足个人租户需求的能力?
如何确保每个租户数据库的安全性,以便他们不会意外地访问彼此的数据?
什么是群集?如果增加no,我们如何向他们添加新的应用程序和数据库实例。客户?
我们如何确保SaaS网站的性能和可扩展性?
我们如何处理SaaS应用程序的失败,特别是在我们推出新版本和更新时(持续集成)?
在SaaS应用程序中处理订阅者/客户以及激活和停用模块权限的任何特殊解决方案?
I have attached block diagram of DB we have decided to go with
答案 0 :(得分:0)
我写了一篇很好的文章,其中包含了在PHP中开发SaaS应用程序时需要考虑的许多项目。查看SaaS application development using PHP in Zend Framework
您的一些问题的答案如下:
如何提供定制SaaS多租户应用程序以满足个人租户需求的能力?
它就像一个正常的网站开发。假设您有资源A到Z,那么您需要在数据库中保留到达租户的已分配或可访问资源。然后访问时您只需检查权限即可。
如何确保每个租户数据库的安全性,以便他们不会意外地访问彼此的数据?
SaaS应用程序上的数据库设计是一个在Stack Overflow上讨论很多次的主题。您可以为每个租户使用单个数据库或唯一数据库。对于大项目,第二个是合适的。
如果您使用单个数据库,只需将TENANT ID存储在所有表中。然后在验证租户时,根据请求来自的子域将TENANT ID保留在SESSION中。然后在所有数据库操作中传递此ID,因此,它不会意外地影响任何其他租户的数据。