ULID ģenerators
Ģenerētais ULID:
ULID struktūra
Laika zīmogs (10 rakstzīmes)
Izlases (16 rakstzīmes)
ULID ģenerators
Ievads
ULID (Universāli unikāls leksikogrāfiski kārtojams identifikators) ir unikāls identifikators, kas apvieno laika zīmogu ar nejaušiem datiem, lai izveidotu 26 zīmju virkni. ULID ir paredzēti, lai būtu leksikogrāfiski kārtojami, saglabājot augstu unikāluma un nejaušības pakāpi.
ULID struktūra
ULID sastāv no divām galvenajām daļām:
- Laika zīmogs (10 zīmes): Pirmās 10 zīmes attēlo laiku milisekundēs kopš Unix Epoch (1970-01-01).
- Nejaušība (16 zīmes): Atlikušās 16 zīmes tiek ģenerētas, izmantojot kriptogrāfiski drošus nejaušos datus.
Rezultātā iegūtā 26 zīmju virkne tiek kodēta, izmantojot Krokforda bāzes32 alfabētu (0-9 un A-Z, izslēdzot I, L, O un U).
Formulas
ULID tiek ģenerēts, izmantojot šādas darbības:
- Ģenerēt 48 bitu laika zīmogu (milisekundes kopš Unix Epoch).
- Ģenerēt 80 bitus kriptogrāfiski drošu nejaušu datu.
- Kodēt apvienotos 128 bitus, izmantojot Krokforda bāzes32 kodēšanu.
Aprēķins
ULID ģenerators veic šādas darbības:
- Iegūst pašreizējo laiku milisekundēs.
- Ģenerē 10 nejaušas baitus (80 bitus), izmantojot kriptogrāfiski drošu nejaušu skaitļu ģeneratoru.
- Apvieno laika zīmogu un nejaušos datus 128 bitu veselā skaitļa formātā.
- Kodē 128 bitu veselā skaitļa vērtību, izmantojot Krokforda bāzes32 kodēšanu.
Lietošanas gadījumi
ULID ir noderīgi dažādās situācijās, tostarp:
- Datu bāzes atslēgas: ULID var izmantot kā unikālus identifikatorus datu bāzes ierakstiem, nodrošinot unikālumu un kārtojamību.
- Izplatītās sistēmas: Izplatītās vidēs ULID var ģenerēt bez koordinācijas starp mezgliem.
- Žurnālu un izsekošanas sistēmas: ULID var izmantot, lai marķētu žurnālu ierakstus vai izsekošanas notikumus, nodrošinot kārtojamu un unikālu identifikatoru.
- URL draudzīgi identifikatori: ULID ir droši URL un var tikt izmantoti tīmekļa lietojumprogrammās kā identifikatori URL.
Alternatīvas
Lai gan ULID ir daudzpusīgi, ir arī citas unikālu identifikatoru sistēmas, ko apsvērt:
- UUID (Universāli unikāls identifikators): 128 bitu identifikators, kas nesatur laika zīmogu.
- KSUID (K-kārtojams unikāls identifikators): Līdzīgs ULID, bet ar atšķirīgu laika zīmoga kodēšanu.
- Snoflakes ID: Twitter izplatītā unikālo ID ģenerēšanas sistēma, kurā ietilpst laika zīmogs un darba ID.
Vēsture
ULID tika ieviests 2016. gadā Alizain Feerasta kā alternatīva UUID. Tie tika izstrādāti, lai risinātu dažas UUID ierobežojumus, īpaši attiecībā uz kārtojamību un lasāmību. ULID specifikācija ir palikusi stabila kopš tās ieviešanas, un ir pieejamas dažādas īstenojumi dažādās programmēšanas valodās.
Piemēri
Šeit ir daži koda piemēri, kā ģenerēt ULID dažādās programmēšanas valodās:
// JavaScript īstenojums
function generateULID() {
const timestamp = Date.now().toString(36).padStart(10, '0');
const randomness = crypto.getRandomValues(new Uint8Array(16))
.reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
return (timestamp + randomness).toUpperCase();
}
console.log(generateULID());
Šie piemēri demonstrē, kā ģenerēt ULID JavaScript, Python un Java valodās. Jūs varat pielāgot šīs funkcijas savām konkrētajām vajadzībām vai integrēt tās lielākās sistēmās, kurām nepieciešami unikāli identifikatori.
Atsauces
- "ULID specifikācija." GitHub, https://github.com/ulid/spec. Piekļuve 2024. gada 2. augustā.
- "Krokforda bāzes32 kodēšana." Bāzes32 kodēšana, http://www.crockford.com/base32.html. Piekļuve 2024. gada 2. augustā.
- "UUID pret ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Piekļuve 2024. gada 2. augustā.