c# - 软件架构与数据库设计 : One database/web application per each company or one database/web application for all companies?

标签 c# sql-server database-design architecture deployment

我正在从头设计一个网络驱动的 SQL 数据库应用程序。该应用程序将为同类行业的客户管理信息。换句话说,关于每个客户的信息(实体和它们之间的关系)在一个到另一个客户之间没有太大差异。但是,信息量取决于公司的规模。该应用程序可以托管在我们的服务器上或客户选择的任何地方。

我的第一个问题是:给定以下选项的优缺点是什么:

  • A.管理多个客户端 同一数据库中的信息;
  • B.每个管理一个客户信息 数据库;所以每个客户都会有 自己的数据库;

我的第二个问题是:以下部署方法的优缺点是什么?

  • A.每个客户端都有自己的服务器(节点);
  • B.将大型 RAID 驱动器与一台具有多个网站的强大服务器一起使用;

由于这些选择的决定会影响我的设计,我想从维护、成本(财务和时间)和架构等不同角度了解利弊。

使用的技术:

  • 数据库:MS SQL
  • 平台:ASP.NET
  • 语言:C#

欢迎提出任何意见或建议,

谢谢,

卡伦

最佳答案

我会混合这个。 将其设计为能够使用单独的数据库,但在有明显的性能优势之前不要分开。

设计您的应用程序,使多个客户端可以存在于同一个数据库中。 (即在客户端数据之间建立一层分离)。然后计划将所有内容都放在一个数据库中。

这样一来,您就不会在一开始就过度构建您的解决方案,但它让您可以灵活地将使用率非常高的客户端分拆到专用数据库。如果您的数据库中只有一个客户端,那又如何呢?这还将节省服务器成本,以便您可以确保在添加更多容量之前已经以合理的方式使用了硬件投资。

关于c# - 软件架构与数据库设计 : One database/web application per each company or one database/web application for all companies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579919/

相关文章:

c# - 使用属性上的总和验证集合

c# - 将 "Promo Code"功能添加到我的 ASP.NET C# 网站

sql-server - 如何执行将其对象名称存储在变量中的存储过程

sql - 为什么 Entity Framework 生成的查询运行时间是直接运行相同查询的两倍?

database-design - ER 图,关系所属方指定

c# - 无法从程序集“Microsoft.AspNetCore.Http,版本=3.1.0.0”中加载类型 'Microsoft.AspNetCore.Http.Internal.BufferingHelper'

c# - 字符串没有像我期望的那样连接

sql-server - AlwaysOn AG 不会在 SQL Server Windows 服务重新启动时进行故障转移

mysql - 将多个查找表与系统表映射的策略?

php - 如何设置1 :many relationships in MySQL