数据库和部署架构
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 等内容。
网上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 等内容。