facebook 使用什么数据类型来存储用户 ID,对于这种现场性能和可伸缩性的角度来说,最好的数据类型应该是什么。
如果一个使用 int 4 字节那么我猜它不够大,如果 8 字节 int 那么如何为每个用户分配随机数或相同的字符串。
那么,给用户一个固定长度的随机 id 的最佳方式是什么,同时考虑到可扩展性和性能呢?
facebook 使用什么数据类型来存储用户 ID,对于这种现场性能和可伸缩性的角度来说,最好的数据类型应该是什么。
如果一个使用 int 4 字节那么我猜它不够大,如果 8 字节 int 那么如何为每个用户分配随机数或相同的字符串。
那么,给用户一个固定长度的随机 id 的最佳方式是什么,同时考虑到可扩展性和性能呢?
好问题。Facebook ID 和 Tweet ID 一样会导致问题。两者都超过了 32 位整数范围。根据编程语言的细节和目的(例如数据库、代码等),您可能想要使用浮点数或双精度数,但根据我的经验,将它们转换为字符串是令人满意的。
在 MySQL 中,如已标记,提供的是BIGINT数据类型,它足够大以将这些 ID 存储为数字。棘手的部分是当您读取这些值并在程序代码中处理它们时。那些大于系统架构/编程语言允许的最大值的可能会导致错误或被截断,从而导致不一致。
如果要在 MySQL 中使用固定长度的大 ID,一个好的做法是使用CHAR类型和 HEX 格式,也可以使用UUID格式。
使用 BIGINT(64) 将 Facebook 用户 ID 存储在 MySQL 数据库表中。
给你:https ://developers.facebook.com/blog/post/45/