1
brader 2023-09-07 18:33:12 +08:00
我们肯定是越长和字符集越多越容易随机和生成效率高,可是老板希望越短越好。。。
|
2
zictos 2023-09-07 18:49:35 +08:00
数据库 id 自增就好了,纯数字。
京东的订单号也不是很长。 |
3
lovedebug 2023-09-07 18:52:38 +08:00
有带时序的 UUID 算法
|
4
lecher 2023-09-07 18:57:36 +08:00 4
请考虑以下场景
1. 订单出问题了,客户通过电话能不能正确报出订单号进行处理 2. 订单传递的时候有没有数值转换导致精度丢失的情况 3. 只看订单号,不额外查询任何数据,能从订单号中获得什么信息,哪些信息是用户关心的,哪些是客服关心的,哪些是研发人员关心的 4. 订单的生成的真实 qps 诉求是多少,通过什么方式可以在保证一致性的前提下增加生成的 qps |
5
haython 2023-09-07 19:01:30 +08:00 2
还有一点,不能让人根据单号猜出每天的单量
|
7
zictos 2023-09-07 20:27:22 +08:00
@kkk9 #6 我不知道,不清楚怎样才是合适的,一般规模小的需求每天也没多少订单的吧?应该比较随意。我不认为楼主是那种很大规模的商城之类的需求。
另外像京东的订单号是 12 位数字,好像也看不出有什么意义,而且是从小到大来的。京东还有售后单号之类的,基本也是很简短的数字。 wordpress 的文章 id 一般也是使用自增 id ,我觉得这个 id 也是很重要的,一旦定下来就不建议轻易改的,不然影响搜索引擎收录。还有很多商城的商品 id ,也是按顺序来的,这个不知道是不是自增的。 |
8
giaodadi 2023-09-07 20:29:19 +08:00 1
订单和用户关联能大幅避免重复
|
9
zhuoyue100 OP @zictos 京东这种比较短的纯数字是怎么生成的?预先生成好存到数据库,用的时候在取?还是设置自增起始数值+步长?还是有别的算法生成?
|
11
zictos 2023-09-08 13:25:49 +08:00 via Android
@kkk9 我觉得即便是京东也不是很在乎会不会暴露,因为每天都有大量的下单又未付款的。
@zhuoyue100 京东的订单号有可能不是自增,但返修单号更短,更像是自增。也许可以先算好再存入数据库吧,每次要创建新订单时先获取数据库中最后一个订单号,在此基础上加上一个随机数,比如加一个 1000 以内的随机数,再存入数据库。 |