fixmint
EL

UUID v4 ή v7: ποιο να χρησιμοποιήσετε και γιατί έχει σημασία

Από · · ενημερώθηκε 8 Νοεμβρίου 2026 · 5 λεπτά ανάγνωση

Χρησιμοποιήστε το UUID v4 όταν χρειάζεστε ένα τυχαίο αναγνωριστικό και τίποτα περισσότερο. Χρησιμοποιήστε το UUID v7 όταν το αναγνωριστικό θα είναι κλειδί βάσης δεδομένων, ή όταν θέλετε τα ID να ταξινομούνται ανά ώρα δημιουργίας. Και τα δύο είναι 128 bit γραμμένα στην ίδια μορφή των 36 χαρακτήρων, οπότε η διαφορά βρίσκεται στον τρόπο που είναι διατεταγμένα τα bit. Η γεννήτρια UUID παρακάτω δημιουργεί και τις δύο εκδόσεις, από 1 έως 500 κάθε φορά, μέσα στον περιηγητή σας.

Γεννήτρια UUIDΘέλω μοναδικά ID για τον κώδικαΚάντε το δωρεάν

Πώς μοιάζει ένα UUID

Ένα UUID, ή universally unique identifier, είναι ένας αριθμός 128 bit γραμμένος με 32 δεκαδικά ψηφία σε δεκαεξαδική μορφή, σε πέντε ομάδες: 8, 4, 4, 4 και 12 ψηφία, χωρισμένες με παύλες. Ένα παράδειγμα είναι το 3f2b8c1e-6d4a-4f7b-9c2e-8a1d5e0b7f63.

Δύο μέρη του αριθμού είναι σταθερά. Τέσσερα bit κρατούν την έκδοση, οπότε η τρίτη ομάδα ξεκινά με 4 για v4 ή με 7 για v7. Δύο bit κρατούν τη μορφή (variant), οπότε η τέταρτη ομάδα ξεκινά με 8, 9, a ή b. Τα υπόλοιπα bit μεταφέρουν το ίδιο το αναγνωριστικό. Τα bit έκδοσης και μορφής είναι ο λόγος που ένα UUID v4 έχει 122 τυχαία bit και όχι 128.

UUID v4: τυχαίο

Ένα UUID v4 είναι τυχαίο, εκτός από αυτά τα σταθερά bit. Τα 122 τυχαία bit του κάνουν μια επανάληψη εξαιρετικά απίθανη. Ας υποθέσουμε ότι δημιουργείτε ένα δισεκατομμύριο UUID v4. Η πιθανότητα να ταιριάζουν δύο μεταξύ τους είναι περίπου n στο τετράγωνο διά δύο φορές το πλήθος των δυνατών τιμών, δηλαδή περίπου 10 στη δύναμη του μείον 19. Με άλλα λόγια, οι συγκρούσεις δεν είναι κάτι για το οποίο χρειάζεται να σχεδιάσετε ειδικά.

Αυτή η εκτίμηση προϋποθέτει ότι η γεννήτρια παίρνει τα bit της από μια κρυπτογραφικά ασφαλή πηγή τυχαιότητας. Μια προβλέψιμη γεννήτρια θα υπονόμευε την εκτίμηση. Αυτό το εργαλείο χρησιμοποιεί την κρυπτογραφικά ασφαλή πηγή τυχαιότητας του περιηγητή, μέσω των crypto.randomUUID ή crypto.getRandomValues.

UUID v7: πρώτα ο χρόνος

Το v7 ορίζεται στο RFC 9562. Τα πρώτα 48 bit κρατούν τον χρόνο Unix σε χιλιοστά του δευτερολέπτου, οπότε ένα ID που δημιουργείται αργότερα έχει μεγαλύτερο πρώτο μέρος από ένα ID που δημιουργήθηκε νωρίτερα. Ακολουθούν τα bit έκδοσης, μετά τυχαία bit, τα bit μορφής και ακόμη περισσότερα τυχαία bit. Ένα μέρος του τυχαίου χώρου μπορεί να κρατά έναν μετρητή, ο οποίος διατηρεί τη σειρά των ID όταν δημιουργούνται πολλά μέσα στο ίδιο χιλιοστό του δευτερολέπτου.

Επειδή ο χρόνος έρχεται πρώτος, η ταξινόμηση των ID v7 ως κείμενο, με ενιαία πεζά ή κεφαλαία, τα ταξινομεί ανά ώρα δημιουργίας, με ακρίβεια χιλιοστού του δευτερολέπτου. Αυτό ισχύει επειδή τα δεκαεξαδικά ψηφία έχουν σταθερό πλάτος και ο χρόνος βρίσκεται στους πρώτους χαρακτήρες.

