我试图在外观和行为中创建类似于YouTube的/v=xxx
的网址。简而言之,用户将上传文件并能够通过该URL访问它们。该URL代码需要是某种形式的数据库主键,以便页面可以收集所需的数据。我是数据库新手,这比数据库问题更重要。主键的唯一网址
在我的数据库中,我有一个自动递增主键,可以访问文件数据。我想用这个数字来创建文件的URL。我开始研究不同的哈希函数,但我担心碰撞。我不希望两个不同文件的URL相同。
我也考虑使用uniqid()
作为我的主键CHAR(13)
,并直接使用。但是,我担心效率问题。同样环顾四周,我似乎无法找到很多关于它的内容,所以这可能是一个奇怪的想法。更不用说,当生成可能效率低下的ID时,我需要测试碰撞。自动增量更容易。
有没有什么好的解决方案呢?我的想法是否有用?如何从自动递增的主键生成唯一的URL并避免冲突?
我倾向于第二个想法,效率不高,但是当需要将事物添加到数据库(测试碰撞)时会导致最大的性能缺陷,而最终用户只需要发生一次。另一个性能缺点可能在于实际查看字符而不是整数。但我主要担心这是不好的做法。
编辑:
简单的解决办法是只需直接使用自动递增值。叫我挑剔,但看起来很丑陋。
你预计你会有多少记录? – sberry 2012-08-16 16:50:11
为什么你认为使用自动递增的值是丑陋的? – Briguy37 2012-08-16 16:52:52
@sberry这真的取决于,从一开始就不是很多。但我认为值得注意的是,2个月后文件将被删除。因此,一次只能有几千人乐观。 – SpaceFace 2012-08-16 16:54:18