为什么通常的做法是使用双射函数和递增的数字序列来缩短URL?

时间:2014-06-26 21:30:09

标签: algorithm url-shortener

我已经阅读了问题和回答How to code a URL shortener?,所有数学都很有意义。我的问题是,既然你必须回到数据库/数据存储区进行查找,为什么不在字母表中生成一个随机短字符串并将其与数据存储区中的完整URL一起存储,而不是将其转换回数字ID?

在我看来,这节省了在服务器上进行任何数学运算,降低了复杂性,并消除了短URL空间的“可行性”(对于我的用例,这很关键;不能猜到URL)。如果使用专为key->值查找而设计的NoSQL存储,似乎没有任何潜在的性能问题,即从字符串中查找完整的URL值而不是数字ID。

我想知道我是否遗漏了什么。

1 个答案:

答案 0 :(得分:3)

随机短串方法违反了缩短函数的双重性。

鉴于两个网址ab以及您的缩短函数f,应该保证: 然而,如果a = b然后f(a) = f(b),由于f生成随机值,因此违反了主观性。

但是,如果您只是想缩短任何特定网址,并且不介意相同网址的后续缩写会生成不同的值,那么您在上面概述的方法会更有效。