【问题标题】:Long IDs vs Short IDs长 ID 与短 ID
【发布时间】:2014-07-16 13:59:22
【问题描述】:

目前在我的 Node.Js 应用程序中,我使用 node-uuid 模块为我的数据库对象提供唯一 ID。

使用该模块中的uuid.v1() 函数我得到类似的东西

 81a0b3d0-e4d0-11e3-ac56-73f5c88681be

现在,我的请求很长,有时一个查询中有数百个节点和边。所以你可以想象它们变得巨大,因为每个节点和边都必须有一个唯一的 ID。

您知道我是否可以使用更短的 ID 系统以便在我的商品数量增加后不会遇到任何问题?我的意思是我知道我可以只使用前 8 个符号(因为有 36^8 > 2 Trl 组合,但是当它们随机生成时它的性能如何?随着我的节点数量增加,机会是多少?随机生成的ID不会落入已有的ID吗?

谢谢!

【问题讨论】:

    标签: node.js uuid uniqueidentifier


    【解决方案1】:

    如果您真的担心 uuid 冲突,您可以随时简单地进行查找,以确保您没有与该 uuid 发生冲突。关键是,在给定当前 uuid 生成器的情况下,发生冲突的可能性总是非常低但非零,尤其是对于较短的字符串。

    这是一篇更详细地讨论它的帖子 https://softwareengineering.stackexchange.com/questions/130261/uuid-collisions

    一种替代方法是使用顺序 ID 系统(自动增量)而不是 uuid。

    【讨论】:

    • 大多数数据库不会插入具有现有 ID 的行。他可能不需要额外查找。
    • @Jephron - 关于我可以使用的 node.js 模块的任何建议?
    • 你只是想确保你没有插入一个 UUID 已经存在的行,对吧?我不知道有哪个模块可以自动执行此操作,但检查自己非常简单。您甚至可以创建自己的模块来完成它。只需使用您生成的 UUID 查询您的数据库,以确保不存在具有该 UUID 的行。如果是,请生成一个新的 UUID 并重试。只是出于好奇,有什么理由不能只使用自动递增的键吗?
    • 作为一个更干净的选择,stackoverflow.com/questions/20479971/…
    猜你喜欢
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2021-10-24
    • 2014-10-08
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多