RFC 4122将UUID定义为具有特定格式: 时间戳:8个字节;时钟序列和变量:2个字节;节点:6个字节
在我的应用程序中,我将UUID用于不同类型的实体,比如foo,bar和baz。 IOW,foo类型的每个对象都有一个UUID,每个bar和baz也是如此。这会导致应用程序的输入和输出(日志,CLI)中出现大量UUID。
为了验证输入并使输出更容易处理,我正在考虑将一个半字节(4位)用于实体的类型:foo,bar,baz等。例如,如果那个半字节是&# 39; 5',它表示它是foo对象的UUID。每个UUID在此方案中都是自描述的,可以在输入时进行验证,并且可以在输出中自动添加类别名称前缀,例如" foo:5ace6432 -..."
以这种方式调整UUID格式是个好主意吗?随机性不是令人担忧的因素,因为我们仍然有118位(总共128位 - 标准用于变体的6位 - 我使用4位)。
我应该把这个半点放在哪里?如果我把它放在前面,它会覆盖时间戳的一部分。如果我把它放在最后,那就不那么明显了。如果我把它放在中间某个地方,那就更不可见了。覆盖时间戳的一部分是一个问题吗?
感谢。
答案 0 :(得分:0)
UUID是128位数字,格式仅用于读取。
尝试解释内部零件是一种不好的做法。 UUID应该是不透明的:一个用于标识事物的单个单元。如果您需要有关实体的其他信息,则需要其他字段。
简而言之:自我描述UUID是个坏主意。