.net - 生成唯一 ID(检查或不检查)?

标签 .net performance architecture

<分区>

考虑 youtube 视频 url(例如):

例如:

http://www.youtube.com/watch?v=-JVkaMqD5mI&feature=related

我说的是 -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       |

我仍然想知道,当他们为新视频生成新 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..保证未使用所以far) 但您可以设计自己的公式以满足您的需要。

关于.net - 生成唯一 ID(检查或不检查)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544006/

相关文章:

linq - 使用 ORM 和 LINQ 在架构上是否不合理?

c# - 从 C# .NET 应用程序连接到 SAP Web 服务

.net - 类似于 VS 2010 Ultimate 的依赖关系图?

c# - 批量插入最好的办法是什么? + 帮助我完全理解我目前的发现

Java 并行上传

angular - 如何测试现代 Angular 应用程序的性能/负载

c# - 业务逻辑层和数据访问层 : circular dependency

c# - 将类泛型类型约束为元组

mysql - 如何使用MySql获得高速性能?

architecture - Enterprise Architect 中的继承