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

Pet*_*ter 5 algorithm url-shortener

我已阅读问题和答案如何编写 URL 缩短程序?所有的数学都非常有意义。我的问题是,既然您无论如何都必须返回数据库/数据存储区进行查找,为什么不在字母表中生成一个随机短字符串并将其与完整的 URL 一起存储在数据存储区中,而不是将其转换回数字ID?

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

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

Ric*_*lly 4

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

给定两个 URLab以及您的缩短函数f,应该保证:如果a = b那么f(a) = f(b),但是,由于 f 生成随机值,因此违反了双射性。

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

  • @Rhymoid我同意你的基本观点,但我认为你在说“满射”时打算“单射”。 (3认同)