Forum OpenACS Development: Re: GUIDs (Globally Unique Identifiers) as Object IDs?

Collapse
Posted by Frank Bergmann on
Hi!

quite easy to use GUIDs (large random numbers...)
> one cannot store a UUID in a integer type

Yes you can. This is not about adherence to standards here, but about a simple solution to scale out horizontally 😊 So for example I could imagine to just use "large random numbers".

Actually, sequential numbers with a "prefix" * 1000000000 offset (with a separate "prefix" for each system) could also be sufficient to create separate "number circuits". So even sequences might continue to work... And this might actually work with normal integers and without the needs for bigints...

Frank

Collapse
Posted by Gustaf Neumann on
The usual standard use 128 bit [1,2] not without reason. if you want to cook up your own convention, don't call it GUID/UUID otherwise you confuse others with terms used in established standards.

If you mean "1000000000" literally, be aware that the maximum value of an integer in PostgreSQL is "2147483647" (roughly twice that value) [3]. Notice that on sites like openacs.org, we had already overruns on 32bit sequences [4].

Nevertheless, for "site-synching" (see above), i see no need for any kind of UUIDs.

-g

[1] https://www.ietf.org/rfc/rfc4122.txt
[2] https://en.wikipedia.org/wiki/Universally_unique_identifier
[3] https://www.postgresql.org/docs/9.6/static/datatype-numeric.html
[4] https://openacs.org/forums/message-view?message_id=4877368

Collapse
Posted by Benjamin Brink on
Frank,
I mentioned the blockchain for obtaining a pool of preprocessed random hashes to be used as UUIDs, but those are apparently hashed at 256bits. And as Gustaf mentions, using standards outside of their definition tends to confuse things and break convention;

Maybe verifiable, unpredictable 128bit UUID format hashes can be generated using a system/satellite salt reference and object_id et cetera with SHA-3/ It apparently has little risk of collisions and relatively low processor demands, and the bit length can be configured to fit UUID.
cheers,
Ben