Ruby UUID和唯一性,用于ID

Der*_*ley 0 ruby uuid uniqueidentifier

我需要一个6字符的字母数字ID,用于我的rails应用程序,它将呈现给系统的用户,并且在我的系统中的所有对象实例中必须是唯一的.我不指望超过几千个对象实例,所以6个字符远远超过我真正需要的.

此时我在我的Rails应用程序中使用UUIDTools gem来生成一个uuid.我应该使用哪种UUIDTools生成方法,以及结果uuid的哪一端应该从中获取6个字符,以保证唯一性?

例如,如果我生成ef1cf087-95c9-4868-bd95-cea950a52b58,我想ef1cf0从它的前面使用,还是a52b58从后端使用?

......作为旁注/问题:我是不是错了?有没有更好的办法?

And*_*rey 6

没门.UUID被认为是唯一的,因为它很长并且实际上不可能生成相同的UUID.如果你把它修剪成6个字符,那么你就会大大增加重复的可能性.您必须使用递增ID或完整UUID.

只有确定性生成(id(x + 1) = id(x) + 1)才能保证唯一性.UUID不保证它,6个字符保证更少.

其他选择是创建ID生成服务,它将具有单一方法getNewId,并将保留将提供唯一ID的知识.(最简单的案例 - 柜台)

  • @Derick Bailey没有.您可以通过统计(UUID案例)或通过共享先前生成的ID(增量)的知识来实现​​唯一性.随机6个字符属于两个类别. (3认同)
  • 您总是可以将-36编码(0-9a-z)作为递增的整数id.这将为您提供字母数字标识符,但保证唯一性. (2认同)