我正在从头开始设计一个Web驱动的SQL数据库应用程序.该应用程序将管理同一行业类型的客户的信息.换句话说,关于每个客户的信息(实体和它们之间的关系)从一个到另一个不会变化太多.但是,信息量取决于公司的规模.该应用程序可以托管在我们的服务器上或客户选择的任何地方.
我的第一个问题是:给出以下选项有哪些优缺点:
A.在同一数据库中管理多个客户信息;
B.管理每个数据库的一个客户信息; 所以每个客户都有自己的数据库;
我的第二个问题是:给出以下部署方法有哪些优缺点?
A.每个客户端都有自己的服务器(节点);
B.使用大型RAID驱动器和一个功能强大的服务器和多个网站;
由于这些选择的决策会影响我的设计,我想从不同的角度了解优缺点,包括维护,成本(财务和时间)以及架构等等.
使用的技术:
数据库:MS SQL
平台:ASP.NET
语言:C#
任何意见或建议都是最受欢迎的,
谢谢,
卡伦
我不建议给每个客户端自己的数据库.我计划为我当前的应用程序执行此操作,并将其与单个数据库进行对话.好的,因为我们现在有300个客户.你能想象管理300个数据库吗?每次升级时更新每一个?确保每个都是最新的,等等.
免责声明:在实践中,我们实际上有几个数据库.一些非常大的客户拥有自己的数据库,其他客户共享剩余的数据库.我想可能总共有7个数据库.
我们在一个功能强大的SQL服务器上有数据库.如果您有多个数据库并将它们放在不同的服务器上,那么您将面临一些服务器比其他服务器更繁忙且小型客户端未充分利用其服务器的风险.
您真的想要查看以下内容:
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-design-patterns-multi-tenancy-saas-applications
这篇文章介绍了多租户架构的不同设计方案.从正确的数据分区,安全性和技能集中可以考虑许多事项.
*更新了新链接
我把它混合了.将其设计为能够使用单独的数据库,但在有明显的性能优势之前不要分开.
设计应用程序,以便多个客户端可以存在于同一数据库中.(即在客户端数据之间建立一层分离).然后计划将其全部放在一个数据库中.
这样,您就不需要开始构建您的解决方案,但它可以让您灵活地将非常高使用率的客户端分离到专用数据库.如果你的数据库中只有一个客户端,那又怎样呢?这还可以节省服务器成本,这样您就可以确保在添加更多容量之前已经以合理的方式使用硬件投资.