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)
针对这种情况的最佳实践解决方案是什么?
好吧,仅仅因为他们在视频上使用字母数字ID,并不意味着他们只是随意生成这些字符.只是因为那个字符串看起来像随机垃圾给你,我向你保证它不是随机的,那里隐藏着很多信息.
如此快速的答案:不,生成一个随机的字母序列是不可行的,然后a)希望没有碰撞或b)检查可能数十亿的记录,看看你是否已经有了.
更容易保持中央"使用的最后一个ID"并且具有从"最后使用的ID"移动到"使用下一个ID"的算法,其方式在数学上保证生成先前未使用的ID.在顺序ID号的情况下,公式只是f(n + 1)= f(n)+1 (例如,使用的最后一个ID是150,下一个将是151 ..保证未使用到目前为止)但你可以设计你的自己的公式,以满足您的需求.