Langkau ke kandungan

Penjana CUID Cekap untuk Pengenal Unik dalam Sistem

Hasilkan pengenal unik yang tahan perlanggaran (CUID) untuk sistem teragih, pangkalan data, dan aplikasi web. Cipta ID yang boleh diukur dan disusun dengan serta-merta.

Penjana CUID

Hasilkan ID yang tahan konflik dengan cepat dan mudah.

Klik "Hasilkan CUID Baru" untuk mencipta id.
Kalkulator Pemuatan...
📚

Dokumentasi

Apakah CUID?

CUID (pengecam unik kalis perlanggaran) ialah rentetan pendek huruf dan angka yang digunakan untuk melabel rekod, fail atau peristiwa supaya tiada dua item berkongsi nama yang sama. Alat ini menjana CUID2, versi semasa format tersebut, menggunakan pustaka @paralleldrive/cuid2. Setiap id mempunyai 25 aksara, hanya mengandungi huruf kecil dan angka, serta dicipta sepenuhnya dalam pelayar — tiada apa-apa dihantar ke pelayan.

Cara Menggunakan Penjana CUID Ini

  1. Klik Jana CUID Baharu untuk mencipta id.
  2. Klik Salin ke Papan Klip untuk menyalinnya.
  3. Tampal id itu ke dalam pangkalan data, nama fail atau aplikasi.
  4. Klik jana sekali lagi untuk mendapatkan id lain. Perlanggaran antara nilai CUID2 yang berasingan amat tidak mungkin berlaku, walaupun secara matematiknya bukan mustahil.
  5. Klik Set Semula untuk mengosongkan hasil.

Id yang dijana turut disimpan dalam URL halaman, jadi pautan kepada hasil tersebut boleh dikongsi atau ditandai buku.

Struktur dan Formula CUID2

CUID2 dibina seperti berikut:

1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2

Fungsi cincang mencampurkan empat input peribadi: masa semasa, pembilang bagi setiap sesi, cap jari mesin hos dan entropi rawak. Fungsi itu memprosesnya melalui SHA3-512, menukar hasilnya kepada asas 36 (angka 0–9 dan huruf a-z), kemudian mengekalkan 24 aksara tersebut. Huruf pertama yang rawak menjadikan id siap mempunyai 25 aksara, iaitu panjang yang ditetapkan untuk alat ini.

Hanya aksara pertama berdiri sendiri: huruf rawak yang diletakkan di hadapan supaya setiap id bermula dengan huruf, bukannya angka. Banyak sistem, seperti nama jadual dan lajur SQL, menghendaki pengecam bermula dengan huruf, jadi ini menjadikan CUID2 selamat digunakan sebagai nama hampir di mana-mana. Setiap aksara selepas huruf pertama itu ialah sebahagian daripada satu badan cincang berterusan dan legap — tiada bahagian berasingan.

Oleh sebab cincangan hanya berjalan sehala, tiada inputnya yang boleh dikeluarkan semula daripada id yang telah siap. CUID2 tidak mempunyai cap waktu, pembilang atau cap jari yang boleh dipulihkan. Ini ialah pilihan privasi dan keselamatan yang disengajakan: id sahaja tidak dapat mendedahkan bila atau di mana ia dicipta.

Contoh pengiraan

Menjana id dengan alat ini mungkin menghasilkan:

1vcpuhcj51eomj1o31dnlqopu0
2

Di sini v ialah huruf pertama yang rawak, manakala cpuhcj51eomj1o31dnlqopu0 (24 aksara) ialah badan cincang. Kedua-dua bahagian itu kelihatan berbeza hanya kerana aksara pertama dijamin sebagai huruf — badan cincang boleh mengandungi campuran huruf dan angka.

Mengapa Sistem Menggunakan CUID2

  • Tiada penyelarasan diperlukan. Mana-mana mesin boleh menjana id yang sah dengan sendiri, tanpa meminta pelayan pusat atau pangkalan data memberikan nilai seterusnya.
  • Rintangan terhadap perlanggaran. Campuran masa, pembilang, cap jari hos dan entropi rawak menjadikan kemungkinan dua mesin menghasilkan id yang sama amat kecil, walaupun banyak id dijana setiap saat.
  • Mesra URL. CUID2 hanya menggunakan huruf kecil dan angka, jadi ia tidak perlu dikodkan untuk digunakan dalam alamat web.
  • Penjanaan pantas dan peribadi. Oleh sebab alat ini menjalankan penjana dalam pelayar, id dicipta serta-merta dan tidak pernah meninggalkan peranti.

