2012-08-15 80 views
3

我使用的是和的NodeJS卡桑德拉如何產生像Facebook,谷歌+唯一ID的NodeJS

我目前使用的UUID V1作爲唯一的ID

,但是,我認爲UUID太長

我想產生像FB和G +,這是短

,並沒有檢查ID在數據庫中存在或不前插入

例如數字唯一的ID :

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

的Facebook/100001458264256

我在想生成它的基礎上的一些用戶的細節?

有什麼好主意?

+0

什麼是您的用戶詳細信息? – Deestan 2012-08-15 14:43:59

+2

定義「太長」。有一些很短的散列函數可能爲你做這項工作。 – KingCronus 2012-08-15 14:44:49

+0

@Deestan可能有一些數據在請求? 並解析它們到base10 – williamC 2012-08-15 14:58:46

回答

1

如果使用UUID類型創建Colum系列,它們將以二進制形式存儲,並且只需要磁盤上的16個字節,該字節已經小於您想要的20個字節。

看那cql docs

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

你可以使用一個數據庫,zookeepersnowflake生成唯一的8組字節的ID。

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