对比 数据库自增 id、UUID、雪花算法的一些利弊:
特性 | 递增ID | UUID | 雪花算法 |
---|---|---|---|
唯一性 | 递增,唯一性仅在同一数据库中保证 | 全局唯一 | 全局唯一 |
排序性 | 递增,可以按时间顺序排序 | 随机,不具备排序特性 | 按时间有序 |
存储空间 | 较小 | 较大 | 较小 |
可读性 | 易读 | 不易读 | 可读,包含时间信息 |
生成算法复杂性 | 简单 | 相对较简单 | 相对简单,依赖于时间和节点标识 |
性能 | 高 | 相对较高 | 高 |
可调整性 | 有限 | 有限 | 可根据需求调整节点位数、序列位数 |
时间依赖性 | 受数据库自增机制限制 | 无 | 受系统时间限制 |
应用场景 | 数据库主键、顺序存储、分片键 | 全局唯一标识、分布式系统 | 分布式系统、分片键 |
生成规则对比
类型 | 生成规则 |
---|---|
递增ID | 通常由数据库自增机制生成,每次递增1。 |
UUID | 由32个十六进制字符组成,分为8-4-4-4-12五个部分。 |
雪花算法(Snowflake) | 64位二进制数,分为1位符号位、41位时间戳、10位节点标识、12位序列号。 |