Rastgele UUID v4 Kimlikleri Üret
Veritabanları ve kod için ihtiyacınız kadar rastgele v4 UUID'yi anında üretin.
Değerler cihazınızdan hiç çıkmaz
Hiçbir yerde kayıt tutulmaz
Platform düzeyinde rastgelelik
Her modern tarayıcıda çalışır
Nasıl çalışır
- 1
Bir sürüm seçin
Tanımlayıcı bir veritabanı dizinine gitmiyorsa v4; gidiyorsa v7’yi düşünün.
- 2
Kaç tane olacağını seçin
Hızlı bir sınama için bir tane ya da tohum verisi ve fikstürler için bir yığın.
- 3
Sonucu kopyalayın
Bir şemaya, bir isteğe, bir yapılandırma dosyasına ya da bir teste taşıyın.
Neden bu araç
Sürüm 4 ve sürüm 7
Genel kullanım için rastgele, değer birincil anahtara dönüşecekse zaman damgasıyla sıralı.
Kriptografik rastgelelik
Öngörülebilir bir sözde rastgele işlevden değil, tarayıcının güvenli rastgelelik kaynağından üretilir.
Toplu üretim
Bir tanımlayıcı ya da bin tane, tek adımda üretilir ve tohum dosyasına yapıştırmaya hazırdır.
Tireli ya da tiresiz
Hedefin beklediğine göre 36 karakterlik kurallı biçim ya da 32 karakterlik çıplak biçim.
Hiçbir şey iletilmez
Değerler tarayıcınızda üretilir, dolayısıyla hangi tanımlayıcıları kullandığınızı hiçbir üçüncü taraf öğrenmez.
Ücretsiz, hesapsız
Kayıt yok, filigran yok, kaç tane üreteceğinize dair sınır yok.
Sürüm, çoğu kişinin sandığından daha önemlidir
İnsanlar UUID der ve sürüm 4’ü kasteder; o da 122 rastgele bittir ve başka bir şey değil. Doğru varsayılan budur ama tek sürüm değildir ve farkların sonuçları vardır. Sürüm 1, tanımlayıcıyı bir zaman damgası ve makinenin ağ donanım adresinden kurar; yani bir v1 UUID, ne zaman oluşturulduğunu ve tarihsel olarak hangi makinenin oluşturduğunu sessizce açık eder — bir sistemin içinde sorun değil, bir müşterinin görebildiği her şeyde rahatsız edici. Yakın zamanda standartlaşan sürüm 7 ise rastgeleliği korur ama öndeki bitlere milisaniyelik bir zaman damgası koyar, böylece değerler kronolojik sıralanır. Hangi tür olduğunu düşünmeden UUID ürettiyseniz, neredeyse kesinlikle v4’tü ve çoğu kullanım için doğru yanıt odur. İstisna aşağıdadır.
Rastgele tanımlayıcılar bir veritabanı dizinini zorlar
UUID’lerle ilgili en sonuç doğurucu pratik olgu budur ve tam sayılardan geçenleri şaşırtır. Bir veritabanı dizini sıralı bir yapıdır ve sıralı yapılar sırayla gelen değerleri sever. Bir tam sayı dizisi dizinin sonuna eklenir, tek bir sayfaya tekrar tekrar dokunur ve onu bellekte tutar. Bir v4 UUID akışı ise tasarım gereği rastgeledir, bu yüzden her ekleme başka bir yere düşer; bu da dizini dağınık sayfalara yazmaya, onları bölmeye ve yetişebilmek için yapının çok daha büyük bir kısmını önbellekte tutmaya zorlar. Büyük bir tabloda fark ölçülebilirdir ve belirti, UUID anahtarlarına geçtikten sonra yavaşlayan sistemin bildik hikâyesidir. Sürüm 7 tam bunun için var: öndeki zaman damgası yeni değerlerin birbirine yakın sıralanmasını sağlar, böylece eklemeler yine yerel kalır ve tanımlayıcılar tahmin edilemez olmayı sürdürür.
UUID bir sır değildir, siz onu bilerek sır yapmadıkça
Burada iki iddia birbirine karışır ve ikisi de önemlidir. Birincisi, bir v4 UUID gerçekten tahmin edilemez — 122 rastgele bit kaba kuvvetin çok ötesindedir — ama yalnızca rastgelelik kriptografikse. Pek çok kod UUID’leri genel amaçlı bir rastgele işlevden üretir; bu hızlıdır ve öngörülebilirdir, öngörülebilir kaynaktan gelen tanımlayıcılar ise tohumu çözen herkesçe sayılıp dökülebilir. Üretecinizin ne kullandığını denetleyin. İkincisi, kusursuz bir v4 bile bir tanımlayıcıdır, bir yetkilendirme değil. Tahmin edilemez bir UUID’yi paylaşım bağlantısı olarak kullanmak işe yarar ve şu anlama gelir: URL parolanın kendisidir; tarayıcı geçmişinde, yönlendiren başlıklarında, bir sohbet kaydında ve iletildiği her e-postada durur. Bu, bir belge bağlantısı için kabul edilebilir, iptal edilmesi gereken hiçbir şey için değildir.
Çakışma güvencesi aslında ne diyor
UUID’lerin eşgüdüm olmadan işlemesinin nedeni olasılıksal bir argümandır ve sayıları bilmeye değer, ki artık onlar için endişelenmeyesiniz. 122 rastgele bitle, herhangi ikisinin eşleşme olasılığının yüzde ellilere çıkması için kabaca 2,7 kentilyon sürüm 4 UUID üretmeniz gerekir. Saniyede bir milyonla bu on binlerce yıl eder; dünyanın iki ucundaki sistemlerin merkezî bir sicil olmadan tanımlayıcı basıp hiç eşgüdüm kurmamasının nedeni budur. Güvencenin tümüyle dayandığı şey rastgeleliğin niteliğidir. Zayıf ya da kötü tohumlanmış bir üreteç o sayıyı hiçbir uyarı vermeden çökertir ve üretimdeki yinelenen UUID’ler neredeyse her zaman kötü şansa değil kusurlu bir kaynağa dayanır — birkaç bilinen olayda cihazlar açılışta rastgelelik kaynaklarını birebir aynı tohumlamıştı.
Saklamak sandığınızdan pahalıya gelir
Bir UUID 128 bittir — 16 bayt — ama genelde gördüğünüz biçim 36 karakterlik metindir, çünkü kurallı gösterim her baytı iki onaltılık basamak olarak yazar ve dört tire ekler. Bunu bir dize olarak saklarsanız satır başına 16 yerine 36 bayt kullanıyorsunuz demektir, artı veritabanınızın değişken uzunluklu bir sütun için eklediği ne varsa; o sütundaki her dizin de aynı şişkinliği taşır. Birkaç bin satırlık bir tabloda kimse fark etmez. Yüz milyon satırlık bir tabloda, bellekte kalması gereken bir dizinde, sığmakla sığmamak arasındaki farktır. Çoğu veritabanının tam bu nedenle yerel 16 baytlık bir türü vardır ve onu kullanmak genellikle doğru karardır. Biçimlendirme ayrıntıları buna kıyasla küçüktür: tireler zorunlu değil geleneksel, karşılaştırma büyük-küçük harf duyarsız ve küçük harf kurallı çıktıdır.
Rastgele değerlerde bile yerel üretim neden önemli
Gizliliğin rastgele bir sayıyla ne ilgisi olduğunu sormak yerindedir ve yanıt şudur: sayı, bir şeye bağlandığı anda anonim olmaktan çıkar. Barındırılan bir üreteç verdiği her tanımlayıcıyı görür ve onları isteği yapan adres ve zamanla birlikte kaydedebilir. O UUID’ler sonra sisteminizde sipariş numarası, paylaşım bağlantısı, API anahtarı ya da veritabanı tanımlayıcısı olursa, geçerli değerlerin bir listesi ve nelere ait olduklarına dair iyi bir fikir başkasının elinde demektir. Bu küçük ve tümüyle gereksiz bir risktir, çünkü yerel üretim onu bütünüyle kaldırır: tarayıcınızda yerleşik bir kriptografik rastgelelik kaynağı vardır, değerler sayfadan çıkmaz ve hiçbir istek yapılmadığını geliştirici araçlarının Ağ sekmesinde doğrulayabilirsiniz.
Kaçınılması gereken yaygın hatalar
- Büyük bir tabloda v4 UUID’leri birincil anahtar olarak kullanmak. Rastgele değerler dizin yazmalarını dağıtır ve yapıyı parçalar — öndeki zaman damgasıyla eklemeleri yerel tutan ve yine tahmin edilemez kalan v7’yi kullanın.
- UUID’leri genel amaçlı bir rastgele işlevden üretmek. Yalnızca kriptografik bir kaynak onları tahmin edilemez kılar; öngörülebilir bir tohum, saldırganın tanımlayıcıları sayıp dökebilmesi demektir.
- Tahmin edilemez bir UUID’yi yetkilendirme saymak. Ondan kurulmuş bir paylaşım bağlantısı, URL’nin parola olması demektir; URL’ler ise geçmişte, yönlendiren başlıklarında ve iletilen e-postalarda birikir.
- Ölçekte bir UUID’yi 36 karakterlik dize olarak saklamak. Değer 16 bayttır; metin biçimi bunu her satırda ve her dizinde iki katından fazlasına çıkarır — çoğu veritabanının yerel bir türü vardır.
- Müşterinin gördüğü hiçbir yerde v1 kullanmak. O, oluşturma zamanını ve tarihsel olarak makinenin ağ donanım adresini kodlar; bir tanımlayıcının açık etmesi gerekenden fazlasıdır.
Karşılaştırma
| Ölçüt | Bu araç | Çevrimiçi üreteçler | Bir kitaplık çağrısı |
|---|---|---|---|
| Değerler iletilir ya da kaydedilir | Asla | Olabilir | Hayır |
| v7 mevcut | Evet | Nadiren | Kitaplığa bağlı |
| Kriptografik rastgelelik | Evet | Genellikle belirtilmez | Genellikle evet |
| Toplu üretim | Evet | Bazen | Evet |
| Proje açmadan çalışır | Evet | Evet | Hayır |
| Fiyat | Ücretsiz | Ücretsiz / ücretli paket | Ücretsiz |
Özellikler
UUID v4
Çoğu sistemin UUID derken kastettiği 122 rastgele bitlik sürüm.
UUID v7
Zaman damgası önekli ve bu yüzden sıralanabilir; bir veritabanı dizininin istediği budur.
Büyük ya da küçük harf
Kurallı biçim küçük harftir; bazı sistemler büyük harfte ısrar eder ve ikisi de burada.
Toplu üretim
Bir kerede yüzlerce, satır başına bir tane, bir tohum betiği ya da tablo sütunu için hazır.
Platformun CSPRNG’sini kullanır
Değerler genel amaçlı bir üreteçten değil, tarayıcının kriptografik üretecinden gelir.
Anında, istek yok
Hiçbir şey çekilmez, dolayısıyla üretim anlıktır ve sekme zaten yüklüyken çalışır.
Kurulum gerekmez
Kitaplık, çalışma ortamı ya da bağımlılık yok — web sayfasında çalışır.
Arapça ve RTL uyumlu
Sağdan sola Arapça dahil sekiz dilde tam arayüz.
Varsayılan olarak güvenli
HTTPS üzerinden sunulur, izleme ve üçüncü taraf isteği yoktur.
Kimler kullanıyor
Geliştiriciler
Bir fikstür ya da elle eklenen veritabanı satırı için konsol açmadan geçerli bir tanımlayıcı almak.
Veritabanı mühendisleri
Bir tablo tahmin edilemez ama iyi dizinlenen anahtarlar istediğinde v7 değerleri üretmek.
Test mühendisleri
Test verisi için bir yığın benzersiz tanımlayıcıyı tek adımda üretmek.
API entegratörleri
Bir istek için idempotency anahtarı ya da ilişkilendirme tanımlayıcısı oluşturmak.
Sıkça Sorulan Sorular
Hayır. Her şey tarayıcınızda yerel çalışır — metniniz asla yüklenmez, saklanmaz veya paylaşılmaz.
Evet — tamamen ücretsiz, hesap ve sınır yok.