Pembuat ID Nano Percuma - Pengecam Unik Selamat URL Dalam Talian
Hasilkan ID Nano selamat serta-merta! Alat dalam talian percuma mencipta pengecam unik yang padat, selamat URL 42% lebih pendek daripada UUID. Sempurna untuk pangkalan data, API, token & sistem.
Panjang Nano ID yang dijana (1-100 aksara)
Pilih set aksara untuk Nano ID anda
Nano ID Dijana
Visualisasi
Dokumentasi
Penjana Nano ID mencipta rentetan aksara rawak yang pendek, dipanggil Nano ID. Nano ID berfungsi sebagai pengecam unik untuk perkara seperti rekod pangkalan data, URL dan token API, dan kebarangkalian dua ID yang dijana sepadan adalah amat kecil.
Apakah Nano ID?
Nano ID ialah rentetan yang dijana secara rawak untuk melabelkan sesuatu supaya dapat dibezakan daripada semua perkara lain. Pembangun perisian Andrey Sitnik mencipta format ini pada 2017 sebagai alternatif yang lebih kecil kepada UUID (Pengecam Unik Sejagat), iaitu pengecam sepanjang 36 aksara dan digunakan secara meluas dalam pengkomputeran. Nano ID lalai mempunyai 21 aksara, berbanding 36 aksara bagi UUID, iaitu pengurangan kira-kira 42%.
Cara menjana Nano ID dengan alat ini
Penjana pada halaman ini membina Nano ID berdasarkan dua tetapan.
- Panjang: nombor bulat daripada 1 hingga 100. Nilai lalainya ialah 21.
- Set aksara: kumpulan aksara yang digunakan untuk membina ID. Nilai lalainya ialah abjad angka.
Masukkan panjang, pilih set aksara, kemudian tekan "Jana" untuk mencipta ID. Tekan "Salin" untuk menyalinnya, atau "Set Semula" untuk kembali kepada panjang 21 dan set abjad angka. ID baharu juga muncul secara automatik setiap kali panjang atau set aksara berubah. Di bawah butang, alat ini memaparkan setiap aksara ID sebagai blok berwarna: biru untuk huruf besar, hijau untuk huruf kecil, jingga untuk digit dan kelabu untuk tanda baca.
Jika panjangnya bukan nombor bulat antara 1 dan 100, alat ini memaparkan mesej "Panjang mestilah nombor bulat antara 1 dan 100" dan tidak menghasilkan ID.
Set aksara yang tersedia
Alat ini menyediakan tujuh set aksara tetap. Alat ini tidak menerima abjad tersuai yang ditaip oleh pengguna. Set "Dengan Simbol" menambah tanda baca berikut, berjumlah 26, kepada aksara abjad angka: ! @ # $ % ^ & * ( ) _ + - = [ ] { } | ; : , . < > ?.
| Set aksara | Aksara yang digunakan | Saiz abjad |
|---|---|---|
| Abjad angka (lalai) | A-Z, a-z, 0–9 | 62 |
| Selamat untuk URL | A-Z, a-z, 0-9, -, _ | 64 |
| Numerik | 0–9 | 10 |
| Abjad | A-Z, a-z | 52 |
| Huruf kecil | a-z | 26 |
| Huruf besar | A-Z | 26 |
| Dengan Simbol | A-Z, a-z, 0–9 dan 26 tanda baca | 88 |
Set abjad angka dipilih secara lalai. Set ini tidak menyertakan tanda sempang dan garis bawah yang digunakan dalam set selamat untuk URL, walaupun huruf dan digit sahaja sudah selamat untuk diletakkan terus dalam URL.
Rumus Nano ID
Nano ID dibina dengan memilih sejumlah aksara tetap secara rawak daripada suatu abjad, satu demi satu, menggunakan penjana nombor rawak yang selamat dari segi kriptografi. Penjana sedemikian direka bentuk supaya hasilnya tidak dapat diramalkan lebih awal.
1id = random(alphabet, size)
2Dengan tetapan lalai, alphabet mempunyai 62 aksara dan size ialah 21.
Contoh yang diselesaikan
Dengan menggunakan abjad angka lalai dan panjang 21, satu ID yang mungkin dijana ialah:
1K7pQ2mZxT9vY4nR8jH3wL
2Setiap aksara dipilih secara bebas daripada 62 huruf dan digit, jadi menjalankan penjana dua kali hampir tidak pernah menghasilkan rentetan yang sama.
Pengiraan kebarangkalian perlanggaran
Oleh sebab Nano ID dipilih secara rawak, terdapat kemungkinan, walaupun sangat kecil, dua ID yang dijana sepadan. Perkara ini dipanggil perlanggaran. Kebarangkalian berlakunya sekurang-kurangnya satu perlanggaran selepas menjana k ID mengikut matematik yang sama seperti "masalah hari jadi":
1P(collision) ≈ 1 - e^(-k² / (2n))
2Di sini, n ialah bilangan ID yang mungkin: saiz abjad dipangkatkan dengan panjang ID, atau n = alphabet_size^length.
Contoh yang telah dikerjakan
Untuk tetapan lalai, dengan abjad 62 aksara dan panjang 21 aksara:
1n = 62^21 ≈ 4.4 × 10^37 possible IDs
2Menyelesaikan rumus untuk kebarangkalian perlanggaran 1% memberikan:
1k ≈ 9.4 × 10^17 IDs
2Ini bermakna kira-kira 940 kuadrilion ID perlu dijana sebelum terdapat walaupun kebarangkalian 1% bahawa dua daripadanya sepadan. Pada kadar sejuta ID dijana setiap saat, jumlah itu akan dicapai dalam kira-kira 29,700 tahun.
Beralih kepada abjad selamat untuk URL yang terdiri daripada 64 aksara meningkatkan jumlah itu sedikit, kepada kira-kira 1.3 × 10^18 ID untuk risiko 1% yang sama, kerana abjad yang lebih besar menawarkan lebih banyak ID yang boleh dipilih.
Nano ID berbanding pengecam lain
| Jenis | Panjang | Catatan |
|---|---|---|
| Nano ID | 21 aksara, boleh dilaraskan | Rawak, padat dan tidak boleh diisih mengikut masa |
| UUID | 36 aksara | Format piawai, disokong secara meluas dan mengandungi tanda sempang |
| ULID | 26 aksara | Boleh diisih mengikut masa penciptaan |
| KSUID | 27 aksara | Boleh diisih mengikut masa penciptaan dan mengandungi cap masa |
| Integer kenaikan automatik | Berbeza-beza | Ringkas dan berjujukan, tetapi boleh diramal serta sukar diselaraskan merentas pangkalan data yang berasingan |
Soalan lazim
Apakah panjang dan set aksara Nano ID lalai?
Nilai lalainya ialah 21 aksara daripada set aksara abjad angka: A-Z, a-z, 0-9, iaitu sejumlah 62 aksara.
Adakah alat ini menyokong abjad tersuai?
Tidak. Alat ini menyediakan tujuh set aksara tetap: abjad angka, selamat untuk URL, numerik, abjad, huruf kecil, huruf besar dan "Dengan Simbol".
Apakah perbezaan Nano ID dengan UUID?
Nano ID lebih pendek. Nilai lalainya ialah 21 aksara berbanding 36 aksara bagi UUID, kira-kira 42% lebih pendek. Kedua-duanya dijana secara rawak dan tidak berjujukan.
Bolehkah Nano ID diisih mengikut masa penciptaannya?
Tidak. Nano ID sepenuhnya rawak, jadi ia tidak mengandungi maklumat tentang masa ID itu dijana. Format seperti ULID atau KSUID direka bentuk supaya boleh diisih mengikut masa.
Adakah Nano ID selamat digunakan sebagai kunci utama pangkalan data?
Ya. Nano ID hendaklah disimpan dalam lajur teks atau rentetan, bukannya nombor, dengan indeks unik untuk carian pantas.
Berapakah bilangan Nano ID yang mungkin?
Hal ini bergantung pada panjang dan set aksara yang dipilih. Dengan abjad yang terdiri daripada 62 aksara dan panjang 21 aksara sebagai lalai, terdapat 62^21, iaitu kira-kira 4.4 × 10^37, ID yang mungkin.
Rujukan
- Sitnik, Andrey. "Nano ID." GitHub, https://github.com/ai/nanoid.
- "Universally unique identifier." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Universally_unique_identifier.
- "ULID Spec." GitHub, https://github.com/ulid/spec.