Id CUID2 tidak boleh diisih mengikut masa penciptaan. Berbeza daripada nombor kenaikan automatik pangkalan data atau format CUID lama (versi 1), CUID2 menyembunyikan cap waktunya di dalam cincangan dan bukannya menyimpannya secara terbuka. Aplikasi yang perlu mengisih rekod mengikut urutan penciptaan hendaklah menyimpan lajur cap waktu yang berasingan bersama-sama id.

CUID2 berbanding UUID berbanding Id Kenaikan Automatik

CiriCUID2UUID v4Kenaikan automatik
Panjang25 aksara36 aksara (dengan tanda sempang)Berbeza-beza (biasanya nombor pendek)
Set aksaraHuruf kecil dan angkaAngka heks dan tanda sempangAngka
Memerlukan penyelarasan pusatTidakTidakYa (jujukan pangkalan data)
Boleh diisih mengikut masa penciptaanTidakTidakYa
Mesra URL tanpa pengekodanYaYaYa

CUID2 dan UUID v4 menyelesaikan masalah yang sama: menjana id tanpa penyelarasan pusat. CUID2 lebih pendek dan menggunakan set aksara yang lebih kecil, menjadikannya lebih mudah dibaca dan ditampal ke dalam URL. UUID juga selamat digunakan dalam alamat web kerana tanda sempang ialah aksara yang tidak dikhaskan dalam URL, tetapi panjangnya 11 aksara lebih daripada itu.

Kegunaan Umum

  • Kunci utama dalam pangkalan data teragih, apabila beberapa pelayan memasukkan baris secara bebas
  • Id permintaan atau jejak yang digunakan untuk menjejaki satu tindakan merentasi beberapa perkhidmatan mikro
  • Nama fail untuk muat naik, supaya dua fail tidak pernah menulis ganti satu sama lain
  • Id sesi atau token untuk aplikasi web
  • Id mesej dalam baris gilir seperti Kafka atau RabbitMQ

Sejarah Ringkas

Format CUID asal dikeluarkan oleh Eric Elliott pada 2012 sebagai alternatif kepada UUID untuk aplikasi teragih. CUID2, yang diterbitkan oleh projek Paralleldrive yang sama, mereka bentuk semula format itu berasaskan cincangan kriptografi dan membuang cap waktu serta pembilang yang boleh dipulihkan dan didedahkan oleh versi asal. Alat ini hanya menjana id CUID2.

Soalan lazim

Apakah perbezaan antara CUID (v1) dengan CUID2? CUID v1 menyimpan cap waktu dan pembilang yang kelihatan di dalam id, menjadikan id boleh diisih tetapi turut mendedahkan bila dan berapa banyak id telah dicipta. CUID2 menggantikan medan yang kelihatan itu dengan cincangan sehala, jadi tiada maklumat boleh dibaca semula daripada id tersebut.

Adakah CUID daripada alat ini boleh diisih mengikut masa penciptaan? Tidak. CUID2 tidak mempunyai cap waktu yang boleh dipulihkan, jadi id tidak boleh disusun mengikut masa penjanaannya hanya dengan melihat rentetan tersebut.

Berapakah panjang id yang dijana dan bolehkah panjangnya diubah? Alat ini sentiasa menjana id sepanjang 25 aksara. Tiada pilihan dalam alat ini untuk meminta panjang yang berbeza.

Bolehkah dua mesin berbeza menjana CUID2 yang sama pada masa yang sama? Secara teori, perkara itu boleh berlaku tetapi amat tidak mungkin dalam amalan. Setiap id mencampurkan cap jari khusus hos dengan entropi rawak, jadi kemungkinan mesin bebas menghasilkan cincangan yang sama amat kecil.

Adakah alat ini menghantar data ke pelayan? Tidak. Id dijana oleh JavaScript yang berjalan dalam pelayar menggunakan jam sistem tempatan dan sumber rawak yang disediakan oleh pelayar. Tiada apa-apa dihantar.

Bolehkah saya menggunakan CUID2 sebagai kunci utama pangkalan data? Ya. Id CUID2 berfungsi dengan baik sebagai kunci utama dalam pangkalan data teragih kerana mana-mana nod boleh menjana id tanpa menyemak dengan jujukan pusat. Id tersebut tidak diisih secara semula jadi mengikut masa pemasukan, jadi aplikasi yang memerlukan susunan itu hendaklah mengekalkan lajur created_at yang berasingan.