Unique Identifier (UUID)

Der Universally Unique Identifier (UUID) wird auch zur Objektidentifizierung verwendet. Alvine ist so konzipiert, das alle Stamm-, Hilfs und Transaktionsdaten eindeutig und Systemübergreifend identifiziert und ausgetauscht werden können. So ist es möglich einen Datensatz aus dem System A ohne größere Probleme in das System B zu übertragen. Zur Identifizierung kommt die in der Spezifikation RFC 4122 beschriebenen UUID zum Einsatz.

Der Aufbau einer UUID ist im RFC 4122 genau beschrieben. Eine Beispiel UUID sieht folgendermassen aus und repräsentiert einen 16 Beispiel UUID 550e8400-e29b-11d4-a716-446655440000

Die UUID kann auch als URN definiert werden: urn:uuid:550e8400-e29b-11d4-a716-446655440000

echo \Alvine\Util\UUID::generateFromRandom();
// Ergebnis -> zufällige UUID

echo \Alvine\Util\UUID::generateFromName('myname', 'name');
// Ergebnis -> 9ced7028-3599-573c-90ef-9590f243b9b3

echo \Alvine\Util\UUID::generateFromTime();
// Ergebnis -> UUID abhängig von Zeit

Speicherung in der Datenbank

Die Speicherung in der Datenbank sollte nicht als String, sondern als (z.B. in MySQL) einem binary (16) gespeichert werden. Verschiedene Artikel belegen darüber hinaus, das die Verwendung der UUID als Primärschlüssel sehr teuer (langsam) ist.

UNHEX(REPLACE(UUID(), '-',''))

CREATE TABLE test (
id varbinary(16) not null,
name varchar(15) not null,
PRIMARY KEY(id)
);