SQL何时创建新数据库?

bev*_*qua 5 sql asp.net database-design

我有三个不同的应用程序,它们都共享数据库的ASP.NET成员资格方面,几乎肯定它们不会共享任何其他内容.

我应该为每个应用程序都有一个单独的数据库,还是一个就足够了?

所有应用程序表都带有前缀,因此在集成中不会出现问题.虽然我想知道是否会出现任何性能问题,或者如果让所有三个应用程序共享同一个数据库会出现某种严重错误.

有问题的应用程序是三个Web应用程序,"主站点",论坛和错误跟踪器.我想知道这是否可行,因为如果我有一个数据库,集成可能会更容易.例如,错误跟踪器在其db连接中注册asp.net成员资格表,它甚至创建了一个"admin"用户,其中实际应该持有成员资格表的数据库将是"主站点".

更新:我在这个问题上添加了一个赏金,因为答案似乎对于我是否应该将多个数据库用于仅共享成员资格提供者的不同应用程序存在相当分歧的意见.

mar*_*c_s 16

单独的应用程序=单独的数据库 - 除非您必须将所有内容"挤压"到一个数据库中(例如,在共享的Web主机上).

  • 可以单独备份(和还原!)单独的数据库.
  • 可以在需要时将单独的数据库分发到其他服务器上.
  • 可以单独调整单独的数据库.


Rid*_*Dev 12

我总是发现拥有更多数据库会更好,这样更容易:

  1. 如果需要,迁移到更多服务器
  2. 更轻松地管理安全性/访问
  3. 更容易(和更快)的还原和备份

我实际上会选择四个数据库.成员资格数据库,然后每个应用程序一个(如果成员资格真正共享).这样您就可以跨应用程序锁定安全性.

仔细看看你的问题...你说数据"可能不会被共享"...你的很多查询会加入会员表吗?如果是这样,如果它们位于同一个数据库中可能会更容易.但是,如果您使用更基于实体的方法,我认为您对多个数据库仍然会更好.您甚至可能希望为您的成员资格数据库查看LDAP数据库或其他类型的缓存,以加快速度.


Bon*_*nyT 5

您应该使用相同的数据库,除非您当前需要将它们放在单独的数据库中 - 但在可能的情况下,您应该构建系统,以便在需要时将数据移动到单独的数据库中.

在实践中,这意味着您应该保持SQL过程尽可能少的数据 - 即没有多步存储过程执行大量单独的操作.有单独的usps并从代码中调用每个usps.

使用单独数据库的原因:

1)不相关的数据 - 相互关联的组数据 - 和数据库超出一定的复杂性,希望将相关数据块分离到单独的数据库中以简化.

2)应将更重要的数据(例如个人详细信息)分开以允许更大的安全措施:例如,从开发人员筛选此数据

3)或更低的重要性(例如,记录信息) - 这可能不需要备份 - 如果它特别庞大,您可能不希望它增加备份主站点数据库所花费的时间.

4)由生活在不同位置的不同服务器上的应用程序使用.很明显,您希望将数据尽可能接近消费应用程序.

如果没有真正了解的大小和系统的规模,难以充分认为,如果它只是你自己的网站,人们分贝的工作,现在 - 如果它是商业的话,我不得不从字4个DBS去:成员详细资料,论坛,Bug Tracker和MainSite相关的东西.

因此,在代码中,您将拥有一个会员管理器,它只与会员数据库,一个BugManager,一个论坛管理器和其他任何内容进行通信,只会与MainSite数据库通信.我想不出你需要任何这些数据库互相交流的任何理由.