LightSpeed 和多租户数据库

Posted

技术标签:

【中文标题】LightSpeed 和多租户数据库【英文标题】:LightSpeed and multi-tenant databases 【发布时间】:2012-03-19 10:42:39 【问题描述】:

我有一个由许多组织共享的数据库(多租户场景)。

我想确保授权用户只能查看单个组织的数据,而无需每次都明确编码此类约束。

LightSpeed 有什么好的方法可以做到这一点吗?

【问题讨论】:

“每次”是什么意思?如何区分来自不同组织的数据和来自同一组织的数据? 如果我向存储库服务添加一个方法来检索用户列表,我宁愿不必指定它是由特定租户过滤的。我希望它是隐含的,例如在查询的某种基类中定义。 【参考方案1】:

一种可能的解决方案是为每个租户使用单独的表,即以某种租户标识符为前缀的表。

例如,如果您有一个客户表,您可以在其前面加上租户名称

Client1_Customer
Client2_Customer

Lightspeed 有一个名为DefaultNamingStrategy 的内置命名策略,可以用您自己的INamingStrategy 实现替换。您需要做的就是实现GetTableName,以便您可以识别当前租户并选择相应的表名。

【讨论】:

我喜欢这个声音。我会进一步调查。 @objektivs 我刚刚使用这种方法实现了多租户。效果很好。【参考方案2】:

我在 LightSpeed 中发现了一个很棒的功能,称为 QueryFilterAttributes。我可以创建一个组织查询过滤器属性,它可以将组织 ID 注入到查询中,就像 LightSpeed 的本机软删除一样。

非常流畅。

【讨论】:

好的,所以您有一个表,其中包含与您的组织相关的某种标识符,并且您使用 QueryFilter 只返回那些行? 这就是我的意思,Rohan。

以上是关于LightSpeed 和多租户数据库的主要内容,如果未能解决你的问题,请参考以下文章

多租户和多应用怎么对应

Keycloak 颁发者验证和多租户方法

187 - 高并发性的UUID ID生成器和多租户

187 - 高并发性的UUID ID生成器和多租户

具有插件和多租户支持的 ASP.NET MVC 应用程序以及单独的 AppDomains?

什么是多租户saas架构设计