UUID 与长主键

问题描述 投票:0回答:1

在数据库设计中,考虑主键时,使用UUID与Long数据类型相比有何优缺点?

我遇到了两个不同的教程,分别实现了它们,我只是好奇哪一个更好。

database spring-boot spring-data
1个回答
0
投票

比较 UUIDLong 作为数据库中主键的类型:

1。长:

  • LongBigInt 是 64 位,小于 UUID(128 位)。
  • Long 生成速度更快,始终生成唯一ID,但不是随机。例如,在 Spring Boot 中:

`

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

`

此代码将生成一个 increasing-from-0 键。例如:

0, 1, 2, ...
。当然,“从 0 开始递增”密钥对于 XSS 之类的攻击并不安全(因为其易于预测的属性)。

2。 UUID:

    Long
  • 是 128 位,超过 Long(64 位)。
  • Long
  • 一样,UUID总是生成uniqueID(像558012d6-7db5-4053-b838-6a1ef4ad019b),但它是
    随机
    有点慢并且更难预测。这意味着它比Long更安全。
  • 综上所述,两者都可以很好地用作数据库的主键。我认为UUID更好,但我更喜欢使用
Long

,因为它更容易在程序中实现。

© www.soinside.com 2019 - 2024. All rights reserved.