Generirajte univerzalno jedinstvene identifikatore (UUID) za razne aplikacije. Kreirajte verziju 1 (temeljenu na vremenu) i verziju 4 (nasumičnu) UUID-ove za korištenje u distribuiranim sustavima, bazama podataka i još mnogo toga.
Univerzalno jedinstveni identifikator (UUID) je 128-bitni broj koji se koristi za identifikaciju informacija u računalnim sustavima. UUID-ovi su standardizirani od strane Open Software Foundation (OSF) kao dio Distribuiranog računalnog okruženja (DCE). Ovi identifikatori su dizajnirani da budu jedinstveni u prostoru i vremenu, što ih čini idealnim za razne primjene u distribuiranim sustavima i šire.
Ovaj alat za generiranje UUID-a omogućuje vam stvaranje verzije 1 (temeljene na vremenu) i verzije 4 (nasumične) UUID-ova. Ovi identifikatori su korisni u raznim scenarijima gdje je potrebna jedinstvena identifikacija, kao što su ključevi baza podataka, distribuirani sustavi i mrežni protokoli.
UUID se obično prikazuje kao 32 heksadecimalne znamenke, prikazane u pet grupa odvojene crticama, u obliku 8-4-4-4-12 za ukupno 36 znakova (32 alfanumerična znaka i 4 crte). Na primjer:
1550e8400-e29b-41d4-a716-446655440000
2
128 bita UUID-a podijeljeno je u specifična polja, pri čemu svako nosi različite informacije ovisno o verziji UUID-a:
Evo dijagrama koji ilustrira strukturu UUID-a:
Postoji nekoliko verzija UUID-a, od kojih svaka ima svoju metodu generiranja:
Ovaj alat se fokusira na generiranje verzija 1 i 4 UUID-ova.
UUID-ovi verzije 1 generiraju se koristeći sljedeće komponente:
Formula za generiranje UUID-a verzije 1 može se izraziti kao:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
UUID-ovi verzije 4 generiraju se pomoću kriptografski jakog generatora nasumičnih brojeva. Formula je jednostavno:
1UUID = random_128_bit_number
2
Uz specifične bitove postavljene da označe verziju (4) i varijantu.
UUID-ovi imaju brojne primjene u raznim domenama računalne znanosti i softverskog inženjerstva:
Ključevi baza podataka: UUID-ovi se često koriste kao primarni ključevi u bazama podataka, posebno u distribuiranim sustavima gdje više čvorova može istovremeno generirati zapise.
Distribuirani sustavi: U velikim distribuiranim sustavima, UUID-ovi pomažu u jedinstvenom identificiranju resursa, transakcija ili događaja među više čvorova ili podatkovnih centara.
Adresiranje sadržaja: UUID-ovi se mogu koristiti za stvaranje jedinstvenih identifikatora za sadržaj u sustavima za pohranu s adresiranjem sadržaja.
Upravljanje sesijama: Web aplikacije često koriste UUID-ove za upravljanje korisničkim sesijama, osiguravajući da svaka sesija ima jedinstveni identifikator.
Identifikacija IoT uređaja: U aplikacijama Interneta stvari (IoT), UUID-ovi se mogu koristiti za jedinstveno identificiranje pojedinačnih uređaja u mreži.
Iako su UUID-ovi široko korišteni, postoje alternativni pristupi generiranju jedinstvenih identifikatora:
Automatski povećavajući ID-ovi: Jednostavni i često korišteni u sustavima s jednom bazom podataka, ali nisu prikladni za distribuirana okruženja.
ID-ovi temeljeni na vremenu: Mogu biti korisni za vremenski poredane podatke, ali mogu imati problema s kolizijama u scenarijima s visokom konkurencijom.
Snowflake ID-ovi: Razvili su ih Twitter, ovi ID-ovi kombiniraju vremenski pečat i broj radnika za generiranje jedinstvenih ID-ova u distribuiranim sustavima.
ULID (Univerzalno jedinstveni leksikografski sortirani identifikator): Novija alternativa koja ima za cilj biti prijateljskija prema ljudima i sortirana od UUID-ova.
Koncept UUID-ova prvi put je predstavljen u Apollo Network Computing System i kasnije standardiziran od strane Open Software Foundation (OSF) kao dio Distribuiranog računalnog okruženja (DCE) 1990-ih. Prva specifikacija objavljena je 1997. godine kao ISO/IEC 11578:1996, a kasnije je revidirana 2005. godine kao dio ISO/IEC 9834-8:2005.
Ključni trenuci u povijesti UUID-a:
S vremenom, UUID-ovi su postali bitan alat u distribuiranim sustavima i dizajnu baza podataka, s raznim implementacijama i prilagodbama u različitim programskim jezicima i platformama.
Evo primjera generiranja UUID-ova u raznim programskim jezicima:
1import uuid
2
3## Generirajte UUID verzije 4 (nasumični)
4random_uuid = uuid.uuid4()
5print(f"UUID verzije 4: {random_uuid}")
6
7## Generirajte UUID verzije 1 (temeljeni na vremenu)
8time_based_uuid = uuid.uuid1()
9print(f"UUID verzije 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Generirajte UUID verzije 4 (nasumični)
4const randomUuid = uuidv4();
5console.log(`UUID verzije 4: ${randomUuid}`);
6
7// Generirajte UUID verzije 1 (temeljeni na vremenu)
8const timeBasedUuid = uuidv1();
9console.log(`UUID verzije 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Generirajte UUID verzije 4 (nasumični)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID verzije 4: " + randomUuid);
8
9 // Generirajte UUID verzije 1 (temeljeni na vremenu)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID verzije 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Generirajte UUID verzije 4 (nasumični)
4random_uuid = SecureRandom.uuid
5puts "UUID verzije 4: #{random_uuid}"
6
7## Ruby nema ugrađenu metodu za UUID verzije 1
8## Trebali biste koristiti gem poput 'uuidtools' za to
9
1<?php
2// Generirajte UUID verzije 4 (nasumični)
3$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "UUID verzije 4: " . $randomUuid . "\n";
11
12// PHP nema ugrađenu metodu za UUID verzije 1
13// Trebali biste koristiti biblioteku poput 'ramsey/uuid' za to
14?>
15
Otkrijte više alata koji bi mogli biti korisni za vaš radni proces