java - 为大数据生成最佳 UUID

标签 java hadoop uuid bigdata

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

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

“...如果这不可行,RFC4122 建议改用 namespace 变体,例如 Type 5 UUID。”

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

根据维基百科:

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

  2. 我应该怎么做才能满足那边说的“足够的熵”?

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

最佳答案

How can I set the identifier size and select the generation process as pointed out in Wikipedia?

什么标识符大小? UUID 的大小由标准指定。

What should i do to meet the "sufficient entropy" mentioned over there?

没有。只需使用 java.util.UUID。来自 documentation of randomUUID :

The UUID is generated using a cryptographically strong pseudo random number generator.

如果它的加密强度很高,那么它对你来说就足够了:)

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

what exactly I should do to generate the best UUIDs?

好吧,如果您不知道,则使用 UUID 版本 1。但是如果您需要不可预测或随机的值,则使用 UUID 版本 4。

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


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

How to generate time based UUIDs?

关于java - 为大数据生成最佳 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102330/

相关文章:

ruby-on-rails - Rails + Postgres 迁移 - 为什么我收到错误 "PG::UndefinedFunction: ERROR: function gen_random_uuid() does not exist"?

Java线程: Pause/Resume Thread vs Terminiate/Start New Thread

java - 读/写 xBASE (DBASE 3-5/DBF) 文件

java - 将 EditText 存储在数组中并显示在 TextView 中

linux - ec2 - 4 ubuntu 12.04 t2.micro 相同实例上的 Hadoop 2.2.0 多节点集群设置

Java UUID 的长表示

java - Azure Web 应用服务日志记录中的 Spring Boot MVC 未按预期工作

hadoop - 如何使用Apache FLUME将数据写入HA Hadoop QJM?

java - 如何在hadoop中为Java使用CombineFileInputFormat?

python - 如何使用 Django 创建短 uuid