ULID Generator

Δημιουργήστε λεξικογραφικά ταξινομήσιμα αναγνωριστικά με χρονική σήμανση και τυχαιότητα

Δοκιμάστε αυτά τα παραδείγματα:

Τι είναι το ULID;

ULID (Παγκοσμίως Μοναδικός Λεξικογραφικά Ταξινομήσιμος Αναγνωριστής) είναι μια μορφή αναγνωριστικού 128-bit σχεδιασμένη να ξεπεράσει τους περιορισμούς των UUID. Αποτελείται από:

  • Timestamp: 48 bits ακρίβειας χιλιοστών του δευτερολέπτου Unix time
  • Randomness: 80 bits κρυπτογραφικά ασφαλών τυχαίων δεδομένων
  • Encoding: Αναπαράσταση Base32 (26 χαρακτήρες)

Παράδειγμα μορφής: 01ARZ3NDEKTSV4RRFFQ69G5FAV

Πώς λειτουργεί το ULID

  1. Δημιουργία 48 bits για χρονική σήμανση (Unix time σε χιλιοστά του δευτερολέπτου)
  2. Δημιουργία 80 bits κρυπτογραφικά ασφαλών τυχαίων δεδομένων
  3. Συνδυασμός χρονικής σήμανσης (πιο σημαντικό) με τυχαιότητα (λιγότερο σημαντικό)
  4. Κωδικοποίηση ολόκληρης της τιμής 128-bit χρησιμοποιώντας το αλφάβητο Base32 του Crockford
  5. Το αποτέλεσμα είναι μια συμβολοσειρά 26 χαρακτήρων (οι πρώτοι 10 χαρακτήρες είναι χρονική σήμανση, οι τελευταίοι 16 είναι τυχαιότητα)

Πλεονεκτήματα & Σκέψεις

AdvantagesConsiderations
  • Λεξικογραφικά ταξινομήσιμο
  • Σετ χαρακτήρων ασφαλές για URL
  • Δεν απαιτείται ειδική κωδικοποίηση
  • Case-insensitive
  • Δεν υπάρχουν ανησυχίες για την ιδιωτικότητα
  • Νεότερο, λιγότερο διαδεδομένο
  • Περιορισμένη υποστήριξη βιβλιοθηκών
  • Δεν είναι συμβατό με UUID
  • Δεν μπορεί να επιστρέψει πριν το 1970

Δομή ULID

ComponentBitsCharactersDescription
Timestamp48 bits10 χαρακτήρεςUnix timestamp (ms) κωδικοποιημένο σε Base32
Randomness80 bits16 χαρακτήρεςΤυχαία bytes κωδικοποιημένα σε Base32

Σύγκριση ULID με UUID

FeatureULIDUUID v1UUID v4UUID v7
Size128 bits128 bits128 bits128 bits
Μήκος συμβολοσειράς26 χαρακτήρες36 χαρακτήρες36 χαρακτήρες36 χαρακτήρες
Time-based
Φυσική ταξινόμηση
Ασφαλές για URL
Έκθεση διεύθυνσης MAC
Τυχαίο συστατικό
Κανoνικό πρότυπο⚠️ Προσχέδιο

Συνηθισμένες περιπτώσεις χρήσης

  • Πρωτεύοντα κλειδιά βάσης δεδομένων: Βελτιστοποιημένοι δείκτες απόδοσης
  • Κατανεμημένα συστήματα: Δημιουργία χωρίς συντονισμό
  • APIs: Καθαρά, ασφαλή για URL αναγνωριστικά
  • Δεδομένα χρονικών σειρών: Φυσική χρονολογική ταξινόμηση
  • Συστήματα καταγραφής: Ταξινομήσιμα αναγνωριστικά γεγονότων
  • Μοντέρνες εφαρμογές: Όπου οι περιορισμοί των UUID είναι προβληματικοί

Γιατί να επιλέξετε ULID;

  • Sortability: Λεξικογραφική ταξινόμηση κατά χρόνο δημιουργίας
  • Ασφάλεια URL: Δεν απαιτείται κωδικοποίηση URL (σε αντίθεση με UUID με παύλες)
  • Compactness: 26 χαρακτήρες έναντι 36 για UUID
  • Ανεξαρτησία πεζών-κεφαλαίων: Μειώνει τα σφάλματα εισαγωγής χρήστη
  • Monotonicity: Προαιρετική μονοτονική ταξινόμηση εντός του ίδιου χιλιοστού του δευτερολέπτου
  • Χωρίς ειδικούς χαρακτήρες: Απλή, μόνο αλφαριθμητική μορφή

Συχνές Ερωτήσεις

Πώς συγκρίνεται το ULID με το UUID v7;

Και οι δύο χρησιμοποιούν Unix timestamps για ταξινομησιμότητα και έχουν τυχαία συστατικά. Οι βασικές διαφορές είναι η κωδικοποίηση (Base32 έναντι hex), η μορφή (26 χαρακτήρες έναντι 36) και η τυποποίηση (UUID v7 είναι σε προσχέδιο προδιαγραφής RFC).

Μπορώ να εξάγω τον χρόνο δημιουργίας από ένα ULID;

Ναι. Οι πρώτοι 10 χαρακτήρες αντιπροσωπεύουν ένα Unix timestamp με ακρίβεια χιλιοστού του δευτερολέπτου που μπορεί να αποκωδικοποιηθεί και να μετατραπεί σε τυπική ημερομηνία και ώρα.

Είναι τα ULID συμβατά με πεδία βάσης δεδομένων UUID;

Όχι. Τα ULID χρησιμοποιούν διαφορετική μορφή και πρέπει να αποθηκεύονται ως συμβολοσειρές ή δυαδικά δεδομένα αντί για εγγενείς τύπους UUID στη βάση δεδομένων.

Τι είναι η μονοτονικότητα στα ULID;

Ορισμένες υλοποιήσεις ULID προσφέρουν επιλογή μονοτονικότητας που εξασφαλίζει διαδοχική σειρά ταξινόμησης ακόμη και εντός του ίδιου χιλιοστού του δευτερολέπτου αυξάνοντας το τυχαίο συστατικό για ULID που δημιουργούνται στην ίδια χρονική σήμανση.

Ποιο σετ χαρακτήρων χρησιμοποιεί το ULID;

Το ULID χρησιμοποιεί την κωδικοποίηση Base32 του Crockford (0-9, A-Z εξαιρώντας I, L, O, U) που έχει σχεδιαστεί για να ελαχιστοποιεί τη σύγχυση και τα σφάλματα καταγραφής όταν τα IDs διαβάζονται ή εισάγονται χειροκίνητα.

Resources

Αλφάβητο Base32 του Crockford

Αξία κωδικοποίησηςCharacterNotes
0-90-9Δεκαδικά ψηφία
10-31A-ZΕξαιρώντας I, L, O, U για ευανάγνωστοτητα

Χαρακτήρες: 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Αυτή η κωδικοποίηση είναι ανεξάρτητη πεζών-κεφαλαίων για την αποκωδικοποίηση (αλλά τα ULID συνήθως δημιουργούνται με κεφαλαία).