订单号的设计

订单号的由来

对于一般的数据而言,表的设计,就一个主键。
但是,对于订单数据来说,除了流水号这个主键之外,还有一个订单号。
流水号,供系统内部使用,即供技术层面使用。
订单号,供系统外部使用,是给人看的。

订单号的应用场景

1.电商行业
2.支付行业
3.物流行业

如何设计订单号

流水号,作为主键,和其他主键一样,只要保证唯一性即可,具体实现方法,一般是采用数据库序列号递增的设计。

订单号,由于是给人(用户、售后、运营等)看的,所以,与流水号相比,就多了两点要求:
1.可读性
2.安全性

可读性
订单包含一些基本信息,方便人阅读,这个不多说。

安全性
在可读性的基础之上,还要确保数据的安全性,即不能让人看出来订单的交易量。

总结
流水号,只要确保唯一性即可。

订单号,需要考虑以下3点要求:
1.唯一性
2.可读性
3.安全性

技术实现

1.对于可以拿到用户id的情况,订单号生成规则如下:

  • 时间戳
  • 用户id/商家id
  • 随机数字

用户id,泛指能够唯一标识当前用户的id。最好是公开的、非隐私的数据,如商家号。

如果需要对用户id进行保密,那么可以对用户id进行hash。

2.对于拿不到用户id(例如,能拿到商家id但是拿不到用户id)的情况,使用更复杂的生成规则:

  • 时间戳
  • 商家id
  • 随机数字

    随机数字 + 缓存 //可以确保唯一性
  • 进程id/线程id
    确保当前请求的唯一性
  • 流水号
    流水号唯一,但要防止泄露交易量
  • 其他……

总结
生成规则最重要的一点是,保证当前请求的唯一性。

参考

https://segmentfault.com/q/10...

http://www.jianshu.com/p/331b...
https://www.biaodianfu.com/sn...

http://www.yours1989.com/76/

http://blog.csdn.net/qq_32532...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值