2017-06-07 45 views
1

我已经构建了一个winforms应用程序,我目前正在使用Web API重新构建到ASP.NET MVC应用程序等。也许应用程序稍后会添加。架构:一个或多个子客户数据库(网络)APP

假设我将向少数客户提供这些应用程序。 我的应用程序用于客户会计。 因此,我所有的客户都会在我提供的应用程序中管理他们的客户。

这使我想到我的问题。我应该为我的客户使用一个大型数据库吗,还是应该为每个客户使用单独的数据库?我想问相同的Web应用程序实例,API等

技术我认为这两个选项都是可能的。如果它只是一个优先选择,所有的输入是赞赏。

一些优点和缺点我能想到关:

一个数据库:

  • 易于安装/维护
  • 安装一个更新我的所有客户
  • 没有可能恢复数据库对于一个客户
  • 在资源传播方面不灵活
  • 性能,这个db可以得到真的大

多个数据库:

  • 性能与特点,数据库是小尺寸,并且可以通过多台服务器
  • 易传播,如果客户提出了一个“巨大的错误”
  • 的恢复数据能够提供客户特定需求(不需要atm)
  • 难以设置/维护,每个实例都需要单独更新。
  • A类网关/路由的事情是需要将用户路由到正确的datbase /应用

我想知道如何“大公司”的方法这一点。

回答

2

你似乎在谈论数据库多租户,你是正确的利弊。

这个问题的答案很大程度上取决于您正在构建的应用程序类型以及它将拥有的客户类型。

我会去与多租户(单DB多个租户)数据库,如果

  1. 您的应用程序是一个多租户应用。
  2. 您的用户不需要存储他们自己的数据备份。
  3. 您的数据库架构不会为每个客户更改(无论如何,这隐含在多租户应用程序中)。
  4. 您的租户/客户不会拥有大量的个人数据。
  5. 您的客户没有他们需要遵守的政府规定的数据隔离法(EU的欧盟数据,美国的美国数据等)。

对于个人数据库几乎是所有这些点的倒数。