在设计用于SaaS系统的多租户数据库时,在所有租户共享相同表的架构中,假设唯一表示特定字段的字段的类型和值的最佳实践是什么?行?
当然,该表可能只有一个自动递增的id /序列,但在这种情况下,租户理论上可以知道SaaS系统对其他租户的使用量,并可能会披露一些额外的元信息。 例如,让我们说每个租户都拥有自己的一组注册用户(相同的用户表)。租户1注册用户,并且用户通过id X对该租户可见。租户2注册了100个用户。租户1注册另一个用户,这次新的第一个租户的用户的ID是X + 100。租户1现在知道在另一个租户上注册了100个用户。
一种选择是某种指导;但在我看来这太过分了。
我更好的猜测是,主键应该由记录的租户ID和一些内部排序的号码组成(即每个租户拥有它的序列ID字段自己的升序ID和序列#39; S)
问题: 1)如何在PgSQL数据库中实现内部排序? 2)如果不是这样的话,通常在关系数据库中执行此操作的最佳做法是什么,特别是应该如何在PgSQL上实现。
感谢。
修改 附加问题:3)如果正确的方法是双重主键,那么所有这些应该如何工作并显示给应用程序(php)上的用户给超级租户?每次我想要处理特定记录时,是否需要传递密钥,或者,是否应该为超级租户创建额外的序列唯一索引?
Edit2因问题被搁置: 我一般都在寻找替代方案(除了我提到的方案之外)以及它的优点和缺点。特别是我问我如何在PgSQL中实现这样的多序列。