TenantId的索引和数据类型链接到多租户数据库中的suser_sid()

时间:2013-12-10 17:39:06

标签: sql sql-server multi-tenant

作为多租户数据库的常用方法,我在每个表中都有一个TenantId,它与suser_sid相同,并且基于他的表的视图按TenantId = suser_sid()过滤。

虽然这在大多数情况下工作正常,但由于我的suser_sid()返回数据类型varbinary(85),因此TenantId的自然数据类型是varbinary(85)。

由于显而易见的原因,这并不适合包含在主键或外键关系中,因为我认为在主索引中使用可变长度是一个坏主意(如果我错了,请告诉我)。

使用二进制(85)为TenantId会更好吗?或者我应该使用bigint,并且像转换那样转换(bigint,suser_sid())并与之进行比较,并希望不会为不同的租户进行转换。

1 个答案:

答案 0 :(得分:0)

实际上,guid是租户标识符的良好候选者,它非常支持索引,可以在self中用作主键,在引用表中用作外键。如果你必须从代码中生成一个,那么不需要调用大的逻辑或思考过程。只需调用Guid.NewGuid()即可在C#中执行操作。 SQL服务器也可以轻松返回最后插入的内容。因此我觉得它可能是合适的候选人。