【问题标题】:how to generate unique id like facebook, google+ in NodeJS如何在 NodeJS 中生成像 facebook、google+ 这样的唯一 ID
【发布时间】:2012-08-11 20:59:12
【问题描述】:

我正在使用 nodeJS 和 cassandra

我目前使用 UUID v1 作为唯一 ID

但是,我觉得 uuid 太长了

我想生成像 fb 和 G+ 这样更短的数字唯一 ID

并且在插入之前不必检查 id 是否存在于数据库中

示例:

https://plus.google.com/104560124403688998123/posts

facebook/100001458264256

我正在考虑根据一些用户详细信息生成它?

有什么好主意吗?

【问题讨论】:

  • 您的用户详细信息是什么
  • 定义“太长”。有一些非常短的散列函数可能会为您完成这项工作。
  • @Deestan 可能需要一些数据?并将它们解析为base10
  • @KingCronus 我想要一些数字 id,大概 20 个字符长,但 UUID 有 32 个字符长

标签: javascript node.js cassandra uuid


【解决方案1】:

如果您使用 UUID 类型创建列族,它们将以二进制形式存储,并且只需要 16 个字节在磁盘上,这已经小于您想要的 20 个字节。

cql docs

CREATE COLUMNFAMILY MonkeyTypes (
    KEY uuid PRIMARY KEY,
    species text,
    alias text,
    population varint
)

您可以使用数据库 zookeepersnowflake 来生成唯一的 8 字节 ID。

【讨论】:

    【解决方案2】:

    您可以尝试使用flake-idgen 包来获取更短的唯一ID。

    var FlakeIdGen = require('flake-idgen')
    var intformat = require('biguint-format')
    var generator = new FlakeIdGen;
    var id1 = generator.next();
    var id2 = generator.next();
    var id3 = intformat(id1, 'dec'); //sample : 5829986774188818434
    var id4 = intformat(id2, 'hex', {prefix:'0x'}) // sample : 0x50e8461520c00003
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2018-05-04
      • 2023-03-15
      • 2010-11-30
      • 2013-03-11
      相关资源
      最近更新 更多