W tym artykule
Czym jest UUID?
UUID (Universally Unique Identifier) to 128-bitowa wartosc uzywana do unikalnej identyfikacji informacji w systemach komputerowych. Zapisany jako 32 cyfry szesnastkowe wyswietlane w pieciu grupach oddzielonych myslnikami, UUID wyglada jak 550e8400-e29b-41d4-a716-446655440000.
UUID sa zaprojektowane tak, aby byc globalnie unikalne bez potrzeby centralnego organu rejestracyjnego. Dzieki temu sa idealne dla systemow rozproszonych, gdzie wiele wezlow musi niezaleznie generowac identyfikatory, ktore nigdy sie nie powtorza.
Wersje UUID
Standard UUID definiuje kilka wersji, kazda z inna metoda generowania. Numer wersji pojawia sie jako 13. znak.
- Wersja 1 (v1) — oparta na czasie: laczy biezacy znacznik czasu z adresem MAC maszyny. Gwarantuje unikalnosc, ale ujawnia informacje o sprzecie
- Wersja 3 (v3) — oparta na nazwie z MD5: generuje deterministyczny UUID przez haszowanie przestrzeni nazw i nazwy za pomoca MD5
- Wersja 4 (v4) — losowa: najczesciej uzywana wersja. Wszystkie bity oprocz pol wersji i wariantu sa generowane losowo
- Wersja 5 (v5) — oparta na nazwie z SHA-1: jak v3, ale uzywa SHA-1. Preferowana nad v3 dla nowych implementacji
- Wersja 7 (v7) — losowa uporzadkowana czasowo: nowszy format laczacy znacznik czasu Unix z losowymi bitami
Wypróbuj za darmo — bez rejestracji
Zwaliduj UUID →Jak dziala walidacja UUID
Walidacja UUID obejmuje sprawdzenie zarowno formatu, jak i regul strukturalnych. Prawidlowy UUID musi odpowiadac kanonicznemu wzorcowi szesnastkowemu 8-4-4-4-12.
- Sprawdzenie formatu — ciag musi zawierac dokladnie 32 znaki szesnastkowe ulozoone w pieciu grupach oddzielonych czterema myslnikami
- Sprawdzenie wersji — 13. znak musi byc prawidlowym numerem wersji (1, 2, 3, 4, 5, 6, 7 lub 8)
- Sprawdzenie wariantu — 17. znak musi wskazywac wariant RFC 4122 (8, 9, a lub b)
Typowe zastosowania
UUID sa domyslnym wyborem identyfikatorow w wielu dziedzinach nowoczesnego rozwoju oprogramowania.
- Klucze glowne bazy danych — UUID pozwalaja generowac klucze po stronie klienta bez podrozy w obie strony do bazy danych
- Identyfikatory zasobow API — eksponowanie UUID zamiast sekwencyjnych liczb calkowitych zapobiega atakom wyliczeniowym
- Identyfikatory sesji i korelacji — UUID sledzą zadania przez mikroserwisy
- Nazewnictwo plikow i obiektow — systemy przechowywania w chmurze uzywaja UUID, aby unikac kolizji nazw
Najlepsze praktyki
Wybor odpowiedniej wersji UUID i prawidlowe ich obslugiwanie moze zapobiec subtelnym bledom i problemom z wydajnoscia.
- Uzywaj v4 dla ogolnych losowych identyfikatorow — to najczestszy wybor bez zewnetrznych zaleznosci
- Uzywaj v7, gdy potrzebujesz identyfikatorow sortowalnych czasowo — UUID v7 sortuja sie chronologicznie
- Przechowuj UUID jako 16-bajtowy format binarny w bazach danych zamiast 36-znakowych ciagow
- Zawsze waliduj UUID otrzymane z zewnetrznych zrodel — nigdy nie zakladaj, ze ciagi podane przez uzytkownikow sa poprawnie sformatowane
Czesto zadawane pytania
Czy dwa UUID moga byc identyczne?
Choc teoretycznie mozliwe, prawdopodobienstwo kolizji z UUID v4 jest astronomicznie niskie. Trzeba by wygenerowac okolo 2,7 tryliona UUID, aby miec 50 procent szansy na pojedyncza kolizje.
Czy UUID rozroznia wielkosc liter?
Nie. Standard RFC 4122 okresla, ze UUID powinny byc wyswietlane malymi literami, ale implementacje musza akceptowac zarowno duze, jak i male litery jako rownowazne.
Powinienem uzywac UUID czy ULID?
ULID to 128-bitowe identyfikatory, ktore sa leksykograficznie sortowalne. Jesli potrzebujesz sortowalnosci bez zlozonosci UUID v7, ULID sa dobra alternatywa.