Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Unique ID

by spudzeppelin (Pilgrim)
on Jul 19, 2001 at 21:07 UTC ( [id://98152]=note: print w/replies, xml ) Need Help??


in reply to Unique ID

Who said it had to be consecutive? This is sequential, unique (unless you can create more than one row per microsecond in a single process), and portable.

use Time::HiRes qw(gettimeofday); my ($secut,$musec) = gettimeofday; my ($uniqueid) = sprintf("%010d%06d%05d", $secut, $musec, $$);

Notes:

  • The lead 0s are there to pad the digits to the proper resolution. If your system supports >16-bit process-IDs, that last 5 may have to change.
  • This can also scale across multiple machines (eg. multiple webservers writing to the same database), but to do so, each machine should have a unique numeric machine identifier as part of the id as well; add an extra 2 or 3 digit (or bigger, if you have to!) integer to the expansion to account for it.
  • Keeping the first two variables in that order will assure that the records have linearity -- ie. sorting on this ID will put things in proper chronological order, with one-microsecond granularity.

Spud Zeppelin * spud@spudzeppelin.com

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://98152]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (3)
As of 2024-04-25 09:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found