然而,当然也有一些公司担心他们的数据可能会受到损害,因此我们正在评估其他解决方案。
这是不幸的,因为客户有时会误以为只有物理隔离才能提供足够的安全性。
有一篇有趣的 MSDN 文章,标题为Multi-Tenant Data Architecture,您可能想查看它。这就是作者如何解决对共享方法的误解:
一个常见的误解认为只有物理隔离才能提供适当的安全级别。事实上,使用共享方法存储的数据也可以提供强大的数据安全性,但需要使用更复杂的设计模式。
至于技术和业务方面的考虑,本文简要分析了某种方法可能比另一种更合适的地方:
您期望服务的租户的数量、性质和需求都会以不同的方式影响您的数据架构决策。以下一些问题可能会使您偏向于更加孤立的方法,而其他问题可能会使您偏向于更加共享的方法。
您预计有多少潜在租户?您可能无法通过权威估计预期用途,但请从数量级的角度考虑:您是否正在为数百名租户构建应用程序?数千?成千上万?更多的?您期望的租户群越大,您就越有可能考虑采用更共享的方法。
您预计平均租户的数据占用多少存储空间?如果您希望部分或所有租户存储大量数据,那么分离数据库方法可能是最好的。(事实上,数据存储要求可能会迫使您采用独立数据库模型。如果是这样,那么从一开始就以这种方式设计应用程序要比以后转向独立数据库方法容易得多。)
您希望平均租户支持多少并发最终用户?数字越大,越适合采用更孤立的方法来满足最终用户的要求。
您是否希望提供任何按租户的增值服务,例如按租户的备份和恢复功能?通过更孤立的方法更容易提供此类服务。
更新:进一步更新预期的租户数量。
对于大多数情况(如果不是所有情况),预期的租户数量(10k)应该排除多数据库方法。我认为您不会喜欢维护 10,000 个数据库实例并每天必须创建数百个新实例的想法。
仅从该参数来看,共享数据库、单一模式方法似乎是最合适的。您将为每个租户存储大约 50Mb,并且每个租户都没有附加组件,这一事实使这种方法更加合适。
上面引用的 MSDN 文章提到了解决共享数据库方法的安全考虑的三种安全模式:
当您对应用程序的数据安全措施充满信心时,您将能够为您的客户提供提供强大数据安全保证的服务级别协议。在您的 SLA 中,除了保证之外,您还可以描述您将采取的措施以确保数据不被泄露。
更新 2:显然微软的人移动/制作了一篇关于这个主题的新文章,原来的链接已经消失,这是新的:多租户 SaaS 数据库租赁模式(感谢 Shai Kerer)