gpt4 book ai didi

php - 为什么网站使用随机字母数字 ID 而不是数据库 ID 来识别内容?

转载 作者:可可西里 更新时间:2023-11-01 13:36:18 25 4
gpt4 key购买 nike

为什么像 YouTube、Imgur 和大多数其他网站使用随机字符作为它们的内容 ID,而不是像 MySQL 中自动递增创建的那样只是序列号?

解释一下我的意思:

在网址中:https://www.youtube.com/watch?v=QMlXuT7gd1I

末尾的 QMlXuT7gd1I 表示该页面上的特定视频,但我假设该视频在数据库中也有一个唯一的数字 ID。他们为什么要创建和使用这个字母数字字符串,而不是只使用视频的数据库 ID?

我正在创建一个网站来识别上述 URL 中的内容,但我目前只使用数据库 ID。我正在考虑改用随机字符串,因为所有主要网站都这样做,但我想在实现之前知道为什么这样做。

谢谢!

最佳答案

一些网站这样做是因为分片。

当你只有一个进程(一个服务器)写入时,可以在没有重复id的情况下自动增加id,但是当你有多个服务器(具有多个进程)写入内容时,比如youtube,这是不可能的不再使用自动增量 ID。避免重复的同步成本将是巨大的。

例如,如果您阅读 mongodb's ocjectid documentation你可以看到 id 的这个结构:一个 4 字节的值,表示自 Unix 纪元以来的秒数,一个 3 字节的机器标识符,一个 2 字节的进程 ID,以及一个 3 字节的计数器,以随机值开头。

最后只有12个字节。问题是当你用十六进制表示时,它看起来像 24 个字节,但那只是当你显示它时。

该系统的另一个优点是id中包含了时间戳,所以可以通过id解耦得到时间戳。

关于php - 为什么网站使用随机字母数字 ID 而不是数据库 ID 来识别内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27540702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com