Ο χρόνος είναι επίσης ορατός. Όποιος διαβάσει ένα UUID v7 μπορεί να δει κατά προσέγγιση πότε δημιουργήθηκε. Μπορείτε να το ελέγξετε μόνοι σας με το πεδίο Έλεγχος στη γεννήτρια UUID, το οποίο μετατρέπει ξανά τα πρώτα 48 bit σε ημερομηνία και ώρα.

Γιατί το v7 ταιριάζει στα ευρετήρια βάσεων

Ένα ευρετήριο βάσης είναι συνήθως ένα B-tree, δομή που διατηρείται ταξινομημένη κατά κλειδί. Όταν το κλειδί είναι τυχαίο, όπως στο v4, κάθε νέα εγγραφή μπαίνει σε τυχαία θέση μέσα στο ευρετήριο. Η βάση πρέπει τότε να γράφει σε πολλά διαφορετικά σημεία του ευρετηρίου, κάτι που προκαλεί περισσότερες διασπάσεις σελίδων και περισσότερες αστοχίες μνήμης cache. Σε μεγάλο πίνακα, αυτή η δουλειά αθροίζεται.

Ένα κλειδί v7 είναι μεγαλύτερο από σχεδόν όλα τα κλειδιά που υπάρχουν ήδη στο ευρετήριο, επειδή το μέρος του χρόνου αυξάνεται. Οι νέες εγγραφές προστίθενται κοντά στο τέλος του ευρετηρίου, όπως θα γινόταν με έναν αριθμό που αυξάνεται αυτόματα. Οι πρόσφατες σελίδες του ευρετηρίου μένουν στη μνήμη και οι εγγραφές παραμένουν τακτικές. Η διαφορά είναι πιο αισθητή σε μεγάλους πίνακες που διαρκώς μεγαλώνουν, ενώ σε έναν μικρό πίνακα δύσκολα τη διακρίνετε.

Επιλογή ανάμεσα σε v4 και v7

  • Πρωτεύοντα κλειδιά βάσης δεδομένων ή οποιονδήποτε πίνακα που μεγαλώνει με τον χρόνο: v7. Το ευρετήριο παραμένει τακτικό.
  • Αρχεία καταγραφής, συμβάντα ή μηνύματα που συχνά ταξινομείτε ανά χρόνο: v7, επειδή το ίδιο το ID μεταφέρει τη σειρά.
  • Δημόσια ID όπου ο χρόνος δημιουργίας πρέπει να μένει κρυφός: v4. Ένα ID v7 αποκαλύπτει πότε δημιουργήθηκε.
  • Πολλές συσκευές με αναξιόπιστα ρολόγια: και τα δύο παραμένουν μοναδικά, επειδή αυτή τη δουλειά την κάνουν τα τυχαία bit. Μόνο η σειρά ταξινόμησης του v7 εξαρτάται από τη σωστή ώρα των ρολογιών.

Και οι δύο εκδόσεις είναι τυπικές, αλλά παλαιότερες βιβλιοθήκες μπορεί να γνωρίζουν μόνο το v4. Το RFC 4122 περιέγραφε τις εκδόσεις 1 έως 5 για πολλά χρόνια. Το RFC 9562 δημοσιεύθηκε τον Μάιο του 2024, αντικαθιστά το RFC 4122 και ορίζει τις εκδόσεις 6, 7 και 8. Ελέγξτε ότι η έκδοση της βιβλιοθήκης σας υποστηρίζει το v7 πριν βασιστείτε σε αυτό.

Αποθήκευση UUID

Ένα UUID γραμμένο ως κείμενο παίρνει 36 χαρακτήρες. Τα 16 byte του μπορούν να αποθηκευτούν σε δυαδική μορφή, η οποία καταλαμβάνει πολύ λιγότερο χώρο. Πολλές βάσεις έχουν εγγενή τύπο UUID ή στήλη δυαδικού 16 byte για αυτόν τον σκοπό, και η σύγκριση γίνεται ταχύτερα από ό,τι με κείμενο.

Επιλέξτε μία μορφή και κρατήστε την. Κεφαλαία, πεζά, παύλες και αγκύλες είναι για έναν άνθρωπο το ίδιο UUID, όμως μια βάση δεδομένων ή μια σύγκριση συμβολοσειρών μπορεί να τα αντιμετωπίσει ως διαφορετικές τιμές. Οι επιλογές της γεννήτριας για κεφαλαία, χωρίς παύλες και για αγκύλες υπάρχουν για συστήματα που χρειάζονται αυτές τις μορφές.

