| Maybe we can try the Twitter-Snowflake? It can help generate unique IDs. And it only requires 64 bits. Also,it's self-increasing(so it's friendly with data insertion). The 64 bit is a composition of: timestamp, worker number and sequence number. 0(1 bit: don't use) -000...000(41 bits: timestamp) -000...000(10 bits: worker number) -000...000(12 bits: sequence number). The 41-bit timestamp can support the algorithm till year 2082. The 10-bit worker number can support 1023 workers. The sequence number supports producing 4095 self-increasing sequence ids in every ms. code for timestamp: uint64_t generateStamp() { timeval tv; gettimeofday(&tv, 0); return (uint64_t)tv.tv_sec * 1000 + (uint64_t)tv.tv_usec / 1000; } code for sequence number: uint64_t waitNextMs(uint64_t lastStamp) { uint64_t cur = 0; do { cur = generateStamp(); } while (cur <= lastStamp); return cur; } reference: https://github.com/twitter/snowflake |