【问题标题】:Preventing UUID collision防止 UUID 冲突
【发布时间】:2015-12-07 21:06:28
【问题描述】:

伙计们,我有初学者 mysql/php 问题。

我有 3 项“协作”来生成 UUID 的服务。 Service3 接收来自唯一用户的唯一请求,并为他们提供来自 DB 的唯一 ID(UUID)。用户代表他们的公司,我不能允许一个公司中有两个 ID。Service2 必须知道何时 DB 中的免费 UUID 级别太低。然后,我有 Service1 (Node.js),它接受来自 Service2 的请求并提供一个 UUIDs(JSON) 包作为响应。如果 DB 中的 UUID 级别太低,Service2 将它们保存到数据库中(太低意味着级别等于传入的 UUID 包,相同数量的 UUID)。

UUID 在一个表中,当有数百万个 UUID 时请求变得太慢。当我使用更大的数字时,如何有效地防止重复/冲突。希望我是清楚的。

编辑:我让它独一无二,但是当我运行“SELECT ...”来检查是否有重复项时,检查数百万行需要很长时间。

【问题讨论】:

  • 在表中设置id unique,RDBMS 会阻止插入重复并给你一个错误,对吧?
  • 每 70 个 trillion UUID 的 probability of a collision 为 0.0000000005。别担心。真的。来自 MySQL 文档:“UUID 被设计为在空间和时间上全球唯一的数字。对 UUID() 的两次调用预计会生成两个不同的值,即使这些调用是在两台未连接的单独计算机上执行的对彼此。”有关更多信息,请参阅此答案:stackoverflow.com/questions/9679860/mysql-uuid-when-not-unique
  • ^“别管它”的意思是:把字段设为unique然后不用管它...
  • 很可能我会走“不担心”的道路,但如果有一些程序性预防,我会很高兴。 :D 谢谢
  • 当使用正确的 UUID 时,流星体撞击您的服务器的可能性要大得多。您会为此构建一些程序性预防措施吗?

标签: php mysql node.js web-services


【解决方案1】:

我让它独一无二,但是当我运行“SELECT ...”来检查是否有 重复,检查数百万行需要很长时间。

设置索引

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多