Distributed ID Generation and Bit Packing
push.cx
push.cx
https://github.com/twitter/snowflake/
I even wrote something in Ruby as an idea based off it (although it hasn't been used in production yet)
https://github.com/pmarreck/ruby-snippets/blob/master/star_i...
http://code.flickr.net/2010/02/08/ticket-servers-distributed...
Simpleflake (like Snowflake, but uses a random number in place of the coordinated worker ID and sequence number): http://engineering.custommade.com/simpleflake-distributed-id...
"How to Generate a Sequence of Unique Random Integers", which uses prime number quadratic resides: http://preshing.com/20121224/how-to-generate-a-sequence-of-u...
The 47-bit scheme (3 version, 32 timestamp, 8 sequence, 4 parallel), when encoded in base62 (see his discussion) yields 8-character identifiers. That's potentially much better for a user than a 22-char Base64-encoded GUID.
[1] As always, relevant XKCD: http://xkcd.com/356/
I think extra effort to go below 64 bits may be a bit unnecessary, getting from 128 to 64 can make a big difference on the back end.