[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GEU-algorithms (was Ozone object identity)



There are a couple of algorithms that almost ensures global and eternal uniqueness. By "almost" I mean that the chances for collisions are sooooooo minimal.

They all built on secure hashing. You feed the algorithm with whatever uniqueness information you have (millis since the epoch, hostname, data from the object, object counter in the VM blablabla. The hash it produces will probably be unique. 

How? The hashing algorithm shuffles the input totally (converts the bits into noise in an orderly fashion). Since the input is an ordered data combination, and there are billions of noisy combinations for each ordered combination, the hash will probably be unique. 

The Secure Hashing Algorithm (SHA) has this property, and it produces 20 bytes. A byte[] of size 20 will for all practical purposes be globally and eternally unique.

The idea (and I am sure that Falko didn't have this in mind from the beginning) would be that each and every instantiated Ozone object will have a GEUID. Exactly how this is implemented should be hidden, but identity should definitely be both in time and space. 

I am thinking about the ability to move ozone objects between several ozone servers (for load balancing maybe, or for distributed computing, peer-to-peer capability of ozone where the objects float around the network until it finds computing space, or...). The point is that object identity is a good thing, and to not mess up things in the future, let's do it GEU.

Furthermore, a standard URL scheme is also a good idea. But let's not confuse this with GEU. URL's are bad candidates for GEUness. But if you have a GEUID, it is easy to implement a URL scheme on top of it.

My third quarter...

/O