生成唯一ID(检查与否)?

Roy*_*mir 2 .net architecture performance

考虑youtube视频网址(例如):

例如:

http://www.youtube.com/watch?v=-JVkaMqD5mI&feature=related
Run Code Online (Sandbox Code Playgroud)

我在说这个-JVkaMqD5mI部分.(长度= 11)

让我们计算选项:

a-z = 26     |
A-Z = 26     |_______ >    26+26+10+2 = 64 optional chars in 11 places  = 64^11 = 73786976294838206464
0-9 = 10     |
-_ = 2       |
Run Code Online (Sandbox Code Playgroud)

我仍然想知道,当他们为新视频生成新ID时,他们是否仍然检查是否已经存在

我确定他们有一些" 已经生成的ID "的列表(数据库或缓存)......(如果他们这样做,他们每次都会获取数据库?还是在缓存中?或者......?)

或者他们依靠的1.355252...e-20机会差不多0.(但仍然!= 0)

针对这种情况的最佳实践解决方案是什么?

Rad*_*094 6

好吧,仅仅因为他们在视频上使用字母数字ID,并不意味着他们只是随意生成这些字符.只是因为那个字符串看起来像随机垃圾给你,我向你保证它不是随机的,那里隐藏着很多信息.

如此快速的答案:不,生成一个随机的字母序列是不可行的,然后a)希望没有碰撞或b)检查可能数十亿的记录,看看你是否已经有了.

更容易保持中央"使用的最后一个ID"并且具有从"最后使用的ID"移动到"使用下一个ID"的算法,其方式在数学上保证生成先前未使用的ID.在顺序ID号的情况下,公式只是f(n + 1)= f(n)+1 (例如,使用的最后一个ID是150,下一个将是151 ..保证未使用到目前为止)但你可以设计你的自己的公式,以满足您的需求.

  • *"检查可能数十亿条记录,看看你是否已经拥有."*为什么这不可行? (3认同)