代码之家  ›  专栏  ›  技术社区  ›  mainstringargs

用于UUID的最佳(最有效)数据类型作为JPA ID

  •  3
  • mainstringargs  · 技术社区  · 15 年前

    我想使用UUID作为我的JPA对象的ID。

    我目前只是使用一个字符串来存储UUID。什么更有效率?

    1 回复  |  直到 15 年前
        1
  •  5
  •   erickson    15 年前

    你如何衡量效率?

    例如,存储UUID(它是 byte[] )作为一对 long 值允许您在64位体系结构上非常快速地比较它们(比 String 比较,一个字符一个字符)。但是,您的编码效率会受到影响,因为您必须编写自定义类型。

    在你的案件中什么是重要的?


    如果您对数据库中的性能感兴趣,那么性能将在一定程度上取决于您选择的数据库,但实际上,所有数据库都将逐字节比较UUID。因此,重要的是要使键之间的差异更可能朝向键的开头。

    UUID在这方面设计得很好。最好的UUID是“随机”样式。它们在任何地方都没有很多常见的子串,包括开始子串,而且它们不泄漏有关生成它们的机器的信息。但是,UUID的“时间戳”样式也是一个很好的键,因为低阶位(变化很快)是字符串中的第一个,而高阶位(对于连续的UUID不改变)则是随后出现的。