Langkau ke kandungan

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

Masukkan nilai untuk melihat keputusan

Visualisasi

Kalkulator Pemuatan...
📚

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.

  1. Panjang: nombor bulat daripada 1 hingga 100. Nilai lalainya ialah 21.
  2. 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 aksaraAksara yang digunakanSaiz abjad
Abjad angka (lalai)A-Z, a-z, 0–962
Selamat untuk URLA-Z, a-z, 0-9, -, _64
Numerik0–910
AbjadA-Z, a-z52
Huruf kecila-z26
Huruf besarA-Z26
Dengan SimbolA-Z, a-z, 0–9 dan 26 tanda baca88

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)
2

Dengan 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
2

Setiap 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))
2

Di 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
2

Menyelesaikan rumus untuk kebarangkalian perlanggaran 1% memberikan:

1k ≈ 9.4 × 10^17 IDs
2

Ini 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

JenisPanjangCatatan
Nano ID21 aksara, boleh dilaraskanRawak, padat dan tidak boleh diisih mengikut masa
UUID36 aksaraFormat piawai, disokong secara meluas dan mengandungi tanda sempang
ULID26 aksaraBoleh diisih mengikut masa penciptaan
KSUID27 aksaraBoleh diisih mengikut masa penciptaan dan mengandungi cap masa
Integer kenaikan automatikBerbeza-bezaRingkas 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

  1. Sitnik, Andrey. "Nano ID." GitHub, https://github.com/ai/nanoid.
  2. "Universally unique identifier." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Universally_unique_identifier.
  3. "ULID Spec." GitHub, https://github.com/ulid/spec.