Ποτέ μη χρησιμοποιείτε UUID ως μυστικό

Ένα UUID είναι αναγνωριστικό, όχι κωδικός πρόσβασης, διακριτικό σύνδεσης ή κλειδί πρόσβασης. Είναι φτιαγμένο για να είναι μοναδικό, όχι για να είναι μη μαντεύσιμο. Ένα UUID v7 μάλιστα φέρει και τον χρόνο δημιουργίας του. Επιπλέον, τα αναγνωριστικά επικολλώνται σε συνδέσμους, αρχεία καταγραφής, email και στιγμιότυπα οθόνης, όπου όποιος τα δει μπορεί να τα ξαναχρησιμοποιήσει.

Ο έλεγχος πρόσβασης ανήκει στον διακομιστή. Κάποιος που γνωρίζει ένα ID δεν πρέπει να μπορεί αυτόματα να δει ή να αλλάξει την εγγραφή που αυτό ονομάζει. Για κωδικούς πρόσβασης, φράσεις κωδικών ή διακριτικά, χρησιμοποιήστε μια γεννήτρια φτιαγμένη για μυστικά. Η γεννήτρια κωδικών πρόσβασης δημιουργεί τυχαίους κωδικούς ή φράσεις από λέξεις στη συσκευή σας, με ασφαλή τυχαιότητα, και εκτιμά τη δύναμή τους. Για το γιατί το μήκος και η τυχαιότητα έχουν σημασία, διαβάστε για τους ισχυρούς κωδικούς και την εντροπία.

Χρήση του εργαλείου

  1. Επιλέξτε την έκδοση 4 για τυχαία ID ή την έκδοση 7 για ID που ταξινομούνται ανά χρόνο.
  2. Ορίστε το πλήθος, από 1 έως 500 κάθε φορά.
  3. Επιλέξτε κεφαλαία, χωρίς παύλες ή αγκύλες, αν ο κώδικάς σας χρειάζεται μια συγκεκριμένη μορφή.
  4. Αντιγράψτε όλα τα UUID ή κατεβάστε τη λίστα ως αρχείο .txt.
  5. Επικολλήστε οποιοδήποτε UUID στο πεδίο Έλεγχος για να διαβάσετε την έκδοσή του, τη μορφή του και, για το v7, τον χρόνο που ενσωματώνει.

Σύντομες απαντήσεις

Είναι μοναδικό ένα UUID v4; Στην πράξη, ναι. Τα 122 τυχαία bit του κάνουν την επανάληψη τόσο απίθανη, που δεν χρειάζεται να τη ελέγξετε.

Να χρησιμοποιώ το v7 για όλα; Όχι πάντα. Χρησιμοποιήστε το v7 για κλειδιά βάσεων δεδομένων και για ό,τι ταξινομείτε ανά χρόνο. Χρησιμοποιήστε το v4 όταν ο χρόνος δημιουργίας πρέπει να μένει κρυφός.

Μπορώ να χρησιμοποιήσω ένα UUID ως κωδικό πρόσβασης; Όχι. Είναι αναγνωριστικό. Για οτιδήποτε πρέπει να μείνει μυστικό, χρησιμοποιήστε μια γεννήτρια κωδικών πρόσβασης.

Στέλνει το εργαλείο τα ID κάπου; Όχι. Τα ID δημιουργούνται και εμφανίζονται στον περιηγητή σας και δεν αποστέλλονται σε διακομιστή.

Μετάφραση από το Αγγλικό πρωτότυπο με τη βοήθεια τεχνητής νοημοσύνης.

Σχόλια

    Δεν υπάρχουν σχόλια ακόμη. Γίνετε οι πρώτοι.

    Η βαθμολογία σας (προαιρετικό)

    Το email σας δεν εμφανίζεται ούτε αποθηκεύεται ποτέ.

    Εξώφυλλο του Open Data for AGI - Why Public, Free, and Open Datasets MatterOpen Data for AGI - Why Public, Free, and Open Datasets Matter

    Γιατί τα δημόσια, δωρεάν και ανοιχτά σύνολα δεδομένων θα διαμορφώσουν την τεχνητή γενική νοημοσύνη τόσο όσο οι αλγόριθμοι και η υπολογιστική ισχύς.

    $4.99Αγοράστε στο GumroadΣτα αγγλικά