ULID Generator

Zaman damgası ve rastgelelikle leksikografik olarak sıralanabilir tanımlayıcılar oluşturun

Bu örnekleri deneyin:

ULID Nedir?

ULID (Evrensel Benzersiz Sıralanabilir Tanımlayıcı) UUID'lerdeki sınırlamaları aşmak için tasarlanmış 128 bitlik bir tanımlayıcı formatıdır. Şunlardan oluşur:

  • Timestamp: 48 bit milisaniye hassasiyetinde Unix zamanı
  • Randomness: 80 bit kriptografik olarak güvenli rastgele veri
  • Encoding: Base32 gösterimi (26 karakter)

Format örneği: 01ARZ3NDEKTSV4RRFFQ69G5FAV

ULID nasıl çalışır

  1. Zaman damgası için 48 bit oluştur (milisaniye cinsinden Unix zamanı)
  2. 80 bit kriptografik olarak güvenli rastgele veri oluştur
  3. Zaman damgasını (en anlamlı) rastgelelikle (en az anlamlı) birleştir
  4. Tüm 128 bitlik değeri Crockford'un Base32 alfabesi ile kodla
  5. Sonuç 26 karakterlik bir dizedir (ilk 10 karakter zaman damgası, son 16 karakter rastgelelik)

Avantajlar ve Dikkat Edilmesi Gerekenler

AdvantagesConsiderations
  • Sözlük sırasına göre sıralanabilir
  • URL güvenli karakter seti
  • Özel kodlama gerekmez
  • Case-insensitive
  • Gizlilik endişesi yok
  • Daha yeni, daha az yaygın
  • Sınırlı kütüphane desteği
  • UUID uyumluluğu yok
  • 1970 öncesine gidilemez

ULID Yapısı

ComponentBitsCharactersDescription
Timestamp48 bit10 karakterBase32 ile kodlanmış Unix zaman damgası (ms)
Randomness80 bit16 karakterBase32 ile kodlanmış rastgele baytlar

ULID ve UUID Karşılaştırması

FeatureULIDUUID v1UUID v4UUID v7
Size128 bit128 bit128 bit128 bit
Dize uzunluğu26 karakter36 karakter36 karakter36 karakter
Time-based
Doğal sıralama
URL güvenli
MAC adresi açığa çıkması
Rastgele bileşen
Kanonik standart⚠️ Taslak

Yaygın Kullanım Alanları

  • Veritabanı birincil anahtarları: Performans optimize edilmiş indeksler
  • Dağıtık sistemler: Koordinasyonsuz üretim
  • APIs: Temiz, URL güvenli tanımlayıcılar
  • Zaman serisi verisi: Yerel kronolojik sıralama
  • Kayıt sistemleri: Sıralanabilir olay tanımlayıcıları
  • Modern uygulamalar: UUID sınırlamalarının sorunlu olduğu yerler

Neden ULID Seçilmeli?

  • Sortability: Oluşturma zamanına göre sözlük sırasına göre sıralar
  • URL güvenliği: URL kodlaması gerekmez (UUID'lerdeki tireler gibi)
  • Compactness: 26 karakter vs UUID için 36
  • Büyük/küçük harf duyarsızlığı: Kullanıcı giriş hatalarını azaltır
  • Monotonicity: Aynı milisaniye içinde isteğe bağlı monoton sıralama
  • Özel karakter yok: Basit, sadece alfanümerik format

Sıkça Sorulan Sorular

ULID, UUID v7 ile nasıl karşılaştırılır?

Her ikisi de sıralanabilirlik için Unix zaman damgalarını kullanır ve rastgele bileşenlere sahiptir. Temel farklar kodlama (Base32 vs hex), format (26 karakter vs 36) ve standartlaşmadır (UUID v7 taslak RFC spesifikasyonundadır).

ULID'den oluşturma zamanını çıkarabilir miyim?

Evet. İlk 10 karakter milisaniye hassasiyetinde Unix zaman damgasını temsil eder ve standart bir tarih saatine dönüştürülebilir.

ULID'ler UUID veritabanı alanlarıyla uyumlu mu?

Hayır. ULID'ler farklı bir format kullanır ve yerel UUID veritabanı türlerinde değil, dize veya ikili veri olarak saklanmalıdır.

ULID'de monotonluk nedir?

Bazı ULID uygulamaları, aynı zaman damgasında oluşturulan ULID'ler için rastgele bileşeni artırarak aynı milisaniye içinde sıralı sıralama sağlayan monoton bir seçenek sunar.

ULID hangi karakter setini kullanır?

ULID, karışıklığı ve yazım hatalarını en aza indirmek için tasarlanmış Crockford'un Base32 kodlamasını (0-9, A-Z, I, L, O, U hariç) kullanır ve bu kodlama büyük/küçük harf duyarsızdır (ancak ULID'ler genellikle büyük harfle üretilir).

Resources

Crockford'un Base32 Alfabesi

Kodlama DeğeriCharacterNotes
0-90-9Ondalık rakamlar
10-31A-ZOkunabilirlik için I, L, O, U hariç tutulmuştur

Karakterler: 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Bu kodlama, çözümleme için büyük/küçük harf duyarsızdır (ancak ULID'ler genellikle büyük harfle oluşturulur).