我正在尝试创建一个类似于 youtube/v=xxx
在外观和行为上的 URL。简而言之,用户将上传文件并能够通过该 URL 访问它们。此 URL 代码需要是某种形式的数据库主键,以便页面可以收集所需的数据。我是数据库新手,这更像是一个数据库问题。
在我的数据库中,我有一个自动增量主键,用于访问文件数据。我想使用该号码来创建文件的 URL。我开始研究不同的哈希函数,但我担心冲突。我不希望两个不同文件使用相同的 URL。
我也考虑使用uniqid()
作为我的主键CHAR(13)
,直接使用它。但有了这个,我担心效率。另外环顾四周,我似乎找不到太多关于它的信息,所以这可能是一个奇怪的想法。更不用说在生成 id 时我需要测试冲突,这可能是低效的。自动增量要容易得多。
有什么好的解决办法吗?我的任何一个想法都会奏效吗?如何从自动递增的主键生成唯一 URL 并避免冲突?
我倾向于我的第二个想法,它不会非常有效,但是当需要将东西添加到数据库(测试冲突)时会导致最大的性能缺陷,这对于最终用户来说只会发生一次。另一个性能缺点可能是实际查找字符而不是整数。但我主要担心这是不好的做法。
编辑:
一个简单的解决方案就是直接使用自动递增的值。叫我挑剔,但这看起来有点难看。