C# 在project中使用多个动态创建的数据库

C# 在project中使用多个动态创建的数据库,c#,asp.net,sql-server,database,database-connection,C#,Asp.net,Sql Server,Database,Database Connection,浏览StackOverflow后发现,有许多项目使用多个数据库。在我的项目中,我甚至动态地创建它们。参考给出的理由(建设ERP,一个客户一个数据库)足够重要吗? 有人能给出这个项目结构的优缺点吗?您在问题中所说的是,您有一个应用程序,它使用许多数据库动态创建它们。现在你问为什么,有人建议使用单一数据库。 我的答案是,这取决于你想要实现什么。 使用单个数据库而不是多个数据库通常更好,因为打开和关闭连接是您在PC上可以完成的最耗时的任务之一,现代数据库服务器使用连接池来使用更少的资源并优化连接的打开

浏览StackOverflow后发现,有许多项目使用多个数据库。在我的项目中,我甚至动态地创建它们。参考给出的理由(建设ERP,一个客户一个数据库)足够重要吗?
有人能给出这个项目结构的优缺点吗?

您在问题中所说的是,您有一个应用程序,它使用许多数据库动态创建它们。现在你问为什么,有人建议使用单一数据库。 我的答案是,这取决于你想要实现什么。 使用单个数据库而不是多个数据库通常更好,因为打开和关闭连接是您在PC上可以完成的最耗时的任务之一,现代数据库服务器使用连接池来使用更少的资源并优化连接的打开和关闭,但打开和关闭连接仍然是耗时和资源消耗的操作。因此,如果所有数据都在一个数据库中,那么在应用程序中管理数据会更好。 相反,使用更多数据库可以更好地管理不同的场景。例如,我有一个应用程序,其客户端安装在使用SQL Server管理数据的PC上。普通用户只访问他们公司的数据库,所以他们需要一个数据库。 相反,作为许多公司的顾问,我需要能够根据我工作的客户将我的客户连接到多个数据库。因此,我的应用程序允许我拥有多个连接字符串,并使用我需要的任何一个连接字符串,但该应用程序一次只能在一个数据库上工作。使用单个或多个数据库的最终答案当然是“它取决于”应用程序的功能。
另外,在数据库上创建表是一项耗时耗资源的任务,所以动态创建表对您来说真的很有必要吗?或者,这意味着您只需在需要时创建数据库,然后使用它?

整个应用程序体系结构取决于您的项目销售模式

如果您为大多数客户机托管数据库(例如,其中一些客户机更喜欢在其环境中托管数据库),我建议您使用一个数据库,该数据库将覆盖您运营的所有客户

我曾为两个客户开发过专门的ERP系统,数据库托管在我们的环境中,但数据在客户之间是分离的。我们通过添加一个额外的表“Customer”实现了这一点,每个因客户而异的实体都有该表的外键。如果你问我关于性能的问题,我告诉你这根本不是问题——在表上创建适当的索引,删除旧的不必要的数据,甚至在应用程序和数据库之间部署某种缓存服务器都能很好地解决这个问题。我们有一个磁盘容量约为120GB的数据库,一些表的容量约为8400万。记录。(我也使用过磁盘上2TB大小的数据库,但它是一个SharePoint数据库,所以情况有点不同)

优点:

  • 最简单的数据库维护
  • 可根据客户要求迁移到单独的数据库
  • 将一个版本迁移到另一个版本所需的时间更短
缺点:

  • 当您的数据库大小增长时,您的数据库服务器也必须增长
  • 对于初学者来说更复杂的体系结构(但说真的,我不知道什么更复杂——每次为新客户生成新数据库,或者一次实现正确的解决方案体系结构)
  • 如果您的客户要求使用与其他解决方案不同的特定解决方案,则需要设置单独的环境并迁移数据

最后,根据统计数据,与维护成本相比,开发成本要低得多,因此如果您能够通过实施适当的解决方案体系结构来降低维护成本,您从项目中获得的利润将更大。

我理解,这是一种邪恶的事情,但是,有谁能为中型项目提供打破这种体系结构的论据吗?