Generating unique ids in Mnesia

Mark Scandariato <>
Thu Aug 18 18:12:43 CEST 2005


erlang:now/0 returns  {Megaseconds, Seconds, Microseconds} since 00:00 GMT, January 1, 1970.

Seconds and Microseconds wrap at 999,999 so they won't exceed 20 bits.

You'll have to hang on to the sequence numbers for a very long time before you exceed 24 bits worth of Megaseconds (16 trillion seconds since 00:00 GMT, January 1, 1970).

Mark.

-----Original Message-----
From: Joel Reymont <>
Sent: Aug 18, 2005 11:35 AM
To: Erlang Users' List <>
Subject: Re: Generating unique ids in Mnesia

Is it fixed someplace that the components of now() are exactly 24, 20  
and 20 bits long?

On Aug 18, 2005, at 5:29 PM, Mark Scandariato wrote:

> If you don't mind gaps in the sequence numbers, then try:
>
> seq() ->
>     {M,S,U} = erlang:now(),
>     <<N:64>> = <<M:24, S:20, U:20>>,
>     N.






More information about the erlang-questions mailing list