【问题标题】:Using multiple dynamically created databases in project [closed]在项目中使用多个动态创建的数据库[关闭]
【发布时间】:2015-07-14 12:57:25
【问题描述】:

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

【问题讨论】:

  • 我明白,这是一种邪恶的东西,但是任何人都可以提出打破这种中等规模项目架构的论据吗?

标签: c# asp.net sql-server database database-connection


【解决方案1】:

整个应用架构取决于您的项目销售模式。

如果您为大多数客户托管数据库(例如,他们中的一些人更喜欢在他们的环境中托管数据库),我建议您使用一个涵盖您运营的所有客户的数据库。

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

优点:

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

缺点:

  • 随着您的数据库大小增长,您的数据库服务器也必须增长
  • 更复杂的架构适合初学者(但我真的不知道什么更复杂 - 每次为新客户生成新数据库,或实施一次正确的解决方案架构)
  • 如果您的客户要求的特定解决方案与其他解决方案不同 - 您需要设置单独的环境并迁移数据

最后,根据统计数据 - 与维护成本相比,开发成本要低得多,因此如果可以通过为解决方案实施适当的架构来降低维护成本,您的项目利润将会更大。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多