
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 请考虑以下场景 1. 订单出问题了,客户通过电话能不能正确报出订单号进行处理 2. 订单传递的时候有没有数值转换导致精度丢失的情况 3. 只看订单号,不额外查询任何数据,能从订单号中获得什么信息,哪些信息是用户关心的,哪些是客服关心的,哪些是研发人员关心的 4. 订单的生成的真实 qps 诉求是多少,通过什么方式可以在保证一致性的前提下增加生成的 qps |
5 displayabc 2023-09-07 19:01:30 +08:00 还有一点,不能让人根据单号猜出每天的单量 |
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 订单和用户关联能大幅避免重复 |
9 zhuoyue100 OP @zictos 京东这种比较短的纯数字是怎么生成的?预先生成好存到数据库,用的时候在取?还是设置自增起始数值+步长?还是有别的算法生成? |
11 zictos 2023-09-08 13:25:49 +08:00 via Android @kkk9 我觉得即便是京东也不是很在乎会不会暴露,因为每天都有大量的下单又未付款的。 @zhuoyue100 京东的订单号有可能不是自增,但返修单号更短,更像是自增。也许可以先算好再存入数据库吧,每次要创建新订单时先获取数据库中最后一个订单号,在此基础上加上一个随机数,比如加一个 1000 以内的随机数,再存入数据库。 |