Universal Unique Identifier (UUID)
A Universal Unique Identifier (UUID) is a 128 bit, unique identifier generated by the local system. It is unique across both space and time with respect to the space of all UUIDs.
A UUID can be used to tag records to ensure that the database records are uniquely identified regardless of which database they are stored in, for example, in a system where there are two separate physical databases containing accounting data from two different physical locations.
No centralized authority is responsible for assigning UUIDs. They can be generated on demand (10 million per second per machine if needed).
A UUID can be used for multiple purposes:
• Tagging objects that have a brief life
• Reliably identifying persistent objects across a network
• Assigning as unique values to transactions as transaction IDs in a distributed system
UUIDs are fixed sized (128 bits), which is small relative to other alternatives. This fixed small size lends itself well to sorting, ordering, and hashing of all sorts, sorting in databases, simple allocation, and ease of programming.
UUID Format
The format of 128-bits (16 octets) UUID is:
UUID Functions
Ingres implements the following SQL procedures to create, convert, and compare UUIDs:
• UUID_CREATE( )
• UUID_COMPARE(uuid1, uuid2)
• UUID_TO_CHAR(u)
• UUID_FROM_CHAR(c)
UUID_CREATE( ) Function
The UUID_CREATE() function creates a 128 bit UUID:
> createdb uuiddb
> sql uuiddb
* CREATE TABLE uuidtable (u1 BYTE (16), u2 BYTE(16));
* INSERT INTO uuidtable VALUES (UUID_CREATE(), UUID_CREATE());
//
// Verify the length in byte format
//
* SELECT LENGTH(u1) FROM uuidtable;
//
//Length returned equals 16 bytes
//
UUID_COMPARE(uuid1, uuid2) Function
The UUID_COMPARE(uuid1, uuid2) function returns an integer value:
//
// Determine if u1 is greater than, less than, or equal to u2
//
* SELECT UUID_COMPARE(u1, u2) FROM uuidtable;
//
// u1 > u2
//
UUID_TO_CHAR(u) Function
The UUID_TO_CHAR(u) function converts a generated UUID into its character representation.
* SELECT UUID_TO_CHAR(u1) FROM uuidtable;
//
// Verify length of UUID in character format
//
* SELECT LENGTH(UUID_TO_CHAR(u1)) FROM uuidtable;
//
//A UUID contains 36 characters
//
UUID_FROM_CHAR(c) Function
The UUID_FROM_CHAR(c) function converts a UUID from its character representation into byte representation:
//
// Insert a UUID in character format into a table
//
* CREATE TABLE uuidtochar
AS
SELECT UUID_TO_CHAR(u1) AS c1 FROM uuidtable;
* SELECT c1 FROM uuidtochar;
//
// convert UUID into byte representation
//
* SELECT UUID_FROM_CHAR(c1) FROM uuidtochar;
Last modified date: 08/28/2024