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 和多租户数据库的主要内容,如果未能解决你的问题,请参考以下文章