为大数据生成最佳UUID

时间:2016-08-23 13:15:41

标签: java hadoop uuid bigdata

我想为大数据生成唯一标识符,最终以UUID结尾。我提到维基百科(https://en.wikipedia.org/wiki/Universally_unique_identifier)用于UUID,文章提到哈希冲突可能是概率“需要选择标识符大小和生成过程以便这样做在实践中充分不可能“

“......这些概率仅在使用足够的熵生成UUID时才成立。否则,重复的概率可能会显着提高,......”

“......如果这不可行,RFC4122建议使用名称空间变体,例如类型5 UUID。”

我计划使用Java生成UUID并引用API https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html

走过维基百科:

  1. 如何设置标识符大小并选择生成过程 正如维基百科所指出的那样?

  2. 我应该怎样做才能满足那里提到的“足够的熵”?

    有人可以简化这个并让我知道我应该做些什么 生成最好的UUID?

1 个答案:

答案 0 :(得分:2)

  

如何设置标识符大小并选择维基百科中指出的生成过程?

标识符大小是多少? UUID的大小由标准指定。

  

我应该怎么做以满足那边提到的“足够的熵”?

无。只需使用java.util.UUID即可。来自documentation of randomUUID

  

使用加密强伪随机数生成器生成UUID。

如果它的加密性很强,那么它对你来说已经足够了:)。

嘿,如果您有疑问,只需生成一个UUID的bazzilion并检查它们中的任何两个是否相同:)

  

我应该做些什么来生成最好的UUID?

好吧,如果你不知道,那么使用UUID版本1.但如果你需要不可预测或随机值,那么使用UUID版本4.

另外请记住,如果您需要从很多的UUID值构建数据库索引,那么最好将这些值稍微增加以获得更好的插入性能 - UUID版本1更好在这种情况下比版本4.

编辑:看起来java.util.UUID API没有提供生成版本1 UUID的简单方法。希望这会有所帮助:

How to generate time based UUIDs?