我有一个被多个客户使用的数据库。我真的不希望代理增量键值在客户端之间流动。我希望编号从 1 开始并针对特定客户。
我将使用由两部分组成的复合键tenant_id
以及增量 id。
为每个租户创建增量密钥的最佳方法是什么?
我正在使用 SQL Server Azure。我担心锁定表、重复键等。我通常将主键设置为 IDENTITY 并继续。
Thanks
您计划将来使用 SQL Azure 联合吗?如果是这样,当前版本的 SQL Azure 联合不支持使用 IDENTITY 作为聚集索引的一部分。看到这个除了使用 guid 作为 SQL Azure(联合)中表的聚集索引之外,还有哪些替代方法 https://stackoverflow.com/questions/12719365/what-alternatives-exist-to-using-guid-as-clustered-index-on-tables-in-sql-azure更多细节。
如果您还没有查看过联合,您可能想查看一下,因为它提供了一种有趣的方法来对数据库进行分片并在数据库内进行租户隔离。
根据您的最终目标,使用联合,您可能能够使用 GUID 作为表上的主聚集索引,并且还可以在表上使用增量 INT IDENTITY 字段。该 INT IDENTITY 字段可以显示给最终用户。如果您在 TenantID 上进行联合,每个“租户表”实际上会成为一个筒仓(至少据我所知),因此在该表中的字段上使用 IDENTITY 实际上将是一个不断增加的自动生成值,该值在给定租户内递增。
当 \ 如果数据合并在一起(合并来自多个租户的数据)时,您将最终在此 INT IDENTITY 字段上发生冲突(因此不支持将 IDENTITY 作为联合中的主键),但只要您不使用此字段字段作为整个系统内的唯一标识符应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)