3

我正在使用 nodeJS 和 cassandra

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

但是,我认为 uuid 太长了

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

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

例子:

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

脸书/100001458264256

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

有什么好主意吗?

4

2 回答 2

1

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

查看cql 文档

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

您可以使用数据库、zookeeper雪花来生成唯一的 8 字节 ID。

于 2012-08-16T05:20:49.030 回答
0

您可以尝试使用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
于 2016-04-22T03:14:48.710 回答