InnoDB 表的数据写入顺序能和 B+树索引的叶子节点顺序一致的话,这时候存取效率是最高的。
1
lenqu 2020-08-11 14:23:55 +08:00 1
个人观点,如果表数据不存在整列删除情况,主键 id 就很合适
|
2
wellsc 2020-08-11 14:24:26 +08:00 via iPhone 1
雪花也可以自增的
|
3
ifsclimbing 2020-08-11 14:33:48 +08:00 1
分库分表用 雪花 id 吧
|
4
opengps 2020-08-11 14:44:21 +08:00 1
怕爬虫规律性穷举的一定不能用自增 id
|
5
damai0419 2020-08-11 16:23:16 +08:00
雪花是递增趋势. 不是严格递增的吧. 不分库分表,感觉没必要上分布式 id.
|
6
wangyzj 2020-08-11 16:24:45 +08:00
业务量不是非常巨大,主键自增足够了
|
7
love 2020-08-11 16:26:16 +08:00
|
8
egfegdfr 2020-08-11 16:40:44 +08:00
看数据的重要性吧,一些非重要的数据就直接自增了(角色、权限), 重要数据用雪花 id (用户、产品、订单、 支付流水)
|
9
takemeaway 2020-08-11 17:12:31 +08:00
|
10
qwerthhusn 2020-08-11 17:20:42 +08:00 1
用雪花,返回 json 时还要处理下格式,不然 js 读到大数字然后精度不足导致数据不对。。。
|
11
PopRain 2020-08-11 17:20:59 +08:00
数据库主键最大的问题是获取主键需要访问数据库,如果有主从表,比较麻烦
|
12
guisheng 2020-08-11 17:21:02 +08:00
目前采用主键自增+hashids 加密(就是处理麻烦了点其它目前无感)。
|
13
sunmoon1983 2020-08-11 20:26:18 +08:00
@qwerthhusn 对,我曾经也被这个问题困扰了,用了 json-bigint 也不好使,没办法,只能在后台先把 bigint 转成字符串再返回给前端
|
14
EminemW 2020-08-11 21:55:37 +08:00 via iPhone
一起用
|
15
littlewing 2020-08-12 00:52:15 +08:00
主键自增+一个雪花 ID
|
16
yidinghe 2020-08-12 01:08:30 +08:00 via Android
有需要 ID 严格递增的话就用自增
|
17
locoz 2020-08-12 01:42:51 +08:00 1
这问题在前面这个帖子( https://www.v2ex.com/t/686977 )里的文章和回复中有一堆例子,还有各种性能问题、部署问题之类的讨论,你可以看看。
@takemeaway #9 能按 ID 顺序爬当然直接穷举 ID 啊,数据又全又不需要管列表页,增量还方便... |
18
xuanbg 2020-08-12 08:44:10 +08:00
有条件当然不要用数据库自增。用自增有两个坏处:
1 、id 可猜测,不对,应该是可预测。简直是为别人爬数据大开方便之门。 2 、新增数据返回 id 还得额外费手脚,写主从数据时很恶心。 |
20
securityCoding 2020-08-12 09:51:41 +08:00
@sunmoon1983 java 的话统一配置一下序列化策略就行了
|
21
keshawnvan 2020-08-12 10:35:09 +08:00
分布式场景用雪花挺好的: https://juejin.im/post/6844904132550066183
|
22
594duck 2020-08-12 11:27:44 +08:00
如果不是百库百表而且要强一致没必要使用雪花 ID 吧。
|
23
sunmoon1983 2020-08-12 12:56:18 +08:00
@securityCoding 我用的 go,我不知道有没有那么 NB 的功能
|
24
inwar 2020-08-12 13:47:12 +08:00 via Android
@sunmoon1983 如果是 jackson 可以定义 Long 类型的序列化方式,直接转成 string
|
25
yourssheng 2020-08-12 14:21:55 +08:00
@damai0419 数据库主键也不是严格递增也会有 1,2,4,5 这种情况
|