做后端开发数据表的主键生成方式项目前期可能觉的无所谓,有用递增的、UUID的、中心服务生成主键的,这些方式各有利弊。下面记录下最近项目使用的一种唯一主键生成方式。
首先用户ID是关键,也是在其它表中的主键生成需要来标识的。用户ID的我直接是采用UUID.v4的,采用简单的方式实现一个全局唯一的。
接下来其它的表中的主键使用 "精确时间+用户ID后几位+随机字符串+表标识前缀"
如订单表:
201704220833543 + UUID.v4().substring(-6) + RandomStr() + 'o'
精确时间打毫秒 + 用户ID后6位 + 随机字符串 + 订单表order前缀标识'o'
优点:
- 基本可以保证ID唯一,因为在毫秒级别单个用户在单个表中生成的记录数有限,随机字符串长度也弄到6位以上的话很难重复。
- 省去再添加一个时间索引,直接按照表ID排序即是按时间排序
以上就是我最近项目的唯一ID生成方式,可能有些东西没考虑到,欢迎来怼,一起提高成长。