algorithm - 当我只能使用数据库 ID 时,为什么要对 URL 缩短器使用长算法

标签 algorithm performance url url-shortener system-design

<分区>

我看到的关于设计缩短 URL 的例子都建议首先在数据库中创建一个顺序 ID 列,然后使用这个数据库生成的 ID 在将它转换为 base 62 之后获得缩短的 URL。我的问题就是,为什么不直接使用数据库生成的 ID 作为缩短的 ID?

例如,如果我将 URL 保存在数据库 www.google.com 中,而数据库为其生成的 ID 是 348,那么为什么不将其用作缩短的 URL?例如 bit.ly/348

最佳答案

比方说,您正在配置您的系统以容纳 90 亿个 url(估计有 1.8 billion web sites in 2018 ,考虑到每个网站平均 5 个 url)。假设您将使用 (a-z, A-Z, 0-9) 对缩短的 URL 进行编码。如果您将 x 称为表示 90 亿个 URL 的最小字符数,那么将是满足 x^62 > 9*10^9 的最小整数。

Log (9*10^9) to the base 62 = 6

因此,您将需要 6 个字符才能唯一标识所有 60 亿个 url

关于algorithm - 当我只能使用数据库 ID 时,为什么要对 URL 缩短器使用长算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52468387/

相关文章:

c# - C++ (Intel) vs Java (Hotspot) vs C# 基准问题(包括代码和结果)

url - 如何在 Web API Controller 中获取页面 URL?

php - 在扩展前的 url 末尾 append 字符串

c - 如何在不使用排序算法的情况下将两个已排序的数组合并到第三个数组中?

arrays - 在常量内存空间中应用排列的算法

c - 如何测量一小段 C/汇编代码的速度?

python - 给出起始字符时搜索速度变慢是违反直觉的

javascript - github UI 如何在没有回传的情况下导航目录?

java - 如何在大数字串中找到重复的数字子序列?

algorithm - 表示连续概率分布