Sistemler için Verimli CUID Oluşturucu
Dağıtılmış sistemler, veritabanları ve web uygulamaları için çakışmaya dayanıklı benzersiz tanımlayıcılar (CUID) oluşturun. Ölçeklenebilir, sıralanabilir kimlikleri anında oluşturun.
CUID Oluşturucu
Çarpışmaya dayanıklı bir kimlik hızlı ve kolay bir şekilde oluşturun.
Belgeler
CUID nedir?
CUID (çakışmaya dayanıklı benzersiz tanımlayıcı), hiçbir iki öğenin aynı adı paylaşmaması için bir kaydı, dosyayı veya olayı etiketlemekte kullanılan kısa bir harf ve rakam dizisidir. Bu araç, biçimin güncel sürümü olan CUID2 kimliklerini @paralleldrive/cuid2 kitaplığını kullanarak oluşturur. Her kimlik 25 karakter uzunluğundadır, yalnızca küçük harfler ve rakamlar içerir ve tamamen tarayıcıda oluşturulur; sunucuya hiçbir şey gönderilmez.
Bu CUID oluşturucu nasıl kullanılır?
- Kimlik oluşturmak için Yeni CUID oluştur düğmesine tıklayın.
- Kopyalamak için Panoya kopyala düğmesine tıklayın.
- Kimliği bir veritabanına, dosya adına veya uygulamaya yapıştırın.
- Başka bir kimlik oluşturmak için yeniden oluştur düğmesine tıklayın. Ayrı CUID2 değerleri arasında çakışma olasılığı son derece düşüktür, ancak matematiksel olarak imkânsız değildir.
- Sonucu temizlemek için Sıfırla düğmesine tıklayın.
Oluşturulan kimlik sayfanın URL'sinde de saklanır; böylece sonuca giden bağlantı paylaşılabilir veya yer imlerine eklenebilir.
CUID2 yapısı ve formülü
Bir CUID2 şu şekilde oluşturulur:
1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2Karma işlevi dört özel girdiyi birleştirir: geçerli zamanı, oturum başına sayacı, ana makinenin parmak izini ve rastgele entropiyi. Bunları SHA3-512 üzerinden işler, sonucu taban 36 biçimine (0–9 rakamları ve a-z harfleri) dönüştürür, ardından bu karakterlerin 24 tanesini alır. Rastgele başlangıç harfi, tamamlanan kimliği 25 karaktere, yani bu aracın ayarlandığı uzunluğa getirir.
Yalnızca ilk karakter tek başına durur: her kimliğin rakam yerine harfle başlaması için başa yerleştirilen rastgele bir harftir. SQL tablo ve sütun adları gibi birçok sistem, tanımlayıcıların harfle başlamasını gerektirir; bu nedenle CUID2 hemen her yerde ad olarak güvenle kullanılabilir. İlk harften sonraki her karakter, kesintisiz ve opak bir karma gövdesinin parçasıdır; ayrı bölümleri yoktur.
Karma yalnızca tek yönde çalıştığından, girdilerinin hiçbiri tamamlanmış kimlikten geri çıkarılamaz. Bir CUID2 geri alınabilir bir zaman damgası, sayaç veya parmak izi içermez. Bu, bilinçli bir gizlilik ve güvenlik tercihidir: tek başına bir kimlik, oluşturulduğu zamanı veya yeri açığa çıkaramaz.
Çözümlü örnek
Bu araçla bir kimlik oluşturulduğunda şöyle bir sonuç elde edilebilir:
1vcpuhcj51eomj1o31dnlqopu0
2Burada v rastgele başlangıç harfidir; cpuhcj51eomj1o31dnlqopu0 (24 karakter) ise karma gövdesidir. İki bölüm yalnızca ilk karakterin kesinlikle harf olması nedeniyle farklı görünür; karma gövdesi harf ve rakamların bir karışımını içerebilir.
Sistemler neden CUID2 kullanır?
- Koordinasyon gerekmez. Her makine, sonraki değer için merkezi bir sunucuya veya veritabanına sormadan kendi başına geçerli bir kimlik oluşturabilir.
- Çakışmaya dayanıklılık. Zaman, sayaç, ana makine parmak izi ve rastgele entropinin birleşimi, saniyede çok sayıda kimlik oluşturulsa bile iki makinenin aynı kimliği üretme olasılığını son derece düşürür.
- URL dostudur. Bir CUID2 yalnızca küçük harfler ve rakamlar kullanır; bu nedenle web adresinde kullanılmak üzere kodlanması gerekmez.
- Hızlı ve gizli oluşturma. Bu araç oluşturucuyu tarayıcıda çalıştırdığı için kimlikler anında oluşturulur ve cihazdan dışarı çıkmaz.
CUID2 kimlikleri oluşturulma zamanına göre sıralanamaz. Veritabanının otomatik artan sayısının veya eski CUID biçiminin (sürüm 1) aksine, bir CUID2 zaman damgasını açıkça saklamak yerine karma içinde gizler. Kayıtları oluşturulma sırasına göre sıralaması gereken uygulamalar, kimliğin yanında ayrı bir zaman damgası sütunu saklamalıdır.
CUID2, UUID ve otomatik artan kimlikler
| Özellik | CUID2 | UUID v4 | Otomatik artan |
|---|---|---|---|
| Uzunluk | 25 karakter | 36 karakter (tirelerle) | Değişir (genellikle kısa bir sayı) |
| Karakter kümesi | Küçük harfler ve rakamlar | Onaltılık rakamlar ve tireler | Rakamlar |
| Merkezi koordinasyon gerektirir | Hayır | Hayır | Evet (veritabanı dizisi) |
| Oluşturulma zamanına göre sıralanabilir | Hayır | Hayır | Evet |
| Kodlama olmadan URL dostu | Evet | Evet | Evet |
CUID2 ve UUID v4 aynı sorunu çözer: merkezi koordinasyon olmadan kimlik oluşturmak. CUID2 daha kısadır ve daha küçük bir karakter kümesi kullanır; bu da okunmasını ve bir URL'ye yapıştırılmasını kolaylaştırır. UUID de web adresinde güvenlidir, çünkü tireler URL'lerde ayrılmamış karakterlerdir; ancak 11 karakter daha uzundur.
Yaygın Kullanımlar
- Birden fazla sunucunun satırları bağımsız olarak eklediği dağıtık veritabanlarındaki birincil anahtarlar
- Bir işlemi birden çok mikro hizmet üzerinden izlemek için kullanılan istek veya iz kimlikleri
- İki dosyanın birbirinin üzerine yazmaması için yüklemelerde kullanılan dosya adları
- Web uygulamalarındaki oturum veya belirteç kimlikleri
- Kafka veya RabbitMQ gibi kuyruklardaki ileti kimlikleri
Kısa Tarihçe
Özgün CUID biçimi, dağıtık uygulamalar için UUID'lere alternatif olarak Eric Elliott tarafından 2012 yılında yayımlandı. Aynı Paralleldrive projesi tarafından yayımlanan CUID2, biçimi kriptografik bir karma etrafında yeniden tasarladı ve özgün sürümün açığa çıkardığı geri alınabilir zaman damgası ile sayacı kaldırdı. Bu araç yalnızca CUID2 kimlikleri oluşturur.
Sık sorulan sorular
CUID (v1) ile CUID2 arasındaki fark nedir? CUID v1, kimliğin içinde görünür bir zaman damgası ve sayaç saklıyordu; bu, kimliklerin sıralanabilmesini sağlarken ne zaman ve kaç kimlik oluşturulduğu bilgisini de açığa çıkarıyordu. CUID2, bu görünür alanların yerine tek yönlü bir karma kullanır; böylece kimlikten hiçbir bilgi geri okunamaz.
Bu araçtaki CUID'ler oluşturulma zamanına göre sıralanabilir mi? Hayır. Bir CUID2 geri alınabilir bir zaman damgası içermez; bu nedenle kimlikler yalnızca diziye bakılarak oluşturulma zamanlarına göre sıralanamaz.
Oluşturulan bir kimlik ne kadar uzundur ve uzunluk değiştirilebilir mi? Bu araç her zaman 25 karakterlik kimlikler oluşturur. Bu araçta farklı bir uzunluk isteme seçeneği yoktur.
İki farklı makine aynı anda aynı CUID2 kimliğini oluşturabilir mi? Teorik olarak mümkündür, ancak pratikte olasılığı son derece düşüktür. Her kimlik, ana makineye özgü bir parmak izi ile rastgele entropiyi birleştirir; bu nedenle bağımsız makinelerin aynı karmayı üretmesi son derece olası değildir.
Bu araç herhangi bir veriyi sunucuya gönderir mi? Hayır. Kimlik, yerel sistem saatini ve tarayıcının sağladığı rastgeleliği kullanan JavaScript tarafından tarayıcıda oluşturulur. Hiçbir şey aktarılmaz.
Bir CUID2 kimliğini veritabanı birincil anahtarı olarak kullanabilir miyim?
Evet. CUID2 kimlikleri dağıtık veritabanlarında birincil anahtar olarak iyi çalışır; çünkü herhangi bir düğüm, merkezi bir diziye danışmadan kimlik oluşturabilir. Kimlikler eklenme zamanına göre doğal olarak sıralanmaz; bu nedenle bu sıraya ihtiyaç duyan bir uygulama ayrı bir created_at sütunu tutmalıdır.