使用ULID库生成唯一ID
UUID的5个算法中最常用的是UUID4了,但是,即使是随机的,但是也是存在冲突的风险。和UUID要么基于随机数要么基于时间戳不同,ULID是既基于时间戳又基于随机数,不用担心冲突的风险,而且转换成字符串比UUID更加友好。
应用场景
替换数据库自增id,无需DB参与主键生成
分布式环境下,替换UUID,全局唯一且毫秒精度有序
比如要按日期对数据库进行分区分表,可以使用ULID中嵌入的时间戳来选择正确的分区分表
如果毫秒精度是可以接受的(毫秒内无序),可以按照ULID排序,而不是单独的created_at字段
安装与使用
安装
1 | pip install ulid-py |
创建一个全新的ULID
1 | import ulid |
根据现有的128位值(例如UUID)创建新的ULID
1 | import ulid, uuid |
从现有时间戳值(例如datetime对象)创建新的ULID
1 | import datetime, ulid |
根据现有的随机数创建一个新的ULID
1 | import os, ulid |