Generating unique key


#1

How do we generate unique key for the record? Cassandra has their timeuuid generator, how about aerospike?


#2

Most programming languages have a UUID library. You can generate a UUID and use the raw bytes of the UUID as the value of a key.


#3

And PHP - http://php.net/manual/en/function.uniqid.php

:slight_smile:


#4

Most programming languages uses type 4 UUID. Even it’s almost impossible that collision ever happen, if thinking about scaling, people will prefer something like type 1 UUID that is not randomly generated.


#5

@chris , @rbotzer - What if we have to generate UID in a distributed system ?

Java UUID won’t ensure a unique key in that case.


Mongo upsert-like capability?
#6

You can use elements that add enough random noise to get around the timestamp collision problem.

For example in PHP you can use a function such as this:

function gen_id() {
  return uniqid(getmypid().getmyinode(), true);
}

Between the process ID, the inode of the file, and the microtime we get back a good unique ID, even for a distributed system, that runs around 1.4μs on my machine.

There should be elements such as those (MAC address of a card, process ID, etc) that work for your case.