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)
);