我是目前正在为特定人群开发专用SaaS服务的团队的一员。 我对PHP和mySQL有所了解,所以我在这些平台上开发它。将在云上部署并在多个国家/地区发布。
我已经到了将数据库中的组织/主要用户分开的想法,并想看看你们的想法。
当SaaS管理发票和许多其他敏感信息时,在mySQL服务器上分发它的最佳过程是什么?我想到了以下选项:
1)将所有信息放在单个表中的单个数据库中,并由标识行的组织分隔。 - 确实看起来很安全,当有几千个用户和10,000行时可能会很慢?
2)拥有单个数据库,但将表与用户ID分开,例如。 '1000_invoices' - 再次可能更快但不安全。
3)在每个组织注册上创建单独的数据库,以及用于访问数据库的特定用户,数据库名称是否存储在sessions / cookie中?每个组织用户。
无论如何,我想知道你们认为什么是最好的选择?如果不是以上那么你推荐什么?为什么?任何有关安全的事情都将受到高度赞赏。之前没有使用大型多组织应用程序。 提前谢谢!
答案 0 :(得分:8)
我过去开发了大量的SaaS应用程序,我们发现大型“公共”SaaS服务(如KashFlow,可能是Salesforce?)所使用的“单一应用程序部署,单一数据库”设置并没有太多感。原因如下:
除了应用程序软件部署之外,还有一些缺点,例如管理数百个,可能是数千个数据库的额外管理负担,但是它对程序代码进行的大量简化使其变得有价值。此外,使用大量shell脚本可以轻松实现自动化配置和部署。