我一直在寻找有关Azure联合数据库的id生成最佳实践的文章或指导,但没有找到令人信服的内容。 联合表不支持标识列,因此在我看来,唯一实用的id类型是GUID,因为尝试集中创建和使用BigInt会在应用程序中创建单点故障。 我最担心的是在索引表时使用GUID相对于BigInt的性能影响。
是否有任何推荐/最佳实践(或现有库)可为分布式系统创建唯一的BigInt(或者我不必担心使用GUID的性能影响?)。
[更新]
阅读了发布问题后更多的相关内容,我认为在Azure中密钥生成将是一个问题。根据微软的blog文章建议,使用GUID作为联合密钥。然而,他们没有提到联合表上的所有索引(包括聚集索引)都必须包含联合密钥。这意味着所有这些索引都将包含一个GUID,这将影响插入性能。
另一种选择似乎是使用集中式密钥生成服务(如Simon所提到的),但这也有其缺点,可能成为潜在瓶颈和故障中心。
我本以为微软会对此提供更多指导,因为毕竟这是创建联合表时每个人都会面临的问题!
综合考虑,我决定使用集中式密钥生成服务,但这让我有点担心。如果有任何神奇的技巧,我很想听听(或者让我知道我是否错过了一些明显的东西)!
是否有任何推荐/最佳实践(或现有库)可为分布式系统创建唯一的BigInt(或者我不必担心使用GUID的性能影响?)。
[更新]
阅读了发布问题后更多的相关内容,我认为在Azure中密钥生成将是一个问题。根据微软的blog文章建议,使用GUID作为联合密钥。然而,他们没有提到联合表上的所有索引(包括聚集索引)都必须包含联合密钥。这意味着所有这些索引都将包含一个GUID,这将影响插入性能。
另一种选择似乎是使用集中式密钥生成服务(如Simon所提到的),但这也有其缺点,可能成为潜在瓶颈和故障中心。
我本以为微软会对此提供更多指导,因为毕竟这是创建联合表时每个人都会面临的问题!
综合考虑,我决定使用集中式密钥生成服务,但这让我有点担心。如果有任何神奇的技巧,我很想听听(或者让我知道我是否错过了一些明显的东西)!