注册后为新用户生成唯一的用户ID

时间:2011-02-04 05:43:42

标签: java php database

  

可能重复:
  Designing Unique Keys(Primary Keys) for a heavily denormalized NoSQL database

我正在寻找一种方法来生成唯一的UserIds /键,以便在他们注册我的应用程序后存储新用户的数据。

一个选项是获取随机生成的UUID ,但这些 16个字节长(因为我使用的是Cassandra,一个涉及重度非规范化的NoSQL数据库),我担心如果密钥可以用更小的尺寸生成,我是否会浪费大量的磁盘空间,RAM和其他资源。

尝试减小userId大小的主要灵感是,我正在使用userIds进行重度非规范化。 UUID长度为16个字节,但我也可以只有4个字节的唯一ID(如果我使用的计数器跟踪我的应用程序中没有用户),并且因为注册只是一次性过程如果可行的“没有任何缺点”(!?),尝试减少空间需求是有意义的。

我正在使用userIds附加到我的应用程序上用户的其他数据的Id。这样我就可以大幅减少空间需求。

为新用户生成唯一ID的方法有哪些?

1 个答案:

答案 0 :(得分:0)

您说过每个用户可能使用4个而不是16个字节。这将为每个用户节省12个字节,为每1亿用户节省1.2千兆字节。我相信你可以为很多用户提供这样的存储空间。

但是如果您以不向用户公开的方式使用此用户ID(例如在URL中),那么增加的数字就可以了。其他方式如果这些数字暴露给用户并且可以操纵它,请记住防止生日攻击http://en.wikipedia.org/wiki/Birthday_attack

相关问题