一般用户表的用户 ID,是不是设计成字符串的比较多

2023-03-01 13:17:49 +08:00
 cjbi

如题,请说明理由,表关联也是用字符串吗?

4867 次点击
所在节点    数据库
59 条回复
Chad0000
2023-03-01 13:21:34 +08:00
整型自增。

放心,系统下线了用户都不会有那么多。
zoharSoul
2023-03-01 13:23:52 +08:00
不是, 基本都是整形
shyangs
2023-03-01 13:30:06 +08:00
別和百度貼吧踩同一個坑。

哪天產品拍腦袋, 說百度帳號(用戶名)要可以讓使用者自由地更名, 你要學貼吧在 username 裡加各種符號避免重複?
shyangs
2023-03-01 13:34:10 +08:00
承上,所以區分 id 和 name,

id 用整型自增,系統決定,使用者不可更改 id ,只能改 name 。
justfindu
2023-03-01 13:36:32 +08:00
自增, 如果你要避免被扫, 那就 uuid 呗
op351
2023-03-01 13:36:40 +08:00
因为用主键的整型自增列会暴露其他用户,所以不会用主键的整型自增列
而是自增列之外设计一个单独的用户 ID 列 使用三方库根据日期之类的生成不会重复的字符串
xiaoliu926
2023-03-01 13:44:28 +08:00
@op351 我这边的项目都是雪花算法生成主键 id 的,安全的很
LeegoYih
2023-03-01 13:48:38 +08:00
bigint
实际接口都会鉴权,不存在通过 ID 被暴力遍历的情况
op351
2023-03-01 13:54:13 +08:00
@xiaoliu926
不用整型自增就行
我也是之前用 fiddler 分析某 app 的接口才意识到直接使用自增会导致用户信息泄露-。-
NoKey
2023-03-01 13:57:38 +08:00
有时候对外叫 userID ,他实际不是 id ,用户 id ,要区分业务层面的 id ,和数据层面的 id ,你讲的是哪一个?😆
cjbi
2023-03-01 14:00:21 +08:00
@NoKey 上面都提到了,主要怕被看出规则,我目前有个项目是用自增做关联字段,另外弄个字段+随机字符串作为用户唯一 ID ,总感觉很奇怪
chendy
2023-03-01 14:05:51 +08:00
自增,怕被爆破就在接口层加一层编码规则处理,变成火星文(比如加上固定前后缀然后取字节然后翻转然后 base64 啥的)
superedlimited
2023-03-01 14:09:25 +08:00
为什么 mongodb 自动生成的_id 是一串字符串呢
abelyao
2023-03-01 14:09:45 +08:00
已经习惯了能用 uuid 就用 uuid 了,或者 nanoid - https://github.com/ai/nanoid
god7d
2023-03-01 14:10:55 +08:00
guid
melkor
2023-03-01 14:11:14 +08:00
用自增 ID 的这些建议,不考虑横向 sharding 问题吗?雪花生成全局唯一 ID 就行了
fiypig
2023-03-01 14:13:10 +08:00
我第一家公司就用字符串的 用户账号, 现在的用自增,也有用 UUID ,我还没遇到过。。
manasheep
2023-03-01 14:13:59 +08:00
无脑 GUID ( UUID )就可以了,MongoDB 的话用它自己的 ObjectID 也行
dk7952638
2023-03-01 14:15:17 +08:00
id 是给系统用的编码,no 是给人用的编码
id 最好是自增,如果是分布式可以用雪花算法,自增可以提高数据库性能,还能实现游标分页
no 一般都是有意义的,比如快递单号
tool2d
2023-03-01 14:17:43 +08:00
爆破很好处理的,你 api 加密一下就可以了。或者加个一次性访问权限,nonce 那种参数。

只要索引建的好,字符串查找速度也不慢的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/920125

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX