我可以干净地使用私有UUID变体/版本吗?
我使用随机UUID,我基本上认为它是大整数。现在我有一个案例,我希望生成一个“私人”UUID,它不是基于任何一个众所周知的5个变种/版本。
我是否应该“劫持”我永远不会使用的众所周知的变体/版本? 或者我应该使用未知的变体/版本吗?
RFC和维基百科都不涉及这个主题。
答案 0 :(得分:4)
没有人回答,我会提出我的考虑。
我们使用随机UUID来识别明确系统边界内的对象。虽然UUID由128位表示,但是只能有2 ^ 121个随机UUID,因为版本(4位)和变量(3位)是常量。 (实际上变体4允许使用一个额外的位,对于迂腐,这可以添加到121.)
我知道我们永远不会使用版本1,2,3和5.遗憾的是,RFC中没有提及剩余的11(16 - 5)版本号。
我决定将版本1和版本0100的UUID声明为私有(或本地)版本。我为自己的子类型保留了4位,这为我自己使用的每个子类型留下了足够的117位。对于一些具有确定性ID的子系统,我现在可以创建适合我使用的结构的UUID。
我完全清楚这些ID理论上可能会与外部生成的UUID发生冲突。但由于系统边界清晰且外部ID被单独考虑,这种方法适合我们并且是切实可行的。