在项目中使用多个动态创建的数据库

本文关键字:动态 创建 数据库 项目 | 更新日期: 2023-09-27 18:02:31

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

在项目中使用多个动态创建的数据库

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

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

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

优点:

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

缺点:

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

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

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