Google+ 的用户 ID 很长
104560124403688998123
(21 个字符),不能输入到 BIGINT 字段(非无符号)
对于此类 ID,您将使用哪种列类型?
我不认为 varchar 是个好主意
Google+ 的用户 ID 很长
104560124403688998123
(21 个字符),不能输入到 BIGINT 字段(非无符号)
对于此类 ID,您将使用哪种列类型?
我不认为 varchar 是个好主意
如果 google id 的长度是可预测的,请使用 static char(length)
,在其上添加索引并创建(内部)整数主键。在您的应用程序内部,您将数据映射到整数主键。因此,如果有人通过 google id 进行搜索,您可以查找该 google id 的整数主键,并使用整数主键进行其余查询。
所以架构看起来像:
映射表:
id (integer) | google_id (char(length))
因此,如果您创建另一个表(如评论等),请使用主键id
,如果您想查找某个 googleid 的所有评论,请先获取内部 id,然后加入评论。这样,您在具有可预测长度的静态索引 char 字段上只有一个查询条件,所有其他连接和查询都将使用整数键。
我会使用与 Facebook 相同的方法:varchar。
我找不到谷歌的官方推荐,但我使用十进制 21,0可以正常工作。
在 appengine 上的 python 中,我使用 ndb.StringProperty 保存数据并使用正则表达式 \d{15} 进行验证,因此留出了一点余地。知道什么是真正的正则表达式来验证这个字段真是太好了