我正在寻找一种算法,该算法可生成既适用于URL的外部使用又符合以下要求的持久性的标识符:
我研究了各种解决方案,但发现的所有问题都有一些重大的折衷。例如:
编辑:为什么这被标记为脱题?需求描述了可以为之提供众多合法解决方案的特定问题。实际上,这里的一些解决方案非常好,我在选择一个标记为答案的解决方案时很挣扎。
如果可能的话,我会将用户需求(简短,易读)和数据库需求(增量,快速索引)分开。面向用户的需求发生了变化。您不需要修改表,因为明天您决定更改面向用户ID的长度或其他详细信息。
一种方法是使用用户友好的字符(例如
23456789ABCDEFGHJKLMNPQRSTUVWXYZ
随机生成)来生成您的ID 。
但是,当插入数据库时,不要使该值成为它引用的记录的主键,甚至不要将其存储在该表中。使用标识主键将其插入到自己的表中,然后将其int
或bigint
键与您的记录一起存储。
这样,您的主表可以具有增量主键。如果您需要通过记录的“友好” ID来引用记录,则可以加入友好ID表。
我的猜测是,如果您生成的这些ID数量足够大而您担心索引性能,那么人类用户检索这些值的速度将大大降低。因此,在友好ID表中对随机值的查找稍微慢一点将不会成为问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句