【发布时间】:2011-05-23 07:54:53
【问题描述】:
有谁知道 Twitter 上的最大用户 ID 是多少?也就是说,现在大约有 2 亿用户,那么 id 的范围会在 1 到 2 亿之间吗?我发现在那个范围内有些 id 没有被使用。
我有一个 python 脚本,它基本上是在访问以下 url:
"/1/statuses/user_timeline/" + str(user_id) + ".json?count=200"
谢谢,
【问题讨论】:
有谁知道 Twitter 上的最大用户 ID 是多少?也就是说,现在大约有 2 亿用户,那么 id 的范围会在 1 到 2 亿之间吗?我发现在那个范围内有些 id 没有被使用。
我有一个 python 脚本,它基本上是在访问以下 url:
"/1/statuses/user_timeline/" + str(user_id) + ".json?count=200"
谢谢,
【问题讨论】:
Twitter API 表示id 是一个整数“大于 53 位”,并且 64 位整数可以安全地保存该值。
尽管如此,还是建议使用字符串表示id_str“以防万一”!?!
【讨论】:
没有人知道。
关于 Twitter 真正拥有多少用户的问题进行了讨论。
进行了很多测试以及对 id 范围等的探测。
结果是id在很长一段时间内都是按顺序递增的,但随后它们之间有大约10个左右的常规间隙,有时也似乎是完全随机的。
我不知道收集这些信息的准确性如何,目标是别的,但我想你明白了。
从技术角度来看,我不希望在像 twitter 这样大的网络中还有其他任何东西。 我很确定 ID 是分片的,这意味着它们被分配在特殊的区域或服务器中。 因此,例如,如果您的 ID 等于 mudolo 17,我知道我必须查看该服务器。或者在那个国家。什么的。
或者,当新用户注册时,服务器可能只有自己的前缀或残留类来分配 id,以避免复制问题。
在大多数情况下,像这样泄露信息也不常见,或者“不太酷”。 不要问我为什么,这只是我的经验,公司希望尽可能少地向外界展示信息。
这包括没有可复制的跨参数 ID 递增系统。
它也容易受到某种有害攻击、不需要的爬网等类似的攻击。
所以我的意思是。
没有办法给你一个可靠的答案。它不应该是必要的。 你应该设计你的应用程序来处理每一种可能的情况。
如果你想知道你应该让你的数据库字段有多大才不会发生任何冲突。
我认为现在整数应该没问题。 (即使在 32 位系统上)
但随时准备升级。
特别是不要假设它会保持数字。它只是一个独特的字符串!
【讨论】:
Twitter API 不保证 user_id 是一个单调递增的值。它只是一个“引用对象的永久唯一 ID”(来自 API docs)。这意味着他们将来可能会重用(已删除用户的)ID,甚至以半随机方式分配值。 ID 甚至可能不是按顺序分配的。
过度解读这个值,例如表示注册用户的数量可能不是很可靠。
【讨论】:
user_id 来防止与有效 ID 混淆。