Facebook 中的每个对象都可以有自己的唯一标识符。这意味着,例如,如果 FB 组的 ID 为 42,则应用程序、组或任何其他对象不能具有相同的 ID。这可以允许 Web 应用程序将 ID 直接映射到图片的 URL。
Facebook 正在使用一个 64 位标识符,该标识符很可能是用信息编码的。因此,我认为您不会看到像 42 这样小的 id。信息可以按以下方式编码:
64 bits total
1st 16 bits = Shard ID (where is the object is stored)
2nd 16 bits = Type ID (app, group, person)
Remaining 32 bits = Local unique ID (incremental id for example)
使用一些按位逻辑,您可以从标识符中提取类型。尽管如果您有 ID 到图片 URL 的直接 1 对 1 映射,则可能不需要它。
我实际上并不知道 FB 的后端是如何构建的。以上只是一个示例实现。如果您有具有 32 位 id 的表,您仍然可以使用编码类型转换为 64 位,并使所有标识符无论对象类型如何都是唯一的。
这可能是矫枉过正,特别是如果您在生产中有一个现有的结构。我只是试图解释它是如何做到的,以及 Facebook 是如何做到的。