<分区>
我看到的关于设计缩短 URL 的例子都建议首先在数据库中创建一个顺序 ID 列,然后使用这个数据库生成的 ID 在将它转换为 base 62 之后获得缩短的 URL。我的问题就是,为什么不直接使用数据库生成的 ID 作为缩短的 ID?
例如,如果我将 URL 保存在数据库 www.google.com 中,而数据库为其生成的 ID 是 348,那么为什么不将其用作缩短的 URL?例如 bit.ly/348
<分区>
我看到的关于设计缩短 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/