在单个实例上有多个客户使用的Web应用程序(带有ASP.Net Web API的AngularJS前端)。每个客户可以拥有任意数量的用户。其他人看不到一个客户的数据。对于这种情况,最好的方法是什么?
1)单个DB。在所有表上都有客户ID并控制数据可见性。
2)多个DB。在登录过程中,选择数据库。
还有其他方法吗?
答案 0 :(得分:0)
我试图根据自己的需要缩短和总结那篇文章。
单个数据库(所有客户的共享数据库)
优点: 1)具有较低的维护,设备和备份成本 2)相对难以开发
缺点: 1)根据应用程序的不同,某些客户甚至可能不会考虑使用共享数据库的应用程序。 2)在发生故障时从备份中恢复客户的数据是相对非常困难的。 3)在安全领域进行额外的开发工作,以确保客户永远不会访问其他客户。数据,即使出现意外错误或攻击
多个数据库(每个客户单独的数据库)
优点: 1)可以轻松扩展应用程序的数据模型(稍后讨论)以满足客户的需求。个人需求 2)在发生故障时从备份中恢复客户的数据是一个相对简单的过程
缺点: 1)导致维护设备和备份客户数据的成本增加 2)可以容纳在给定数据库服务器上的客户数量受服务器可以支持的数据库数量的限制。
选择方法
经济考虑因素:最初的高成本开发,但持续的运营成本往往较低。
安全注意事项:潜在客户对安全性有很高的期望,您的服务水平协议(SLA)需要提供必要的条款
客户注意事项:您希望服务的客户的数量,性质和需求 - 都需要考虑。
监管注意事项:公司通常受制于可能影响其安全性和记录存储需求的监管法律
技能组注意事项:设计单实例,多租户架构仍然是一项非常新的技能,因此很难获得主题专业知识。