Δωρεάν Γεννήτρια Nano ID - Ασφαλή Μοναδικά IDs Φιλικά προς URL Online
Δημιουργήστε αμέσως ασφαλή Nano IDs! Δωρεάν διαδικτυακό εργαλείο που παράγει συμπαγή, μοναδικά αναγνωριστικά φιλικά προς URL 42% μικρότερα από το UUID. Ιδανικά για βάσεις δεδομένων, API, διακριτικά & συστήματα.
Το μήκος του παραγόμενου Nano ID (1-100 χαρακτήρες)
Επιλέξτε το σύνολο χαρακτήρων για το Nano ID σας
Παραγόμενο Nano ID
Απεικόνιση
Τεκμηρίωση
Μια γεννήτρια Nano ID δημιουργεί μια σύντομη, τυχαία συμβολοσειρά χαρακτήρων που ονομάζεται Nano ID. Τα Nano ID λειτουργούν ως μοναδικά αναγνωριστικά για στοιχεία όπως εγγραφές βάσεων δεδομένων, URL και διακριτικά API, ενώ είναι εξαιρετικά απίθανο δύο παραγόμενα ID να ταιριάξουν ποτέ.
Τι είναι ένα Nano ID;
Ένα Nano ID είναι μια τυχαία παραγόμενη συμβολοσειρά που χρησιμοποιείται για την επισήμανση κάποιου στοιχείου, ώστε να διακρίνεται από κάθε άλλο. Ο προγραμματιστής Andrey Sitnik δημιούργησε τη μορφή το 2017 ως μικρότερη εναλλακτική του UUID (Universally Unique Identifier), ενός αναγνωριστικού 36 χαρακτήρων που χρησιμοποιείται ευρέως στην πληροφορική. Ένα προεπιλεγμένο Nano ID έχει μήκος 21 χαρακτήρες, σε σύγκριση με τους 36 χαρακτήρες ενός UUID, δηλαδή είναι περίπου 42% μικρότερο.
Πώς δημιουργείται ένα Nano ID με αυτό το εργαλείο
Η γεννήτρια αυτής της σελίδας δημιουργεί ένα Nano ID από δύο ρυθμίσεις.
- Μήκος: ακέραιος αριθμός από 1 έως 100. Η προεπιλογή είναι 21.
- Σύνολο χαρακτήρων: η ομάδα χαρακτήρων από την οποία δημιουργείται το ID. Η προεπιλογή είναι το αλφαριθμητικό σύνολο.
Εισαγάγετε μήκος, επιλέξτε σύνολο χαρακτήρων και πατήστε «Generate» για να δημιουργήσετε ένα ID. Πατήστε «Copy» για να το αντιγράψετε ή «Reset» για να επιστρέψετε σε μήκος 21 και στο αλφαριθμητικό σύνολο. Ένα νέο ID εμφανίζεται επίσης αυτόματα κάθε φορά που αλλάζει το μήκος ή το σύνολο χαρακτήρων. Κάτω από τα κουμπιά, το εργαλείο εμφανίζει κάθε χαρακτήρα του ID ως χρωματιστό πλακίδιο: μπλε για κεφαλαίο γράμμα, πράσινο για πεζό γράμμα, πορτοκαλί για ψηφίο και γκρι για σημείο στίξης.
Αν το μήκος δεν είναι ακέραιος αριθμός μεταξύ 1 και 100, το εργαλείο εμφανίζει το μήνυμα «Το μήκος πρέπει να είναι ακέραιος αριθμός μεταξύ 1 και 100» και δεν παράγει ID.
Διαθέσιμα σύνολα χαρακτήρων
Το εργαλείο προσφέρει επτά προκαθορισμένα σύνολα χαρακτήρων. Δεν δέχεται προσαρμοσμένο αλφάβητο που πληκτρολογεί ο χρήστης. Το σύνολο «With Symbols» προσθέτει αυτά τα 26 σημεία στίξης στο αλφαριθμητικό σύνολο: ! @ # $ % ^ & * ( ) _ + - = [ ] { } | ; : , . < > ?.
| Σύνολο χαρακτήρων | Χρησιμοποιούμενοι χαρακτήρες | Μέγεθος αλφαβήτου |
|---|---|---|
| Αλφαριθμητικό (προεπιλογή) | A-Z, a-z, 0–9 | 62 |
| Ασφαλές για URL | A-Z, a-z, 0-9, -, _ | 64 |
| Αριθμητικό | 0–9 | 10 |
| Αλφαβητικό | A-Z, a-z | 52 |
| Πεζά | a-z | 26 |
| Κεφαλαία | A-Z | 26 |
| Με σύμβολα | A-Z, a-z, 0–9 και 26 σημεία στίξης | 88 |
Το αλφαριθμητικό σύνολο επιλέγεται από προεπιλογή. Δεν περιλαμβάνει την παύλα και την κάτω παύλα του ασφαλούς για URL συνόλου, αν και τα γράμματα και τα ψηφία από μόνα τους μπορούν ήδη να τοποθετηθούν με ασφάλεια απευθείας σε URL.
Τύπος Nano ID
Ένα Nano ID δημιουργείται επιλέγοντας τυχαία, έναν-έναν, έναν προκαθορισμένο αριθμό χαρακτήρων από ένα αλφάβητο, με χρήση κρυπτογραφικά ασφαλούς γεννήτριας τυχαίων αριθμών. Πρόκειται για γεννήτρια σχεδιασμένη έτσι ώστε η έξοδός της να μην μπορεί να προβλεφθεί εκ των προτέρων.
1id = random(alphabet, size)
2Με τις προεπιλεγμένες ρυθμίσεις, το alphabet έχει 62 χαρακτήρες και το size είναι 21.
Λυμένο παράδειγμα
Με χρήση του προεπιλεγμένου αλφαριθμητικού αλφαβήτου και μήκος 21, ένα πιθανό παραγόμενο ID είναι:
1K7pQ2mZxT9vY4nR8jH3wL
2Κάθε χαρακτήρας επιλέγεται ανεξάρτητα από τα 62 γράμματα και ψηφία, επομένως η εκτέλεση της γεννήτριας δύο φορές σχεδόν ποτέ δεν θα παράγει την ίδια συμβολοσειρά.
Πώς υπολογίζεται η πιθανότητα σύγκρουσης
Επειδή ένα Nano ID επιλέγεται τυχαία, είναι δυνατό, αν και εξαιρετικά απίθανο, δύο παραγόμενα ID να ταιριάξουν. Αυτό ονομάζεται σύγκρουση. Η πιθανότητα να υπάρξει τουλάχιστον μία σύγκρουση μετά τη δημιουργία k ID ακολουθεί τα ίδια μαθηματικά με το «πρόβλημα των γενεθλίων»:
1P(collision) ≈ 1 - e^(-k² / (2n))
2Εδώ, το n είναι ο αριθμός των πιθανών ID: το μέγεθος του αλφαβήτου υψωμένο στη δύναμη του μήκους του ID, ή n = alphabet_size^length.
Λυμένο παράδειγμα
Για την προεπιλεγμένη ρύθμιση, με αλφάβητο 62 χαρακτήρων και μήκος 21 χαρακτήρων:
1n = 62^21 ≈ 4.4 × 10^37 possible IDs
2Η επίλυση του τύπου για πιθανότητα σύγκρουσης 1% δίνει:
1k ≈ 9.4 × 10^17 IDs
2Αυτό σημαίνει ότι πρέπει να δημιουργηθούν περίπου 940 τετράκις εκατομμύρια ID προτού υπάρξει έστω 1% πιθανότητα να ταιριάξουν δύο από αυτά. Με ρυθμό δημιουργίας ενός εκατομμυρίου ID ανά δευτερόλεπτο, η επίτευξη αυτού του αριθμού θα απαιτούσε περίπου 29.700 έτη.
Η μετάβαση στο ασφαλές για URL αλφάβητο 64 χαρακτήρων αυξάνει ελαφρώς τον αριθμό, σε περίπου 1,3 × 10^18 ID για τον ίδιο κίνδυνο 1%, επειδή το μεγαλύτερο αλφάβητο αφήνει περισσότερα πιθανά ID προς επιλογή.
Το Nano ID σε σύγκριση με άλλα αναγνωριστικά
| Τύπος | Μήκος | Παρατηρήσεις |
|---|---|---|
| Nano ID | 21 χαρακτήρες, ρυθμιζόμενο | Τυχαίο, συμπαγές, δεν ταξινομείται χρονολογικά |
| UUID | 36 χαρακτήρες | Τυποποιημένη μορφή, ευρεία υποστήριξη, περιέχει παύλες |
| ULID | 26 χαρακτήρες | Ταξινομήσιμο κατά χρόνο δημιουργίας |
| KSUID | 27 χαρακτήρες | Ταξινομήσιμο κατά χρόνο δημιουργίας, περιλαμβάνει χρονική σήμανση |
| Ακέραιος με αυτόματη αύξηση | Μεταβάλλεται | Απλό και διαδοχικό, αλλά προβλέψιμο και δύσκολο να συντονιστεί μεταξύ ξεχωριστών βάσεων δεδομένων |
Συχνές ερωτήσεις
Ποιο είναι το προεπιλεγμένο μήκος και σύνολο χαρακτήρων ενός Nano ID;
Η προεπιλογή είναι 21 χαρακτήρες από το αλφαριθμητικό σύνολο χαρακτήρων: A-Z, a-z, 0-9, δηλαδή συνολικά 62 χαρακτήρες.
Υποστηρίζει αυτό το εργαλείο προσαρμοσμένο αλφάβητο;
Όχι. Προσφέρει επτά προκαθορισμένα σύνολα χαρακτήρων: αλφαριθμητικό, ασφαλές για URL, αριθμητικό, αλφαβητικό, πεζά, κεφαλαία και «With Symbols».
Σε τι διαφέρει ένα Nano ID από ένα UUID;
Ένα Nano ID είναι μικρότερο. Η προεπιλογή είναι 21 χαρακτήρες, έναντι 36 χαρακτήρων ενός UUID, δηλαδή περίπου 42% μικρότερο. Και τα δύο δημιουργούνται τυχαία και δεν είναι διαδοχικά.
Μπορεί ένα Nano ID να ταξινομηθεί βάσει του χρόνου δημιουργίας του;
Όχι. Τα Nano ID είναι πλήρως τυχαία, επομένως δεν περιέχουν πληροφορίες για το πότε δημιουργήθηκαν. Μορφές όπως τα ULID ή KSUID έχουν σχεδιαστεί ώστε να ταξινομούνται χρονικά.
Είναι ασφαλές να χρησιμοποιηθεί ένα Nano ID ως πρωτεύον κλειδί βάσης δεδομένων;
Ναι. Θα πρέπει να αποθηκεύεται ως στήλη κειμένου ή συμβολοσειράς και όχι ως αριθμός, με μοναδικό ευρετήριο για γρήγορες αναζητήσεις.
Πόσα πιθανά Nano ID υπάρχουν;
Εξαρτάται από το επιλεγμένο μήκος και σύνολο χαρακτήρων. Με το προεπιλεγμένο αλφάβητο 62 χαρακτήρων και μήκος 21 χαρακτήρων, υπάρχουν 62^21, περίπου 4,4 × 10^37, πιθανά ID.
Παραπομπές
- Sitnik, Andrey. "Nano ID." GitHub, https://github.com/ai/nanoid.
- "Universally unique identifier." Wikipedia, Ίδρυμα Wikimedia, https://en.wikipedia.org/wiki/Universally_unique_identifier.
- "ULID Spec." GitHub, https://github.com/ulid/spec.