转换我已经创建的应用程序和数据库,以支持单个数据库上的多个站点
本文关键字:数据库 单个 支持 站点 创建 应用程序 转换 | 更新日期: 2023-09-27 18:08:08
几年前我为我的一个客户创建了一个自定义CMS,并不断开发它。它有实体、实体组和许多其他表,并使用LINQ2SQL来访问数据。我有4或5个基类来生成自定义控件。
最近,我们提出需要创建另一个网站,该网站使用当前的网站会员和身份验证提供者,具有相同的结构,但具有不同的内容。
这让我想到使用一个单一的数据库来存储两个网站的内容,但通过添加一个字段,如ApplicationName到web分开的数据。配置每个站点和内容表。类似于当前ASP.net默认成员和角色提供程序的设计。
但是,我不确定这是否是最好的解决方案。我想听听你对设计这样一个系统的建议。
我想尽量减少这需要的更改。例如,如果有一种在创建数据库上下文时设置ApplicationID的方法(我在基类中创建数据库上下文,因此更改将在单个位置),那么就不需要更改现有查询了!或者,是否有抓取和修复查询之前,他们被发送到数据库引擎?这些就是我的想法,你还有其他建议吗?
问题很简单:用最小的更改和努力将现有数据库和应用程序用于多个站点的最佳解决方案是什么?
如果站点是独立的,我强烈建议使用多个数据库;这将:
- 降低暴露错误数据的风险
- 允许更细粒度的备份/维护
- 避免过大的db
- 允许您在不再需要时干净地删除站点
- 允许您在数据库服务器之间平衡db(站点)
- 避免影响性能(为每个查询添加额外的过滤器是一件坏事)
- 减少你需要对应用程序进行的更改数量
基本上,我只会让您的中央"GetConnection()"方法担心多租户,为站点/配置/用户提供正确的连接。
提示:这就是我们在这里对stackoverflow/stackexchange所做的