Ich habe eben folgenden Artikel über die Verwendung von UUIDs als Primärschlüssel in Datenbanken gefunden:
http://www.affy.blogspot.com/2003_03_02_affy_archive.html#90405845
Ich finde die Argumentation in Teilen interessant und schlüssig, allerdings bleiben in meinen Augen noch eine Menge Fragen offen:
- Was passiert, wenn mehrere verschiedene Anwendungen bzw. Applikationsserver mit der DB arbeiten
- Strings als Primärschlüssel scheinen mir aus Performance-Gründen nicht gerade der optimale Datentyp zu sein
Wie seht Ihr das?
Die UUID ist eine abgewandelte Variante der GUID von Microsoft, die z.B. auch im SQL-Server intern verwendet wird. Letztlich fehlt nur ein Bindestrich zur Microsoftvariante.
Probleme mit verschiedenen Anwendungsservern sind nicht zu befürchten, da die UUID im Mittelteil die Hardware ID des erzeugenden Rechners enthält und es somit “nie” zu Überschneidungen kommen kann. Diese Aussage kommt von Allaire (damals im Spectra-Forum).
Es ist allerdings unklar, was passiert wenn die UUIDs “aufgebraucht” sind, d.h. alle Varianten (128bit) eines Rechners verwendet wurden.
Zu den Performancegründen (Strings als Primärschlüssel): Keine Ahnung. Letztlich wird auf jeden Fall die Datenbank größer, da die internen Auto IDs als 4 Byte Schlüssel im Index gespeichert werden und eine UUID halt 35 Byte lang ist.
Comments on this entry are closed.