Δημιουργήστε καθολικά μοναδικά αναγνωριστικά (UUIDs) για τις εφαρμογές σας.
Χρονοσήμανση:
Διαφήμιση
Σχετικά με αυτό το εργαλείο
Το Καθολικά Μοναδικό Αναγνωριστικό (UUID) είναι ένα από τα θεμελιώδη δομικά στοιχεία της σύγχρονης κατανεμημένης πληροφορικής. Τυποποιημένο για πρώτη φορά το 1997 μέσω της προδιαγραφής DCE του Open Software Foundation και αργότερα επισημοποιημένο ως RFC 4122 το 2005, τα UUIDs λύνουν ένα παραπλανητικά δύσκολο πρόβλημα: πώς δημιουργείτε αναγνωριστικά εγγυημένα μοναδικά χωρίς κεντρική αρχή συντονισμού;
Η απάντηση βρίσκεται στα μαθηματικά και τις πιθανότητες. Ένα UUID v4 περιέχει 122 τυχαία bits, αποδίδοντας περίπου 5,3 x 10^36 πιθανές τιμές. Για να το βάλουμε σε προοπτική, θα μπορούσατε να δημιουργείτε ένα δισεκατομμύριο UUIDs κάθε δευτερόλεπτο για πάνω από 100 χρόνια πριν φτάσετε σε 50% πιθανότητα μιας μόνο σύγκρουσης.
Αυτή η μαθηματική εγγύηση καθιστά τα UUIDs τη ραχοκοκαλιά των πρωτευόντων κλειδιών βάσεων δεδομένων, των κατανεμημένων ουρών μηνυμάτων, των διακριτικών συνεδρίας και των αρχιτεκτονικών μικρόϋπηρεσιών παγκοσμίως.
Αυτή η γεννήτρια υποστηρίζει πολλαπλές μορφές αναγνωριστικών, καθεμία σχεδιασμένη για συγκεκριμένες περιπτώσεις χρήσης. Το UUID v4 είναι το πιο ευρέως υιοθετημένο, βασιζόμενο αποκλειστικά στην τυχαιότητα. Το UUID v7, ορισμένο στο νεότερο RFC 9562, ενσωματώνει χρονοσήμανση Unix σε χιλιοστά του δευτερολέπτου για φυσική χρονολογική ταξινόμηση — ένα σημαντικό πλεονέκτημα για την ευρετηρίαση βάσεων δεδομένων.
Το UUID v1 συνδυάζει χρονοσήμανση 60-bit με αναγνωριστικό κόμβου. Πέρα από τα UUIDs, το εργαλείο δημιουργεί ULIDs (Λεξικογραφικά Ταξινομήσιμα Καθολικά Μοναδικά Αναγνωριστικά) χρησιμοποιώντας Crockford Base32, και NanoIDs — συμπαγή, ασφαλή για URL αναγνωριστικά δημοφιλή σε εφαρμογές frontend.
Όλη η δημιουργία χρησιμοποιεί το Web Crypto API του προγράμματος περιήγησης, εξασφαλίζοντας κρυπτογραφικά ασφαλή τυχαιότητα. Κανένα δεδομένο δεν φεύγει από τη συσκευή σας — κάθε αναγνωριστικό δημιουργείται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας χωρίς επικοινωνία με διακομιστή.
Επιλέξτε μορφή (UUID v4/v7/v1, ULID ή NanoID) και πόσα να δημιουργηθούν.
Προαιρετικά επιλέξτε μορφοποίηση: κεφαλαία, με/χωρίς αγκύλες ή παύλες.
Κάντε κλικ στο 'Δημιουργία UUID' και αντιγράψτε αποτελέσματα μεμονωμένα ή όλα μαζί.
Πρότυπα UUID και Κατανεμημένη Ταυτότητα
Το Universally Unique Identifier τυποποιηθηκε πρωτα στο RFC 4122 (2005), αν και οι ριζες του ανατρέχουν στο Apollo Network Computing System στη δεκαετια του 1980 και στο Distributed Computing Environment (DCE) του Open Software Foundation. Το θεμελιωδες πρόβλημα που λυνουν τα UUIDs είναι η δημιουργία παγκοσμιως μοναδικων αναγνωριστικων χωρις κεντρικη αρχη συντονισμου — απαραιτητο για κατανεμημενα σύστηματα οπου πολλαπλα μηχανηματα πρέπει ανεξαρτητα να δημιουργουν IDs που δεν θα συγκρουστουν πότε.
Το RFC 4122 ορισε πεντε εκδοσεις UUID για διαφορετικες περιπτωσεις χρησης. Η εκδοση 1 ενσωματωνει χρονοσημανση 60 bit (διαστηματα 100 νανοδευτερολεπτων από τις 15 Οκτωβριου 1582 — η μεταρρύθμιση του Γρηγοριανου ημερολογιου) συνδυασμενη με αναγνωριστικο κομβου 48 bit. Οι εκδοσεις 3 και 5 είναι βασισμενες σε ονοματα: κανουν hash εναν αναγνωριστικο χωρου ονοματων χρησιμοποιώντας MD5 (v3) η SHA-1 (v5), παραγοντας ντετερμινιστικα UUIDs. Η εκδοση 4 αντικατεστησε τον ντετερμινισμο με 122 bits κρυπτογραφικης τυχαιοτητας.
Το νεοτερο προτυπο, RFC 9562 (2024), εισηγαγε το UUID v7 ως προτεινομενη επιλογή για αναγνωριστικα φιλικα προς βασεις δεδομενων. Η εκδοση 7 ενσωματωνει χρονοσημανση Unix 48 bit σε χιλιοστα του δευτερολεπτου στα πιο σημαντικα bits. Αυτος ο σχεδιασμος δημιουργει αναγνωριστικα που ταξινομουνται χρονολογικα — κρισιμο πλεονεκτημα για ευρετηρια B-tree οπου τα τυχαια v4 UUIDs προκαλουν υπερβολικο κατακερματισμο. Τα benchmarks δειχνουν βελτίωση 20-40% στην απόδοση εισαγωγής.
Η πιθανοτητα συγκρουσης του UUID v4 καθοριζεται από το παραδοξο γενεθλιων. Με 122 τυχαια bits, ο χωρος περιέχει 5,3 x 10^36 πιθανες τιμές. Η πιθανοτητα δημιουργίας διπλοτυπου φτανει το 50% μονο μετά από περιπου 2,71 x 10^18 UUIDs. Τα ανταγωνιστικα σχηματα περιλαμβανουν Snowflake IDs του Twitter (64 bit), ULIDs (128 bit με κωδικοποιηση Crockford Base32), NanoIDs (συμπαγεις ασφαλεις για URL συμβολοσειρες) και αυτο-αυξανομενες ακολουθιες βασεων δεδομενων. Καθενα περιλαμβανει συμβιβασμους μεταξυ εγγυησεων μοναδικοτητας, ταξινομησιμοτητας, μεγεθους αποθήκευσης και απαιτησεων συντονισμου.
Πώς να Χρησιμοποιήσετε
Επιλέξτε μορφή (UUID v4/v7/v1, ULID ή NanoID) και πόσα να δημιουργηθούν.
Προαιρετικά επιλέξτε μορφοποίηση: κεφαλαία, με/χωρίς αγκύλες ή παύλες.
Κάντε κλικ στο 'Δημιουργία UUID' και αντιγράψτε αποτελέσματα μεμονωμένα ή όλα μαζί.
Μεθοδολογία
Η δημιουργία UUID v4 βασίζεται στη μέθοδο crypto.randomUUID() του προγράμματος περιήγησης από το Web Crypto API, η οποία παράγει 128 bits όπου 122 είναι κρυπτογραφικά τυχαία και 6 είναι δεσμευμένα για δείκτες έκδοσης (4 bits σε 0100) και παραλλαγής (2 bits σε 10). Αυτό εξασφαλίζει ότι κάθε UUID είναι αυτοπεριγραφόμενο — μπορείτε να αναγνωρίσετε την έκδοσή του εξετάζοντας τον 13ο δεκαεξαδικό χαρακτήρα.
Το UUID v7 ενσωματώνει μια χρονοσήμανση Unix 48-bit σε χιλιοστά του δευτερολέπτου στα πιο σημαντικά bits, ακολουθούμενα από τυχαία bits πλήρωσης. Αυτός ο σχεδιασμός παράγει αναγνωριστικά που είναι ταυτόχρονα μοναδικά και φυσικά χρονικά ταξινομημένα, καθιστώντας τα ιδανικά για πρωτεύοντα κλειδιά βάσεων δεδομένων όπου η απόδοση του ευρετηρίου B-tree έχει σημασία.
Το UUID v1 χρησιμοποιεί χρονοσήμανση 60-bit με ανάλυση 100 νανοδευτερολέπτων από τις 15 Οκτωβρίου 1582 (η ημερομηνία μεταρρύθμισης του Γρηγοριανού ημερολογίου), ακολουθία ρολογιού 14-bit για αποτροπή διπλοτύπων σε ρυθμίσεις ρολογιού, και αναγνωριστικό κόμβου 48-bit που δημιουργείται τυχαία για προστασία απορρήτου.
Τα ULIDs κωδικοποιούν μια χρονοσήμανση 48-bit σε χιλιοστά του δευτερολέπτου ακολουθούμενη από 80 τυχαία bits, αποδιδόμενα σε Crockford Base32 για συμπαγή, χωρίς διάκριση πεζών-κεφαλαίων αναπαράσταση. Τα NanoIDs χρησιμοποιούν διαμορφώσιμο αλφάβητο και μήκος, προεπιλογή 21 χαρακτήρες από ένα σύνολο ασφαλές για URL, παρέχοντας 126 bits εντροπίας.
Κατανόηση των Αποτελεσμάτων σας
Κάθε UUID είναι μια τιμή 128-bit που εμφανίζεται ως 32 δεκαεξαδικοί χαρακτήρες σε 5 ομάδες χωρισμένες με παύλες, ακολουθώντας το μοτίβο 8-4-4-4-12. Η κανονική μορφή είναι xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, όπου η θέση M (13ος hex χαρακτήρας) υποδεικνύει την έκδοση και η θέση N (17ος hex χαρακτήρας) υποδεικνύει την παραλλαγή.
Για UUID v4, το M είναι πάντα '4' και το N είναι ένα από '8', '9', 'a' ή 'b', επιβεβαιώνοντας τη συμμόρφωση με RFC 4122. Για UUID v7, το M είναι '7' και οι πρώτοι 12 hex χαρακτήρες κωδικοποιούν τη χρονοσήμανση σε χιλιοστά του δευτερολέπτου, καθιστώντας τον χρόνο δημιουργίας άμεσα αναγνώσιμο. Το UUID v1 τοποθετεί το M ως '1' με τη χρονοσήμανση χωρισμένη στις τρεις πρώτες ομάδες σε αναδιατεταγμένη σειρά.
Τα ULIDs εμφανίζονται ως 26 κεφαλαίοι χαρακτήρες Crockford Base32 — οι πρώτοι 10 κωδικοποιούν τη χρονοσήμανση και οι υπόλοιποι 16 την τυχαιότητα. Τα NanoIDs εμφανίζονται ως συμπαγείς συμβολοσειρές χρησιμοποιώντας χαρακτήρες ασφαλείς για URL (A-Z, a-z, 0-9, παύλα, κάτω παύλα), χωρίς εγγενείς δομικούς δείκτες. Κατά την επιλογή μορφής, λάβετε υπόψη ότι τα UUIDs με αγκύλες είναι κοινά σε οικοσυστήματα Microsoft, ενώ τα UUIDs χωρίς παύλες εξοικονομούν αποθηκευτικό χώρο σε βάσεις δεδομένων.
Πρωτεύοντα κλειδιά βάσης δεδομένων: Χρησιμοποιήστε UUID v7 για πίνακες PostgreSQL ή MySQL όπου η σειρά εισαγωγής έχει σημασία. Η ενσωματωμένη χρονοσήμανση εξασφαλίζει διαδοχικές τιμές κλειδιών, αποφεύγοντας τη τυχαία διασπορά I/O που προκαλεί το UUID v4 σε ομαδοποιημένα ευρετήρια.
Παρακολούθηση συμβάντων μικρόϋπηρεσιών: Δημιουργήστε UUID v4 για αναγνωριστικά συσχέτισης που περνούν μέσω ουρών μηνυμάτων (Kafka, RabbitMQ). Η καθαρή τυχαιότητα εγγυάται μηδενικές συγκρούσεις ακόμα και όταν χιλιάδες υπηρεσίες παράγουν IDs ταυτόχρονα.
Διακριτικά συνεδρίας frontend: Χρησιμοποιήστε NanoID για συμπαγή, ασφαλή για URL αναγνωριστικά συνεδρίας σε εφαρμογές μιας σελίδας. Με 21 χαρακτήρες, είναι πιο σύντομα από τα UUIDs διατηρώντας ισοδύναμη αντίσταση σε συγκρούσεις.
Ονομασία αρχείων και αποδιπλασιασμός: Δημιουργήστε ULIDs για αναγνωριστικά ανεβασμένων αρχείων. Η λεξικογραφική ταξινομησιμότητά τους σημαίνει ότι μια απλή αλφαβητική λίστα δείχνει αρχεία σε χρονολογική σειρά ανεβάσματος.
Συμβουλές και Καλές Πρακτικές
Επιλέξτε την έκδοση UUID σας βάσει της περίπτωσης χρήσης σας αντί να χρησιμοποιείτε προεπιλεγμένα v4. Αν τα αναγνωριστικά σας θα χρησιμεύσουν ως πρωτεύοντα κλειδιά βάσης δεδομένων, τα UUID v7 ή ULID παρέχουν σημαντικά καλύτερη απόδοση εισαγωγής επειδή η χρονικά ταξινομημένη φύση τους κρατά τα ευρετήρια B-tree ακολουθιακά, μειώνοντας τις διαιρέσεις σελίδων και τον κατακερματισμό.
Για κατανεμημένα συστήματα όπου πολλαπλοί κόμβοι δημιουργούν IDs ανεξάρτητα, η καθαρή τυχαιότητα του UUID v4 εξαλείφει κάθε κίνδυνο συγκρούσεων βασισμένων σε χρονοσημάνσεις. Όταν εργάζεστε με URLs ή αναγνωριστικά ορατά στον χρήστη, η συμπαγής μορφή 21 χαρακτήρων του NanoID είναι πιο πρακτική από ένα UUID 36 χαρακτήρων.
Αποθηκεύετε πάντα τα UUIDs ως τον εγγενή δυαδικό τύπο 128-bit στις βάσεις δεδομένων όταν είναι διαθέσιμος (π.χ. ο τύπος uuid του PostgreSQL ή BINARY(16) της MySQL) αντί για συμβολοσειρές VARCHAR(36). Αυτό μειώνει τον αποθηκευτικό χώρο στο μισό και βελτιώνει την απόδοση σύγκρισης. Κατά την αποσφαλμάτωση, θυμηθείτε ότι το ψηφίο έκδοσης (θέση 13) σας λέει αμέσως ποια παραλλαγή UUID εξετάζετε.
Ποια είναι η διαφορά μεταξύ UUID v4, v7, v1, ULID και NanoID;
Το UUID v4 είναι πλήρως τυχαίο (πιο κοινό). Το UUID v7 είναι χρονικά ταξινομημένο με χρονοσήμανση χιλιοστού—ιδανικό για βάσεις δεδομένων. Το UUID v1 χρησιμοποιεί χρονοσήμανση + διεύθυνση MAC. Το ULID είναι ταξινομήσιμο ID 26 χαρακτήρων. Το NanoID είναι συμπαγές ID 21 χαρακτήρων ασφαλές για URL.
Είναι τα δημιουργημένα UUIDs πραγματικά μοναδικά;
Ναι! Το UUID v4 έχει 122 τυχαία bits, δίνοντας περίπου 5,3×10³⁶ πιθανούς συνδυασμούς. Η πιθανότητα δημιουργίας δύο ίδιων UUIDs είναι αστρονομικά χαμηλή.
Ποια είναι η διαφορά μεταξύ UUID και GUID;
Τα UUID (Καθολικά Μοναδικό Αναγνωριστικό) και GUID (Παγκοσμίως Μοναδικό Αναγνωριστικό) είναι ουσιαστικά το ίδιο πράγμα. Το GUID είναι ο όρος της Microsoft για UUID.
Πότε πρέπει να χρησιμοποιήσω UUID v7 αντί για v4;
Χρησιμοποιήστε UUID v7 όταν χρειάζεστε χρονικά ταξινομημένα αναγνωριστικά, ιδιαίτερα ως πρωτεύοντα κλειδιά βάσεων δεδομένων. Το UUID v7 (ορισμένο στο RFC 9562) ενσωματώνει χρονοσήμανση Unix στα πρώτα 48 bits, καθιστώντας τα IDs φυσικά ταξινομήσιμα κατά χρόνο δημιουργίας. Αυτό βελτιώνει δραματικά την απόδοση εισαγωγής σε ευρετήρια B-tree επειδή οι νέες σειρές προστίθενται πάντα στο τέλος, αποφεύγοντας τυχαίες διαιρέσεις σελίδων. Το UUID v4 είναι καθαρά τυχαίο και προκαλεί κατακερματισμό ευρετηρίου στις βάσεις δεδομένων. Χρησιμοποιήστε v4 όταν η σειρά δεν έχει σημασία (API tokens, IDs συνεδρίας, IDs συσχέτισης) και v7 όταν χρειάζεστε χρονικά ταξινομήσιμα IDs (πρωτεύοντα κλειδιά, IDs γεγονότων, κατανεμημένα αρχεία καταγραφής).
Μπορεί πραγματικά να συμβεί σύγκρουση UUID στην πράξη;
Για το UUID v4, η πιθανότητα είναι αστρονομικά χαμηλή. Ένα UUID v4 έχει 122 τυχαία bits, αποδίδοντας 5,3 × 10³⁶ πιθανές τιμές. Για να έχετε 50% πιθανότητα μίας μόνο σύγκρουσης, θα χρειαζόταν να δημιουργήσετε περίπου 2,71 × 10¹⁸ UUIDs — δηλαδή 2,71 πεντάκις εκατομμύρια. Με 1 δισεκατομμύριο UUIDs ανά δευτερόλεπτο, αυτό θα χρειαζόταν περίπου 86 χρόνια. Στην πράξη, ο κίνδυνος σύγκρουσης είναι πολύ πιο πιθανό να προέρχεται από ελαττωματική γεννήτρια τυχαίων αριθμών (κακή πηγή εντροπίας) παρά από μαθηματική πιθανότητα. Το Web Crypto API (crypto.getRandomValues), που χρησιμοποιεί αυτό το εργαλείο, παρέχει κρυπτογραφικά ασφαλή τυχαιότητα κατάλληλη για δημιουργία UUID.
Τι είναι το ULID και πότε πρέπει να το χρησιμοποιήσω αντί για UUID;
Το ULID (Καθολικά Μοναδικό Λεξικογραφικά Ταξινομήσιμο Αναγνωριστικό) είναι ένα αναγνωριστικό 128-bit που συνδυάζει χρονοσήμανση Unix 48-bit σε χιλιοστά του δευτερολέπτου με 80 bits τυχαιότητας, κωδικοποιημένο ως συμβολοσειρά 26 χαρακτήρων Crockford Base32. Τα ULIDs είναι χρονικά ταξινομήσιμα (όπως UUID v7), μη ευαίσθητα σε πεζά-κεφαλαία και ελαφρώς πιο σύντομα από τη μορφή hex 36 χαρακτήρων του UUID. Χρησιμοποιήστε ULID όταν θέλετε φιλικά, ταξινομήσιμα IDs που είναι εύκολα στην αντιγραφή και επικόλληση. Χρησιμοποιήστε UUID όταν χρειάζεστε μέγιστη συμβατότητα με υπάρχοντα συστήματα, βάσεις δεδομένων και βιβλιοθήκες που αναμένουν την τυπική μορφή UUID 8-4-4-4-12. Το UUID v7 προσφέρει παρόμοια πλεονεκτήματα χρονικής ταξινόμησης παραμένοντας συμβατό με το οικοσύστημα UUID.
Τα Αγαπημένα μου
Σύρετε για αναδιάταξη
Δεν υπάρχουν ακόμα αγαπημένα
Πατήστε το ☆ σε οποιοδήποτε εργαλείο για γρήγορη πρόσβαση.