Τι είναι τα UUIDs;
UUID (Παγκοσμίως Μοναδικός Αναγνωριστής) είναι ένα τυποποιημένο φορμά αναγνωριστικού σχεδιασμένο να είναι παγκοσμίως μοναδικό στο χώρο και το χρόνο. Τα UUIDs είναι 128-bit τιμές που συνήθως αναπαρίστανται ως 32 δεκαεξαδικά ψηφία, εμφανιζόμενα σε πέντε ομάδες χωρισμένες με παύλες: 123e4567-e89b-12d3-a456-426614174000
.
Τα UUIDs ορίζονται από το πρότυπο RFC 9562 (που αντικαθιστά το προηγούμενο RFC 4122) και χρησιμοποιούνται σε υπολογιστικές πλατφόρμες για την αναγνώριση πληροφοριών χωρίς να απαιτείται κεντρική καταχώρηση ή συντονισμός.
Μορφή UUID
Όλα τα UUIDs μοιράζονται μια κοινή μορφή που αποτελείται από 36 χαρακτήρες (32 δεκαεξαδικά ψηφία συν 4 παύλες) διατεταγμένους στο μοτίβο:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Όπου:
x
είναι οποιοδήποτε δεκαεξαδικό ψηφίο (0-9, a-f)M
υποδεικνύει την έκδοση UUID (1-7)N
υποδεικνύει την παραλλαγή UUID (συνήθως 8, 9, A ή B για σύγχρονα UUIDs)
Σύγκριση Εκδόσεων UUID
Version | Name | Μέθοδος Δημιουργίας | Time-ordered | Περίπτωσεις Χρήσης |
---|---|---|---|---|
UUID v1 | Timestamp | Τρέχουσα χρονική σήμανση + αναγνωριστικό κόμβου (MAC) | Ναι (μερικώς) | Καταγραφή, κατανεμημένα συστήματα |
UUID v3 | Βασισμένο σε όνομα (MD5) | MD5 hash του namespace + ονόματος | No | Συνεπή αναγνωριστικά για την ίδια είσοδο |
UUID v4 | Random | Τυχαίοι ή ψευδοτυχαίοι αριθμοί | No | Γενικής χρήσης, πιο κοινό |
UUID v5 | Βασισμένο σε όνομα (SHA-1) | SHA-1 hash του namespace + ονόματος | No | Συνεπή αναγνωριστικά με ισχυρότερο hash |
UUID v6 | Αναδιαταγμένη Χρονική Σήμανση | Χρονική σήμανση (ταξινομημένη για ταξινόμηση) | Yes | Κλειδιά βάσης δεδομένων, εγγραφές ταξινομήσιμες κατά χρόνο |
UUID v7 | Χρονική σήμανση Unix Epoch | Χρονική σήμανση Unix + τυχαία δεδομένα | Yes | Σύγχρονοι ταξινομήσιμοι αναγνωριστικοί |
Nil UUID | Μηδενικό UUID | Όλα μηδενικά | N/A | Ειδική τιμή, δείκτης μη αρχικοποιημένου |
Πλεονεκτήματα των UUIDs
- Δεν απαιτείται συντονισμός: Δημιουργία αναγνωριστικών χωρίς κεντρικό συντονισμό
- Παγκόσμια Μοναδικότητα: Εξαιρετικά χαμηλή πιθανότητα σύγκρουσης
- Σταθερό Μήκος: Συνεπής αναπαράσταση συμβολοσειράς 36 χαρακτήρων
- Cross-Platform: Υποστηρίζεται σε σχεδόν όλες τις γλώσσες προγραμματισμού
- Versatile: Διαφορετικές εκδόσεις για διαφορετικές περιπτώσεις χρήσης
Μη Τυπικές Εναλλακτικές UUID
Τύπος Αναγνωριστικού | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Υλοποίηση UUID της Microsoft | Λειτουργικά ισοδύναμο με UUID | Κάποιες διαφορές υλοποίησης σε παλαιότερα συστήματα |
ULID | Παγκοσμίως Μοναδικός Λεξικογραφικά Ταξινομήσιμος Αναγνωριστικός | Λεξικογραφικά ταξινομήσιμο, χρονική σήμανση πρώτη, μη ευαίσθητο σε πεζά-κεφαλαία | Νεότερο, λιγότερο διαδεδομένη υιοθέτηση |
Snowflake ID | Κατανεμημένο σύστημα αναγνωριστικών του Twitter | Ταξινομήσιμος κατά χρόνο, συμπαγής (64-bit) | Απαιτεί κεντρικό συντονισμό |
CUID/CUID2 | Αναγνωριστικά ανθεκτικά σε συγκρούσεις | Σύντομο, κατάλληλο για δημιουργία στην πλευρά πελάτη | Δεν είναι επίσημο πρότυπο |
Nano ID | Μικρός, ασφαλής, φιλικός προς URL γεννήτορας μοναδικών συμβολοσειρών | Μικρότερος από UUID, ρυθμιζόμενο αλφάβητο | Μη τυποποιημένο |
Σύντομο UUID | Πιο σύντομη κωδικοποίηση των τυπικών UUIDs | Πιο συμπαγής αναπαράσταση | Απαιτεί μετατροπή προς/από τυπικό UUID |
Nil UUID | UUID με όλα τα bits μηδενισμένα | Ειδική σημασιολογική σημασία | Μη μοναδικό (χρησιμοποιείται ως ειδική τιμή) |
Minecraft UUID | UUIDs με ή χωρίς παύλες | Συμβατό με τυπικά UUIDs | Μόνο διαφορές μορφοποίησης |
Πρακτικές Εφαρμογές
- Πρωτεύοντα Κλειδιά Βάσης Δεδομένων: Ιδιαίτερα σε κατανεμημένες ή αναπαραγόμενες βάσεις δεδομένων
- Κατανεμημένα Συστήματα: Αναγνώριση οντοτήτων σε πολλαπλά συστήματα
- Εφαρμογές Ιστού: Αναγνωριστικά συνεδρίας, παρακολούθηση ανώνυμων χρηστών
- Διαχείριση Περιεχομένου: Αναγνωριστικά εγγράφων και μέσων
- APIs: Αναγνωριστικά αιτήσεων και συναλλαγών για ιχνηλάτηση και αποσφαλμάτωση
- Internet of Things: Αναγνώριση συσκευών χωρίς κεντρική καταχώρηση
- Συγχρονισμός Δεδομένων: Αναγνώριση εγγραφών σε πολλαπλές αποθήκες δεδομένων
- Άδειες Λογισμικού: Μοναδικά κλειδιά προϊόντος ή άδειας