目前在我的Node.Js应用程序中,我使用node-uuid
模块为我的数据库对象提供唯一ID。
使用该模块中的uuid.v1()
函数,我得到类似
81a0b3d0-e4d0-11e3-ac56-73f5c88681be
现在,我的请求很长,有时在一个查询中有数百个节点和边。所以你可以想象它们变得巨大,因为每个节点和边缘都必须有一个唯一的ID。
您知道我是否可以使用较短的ID系统,以便在我的物品数量增加后不会遇到任何问题?我的意思是我知道我可以只使用前8个符号(因为有36 ^ 8> 2个Trl组合,但它们随机生成时的表现如何?随着我的节点数增加,什么是随机生成的ID不会落入已存在的ID的可能性吗?
谢谢!
答案 0 :(得分:1)
如果您真的关心uuid碰撞,您可以随时进行查找以确保您没有使用该uuid行。关键是在给定当前uuid生成器的情况下,总是存在非常低但非零的碰撞机会,特别是对于较短的字符串。
这是一篇更详细讨论它的帖子 https://softwareengineering.stackexchange.com/questions/130261/uuid-collisions
一种替代方法是使用顺序ID系统(自动增量)而不是uuids。