多个应用程序之间共享ASP.NET状态数据库

5

ASP.NET网站集合是否应该共享同一个会话数据库,还是每个网站都有自己的独立会话数据库?

如果没有明显区别,使用单个数据库更为可取,因为维护更加容易。

背景

我们团队有一系列的ASP.NET网站,全部使用Monorail 1.1或ASP.NET MVC 1.0编写。每个网站目前都有一个专用的会话状态数据库。我正在考虑将一个新网站添加到列表中,并且正在思考是否应该创建另一个新的会话数据库,或者只与其他网站共享现有的会话数据库。

2个回答

4

原始问题是“共享相同的会话数据库”。我认为这与应用程序的数据库不同。所有应用程序的ASP会话将是相同的。您不会修改任何会话表、SP等的架构...我们托管许多应用程序,每个应用程序都有自己的私有数据库用于应用程序数据,以及一个用于会话的共享数据库。


3

我建议分离数据库。

我认为把所有内容都塞进一个数据库里,从长远来看并不会更易于维护。如果每个应用程序都使用同一张表和数据库实例,你就无法将一个应用程序从池中分离出来而不重复整个数据库。如果有一个应用程序变得非常流行,需要移动到自己的服务器集群怎么办?

花费复制数据库到新实例的时间与精力,你将分离应用程序的关注点,使调试它们变得更加容易,更具可扩展性和可移植性。


但是,推迟创建额外数据库直到需要它们会有什么影响吗?如果其中一个应用程序需要更多的处理能力,我只需回到起点,并需要为该应用程序创建单独的数据库。其他应用程序仍然可以共享同一个数据库。或者,您基本上是在暗示说,将这些应用程序移动到单个状态数据库需要做很多工作,因为它们已经配置了各自的数据库,这样做可能有些愚蠢? - MikeWyatt
试想你需要把所有东西都分成两部分,并移动一半的应用程序。现在你需要去更改几个应用程序的配置文件并再次测试它们。或者想象一下,你需要为一个应用程序添加一个特殊的索引——现在你的其他应用程序在写入性能上受到影响。我只是不认为为数据库创建一个巨大的意大利面堆会有任何优势,只是因为你想节省一些初始工作。 - womp
我并不认同共享数据库是一个“巨大的意大利面堆”。每个应用程序的Web.config只是指向一个公共数据库,未来更改这一点是微不足道的。不过,我理解你所说的更改数据库会影响多个应用程序的观点。我不想告诉我的经理,因为单个应用程序的更改而需要重新部署多个应用程序。仅仅这个原因就足以拥有单独的数据库了。 - MikeWyatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接