Post

UUID

UUID是”Universally Unique Identifier”的缩写,它是一个128位的值,全局唯一性是它的主要特性。UUID的主要目的是通过生成一个唯一的ID,使得在不需要中央协调机构的情况下,可以在分布式系统中区分和识别信息。

UUID的标准形式包含32个十六进制数字,分为五个组,形式为8-4-4-4-12,例如:550e8400-e29b-41d4-a716-446655440000。

使用UUID的时候应该注意以下几点:

  1. 全局唯一性:正常情况下,UUID是全局唯一的。但是,如果你的系统在生成UUID时存在错误或者重复,可能会导致UUID的全局唯一性被破坏。

  2. 无序性:UUID是无序的,如果你需要对数据进行排序,UUID可能不是最佳选择。在数据库中,如果UUID被用作主键,可能会导致性能问题,因为数据库在插入新记录时需要不断地重新排序。

  3. 大小和空间:UUID相对较大(16字节,或者以字符串形式存储时为36字节),如果你的系统需要处理大量的UUID,可能需要考虑存储和性能问题。

  4. 隐私和安全性:某些类型的UUID(例如版本1的UUID)可能包含机器的MAC地址或者时间戳等信息,这可能引发隐私和安全问题。如果这是一个关注点,你可能需要使用其他版本的UUID,或者使用其他方法来生成唯一标识符。

  5. 可读性:UUID是一串难以阅读和理解的字符,如果需要人类可读的标识符,UUID可能不是最佳选择。

  6. 确保随机性质量:UUID的唯一性主要依赖于其随机性。如果你使用的随机生成器的质量不高,或者没有正确地初始化,那么生成的UUID可能会有重复。

UUID的版本演化

其实UUID有好几个版本算法

  1. 基于时间 + mac地址, 但这种可能导致自身的隐私问题暴露,而且可能遭受攻击
  2. 跟1差不多,但是将时间戳的前四位换成posix的UID,或者GID
  3. 基于namespace,指定一个namespace + 字符串,然后根据namespace和名字生成一个UUID(MD5)
  4. 随机数
  5. 跟3一样,但是使用SHA1
This post is licensed under CC BY 4.0 by the author.

Trending Tags