数据库和部署架构

Database & Deployment Architecture

网上documentation有一节'Database & Deployment Architecture'

在我们的用例中,我们目前支持 'Single Deployment Multiple Database' 方法(每个租户都有自己的数据库)。

我的问题是:

未来如果租户之间的模型出现差异,最好的选择是什么?

我想可能是放弃单一主机方法并设置一个单独的 host/Tenant。

这听起来合理吗statement/approach?

另一种选择可能是使用 Abp 模块方法来处理冲突。显然意味着更多 tables/etc 并且可能并不总是有意义

干杯,

约翰

根据模型分歧的程度,您可以考虑IExtendableObject Interface

var person = new Person("John");

// Set
person.SetData("CustomData", new MyCustomObject { Value1 = 42, Value2 = "forty-two" });

// Get
var customData = person.GetData<MyCustomObject>("CustomData");

如果您需要不同的视图,您可以在操作中有条件地调用View("Index_Tenant1")

多重部署方法

如果 分歧 需要明确的类型安全、数据库列搜索或外键引用,那么多重部署将是一种合理的方法。更新分叉有其自身的挑战,但这将使您的 DbContext 保持干净,您的迁移独立并满足要求。

配置子域路由可能会很棘手 — 除非可以使用不同的域。

尽管如此,您仍然可以使用单个主机 数据库,通过指定连接字符串进行配置。这允许您从单个(或任何)应用程序管理版本和 features 等内容。