Generator UUID

Dodaj na stronę Metainformacja

Inne narzędzia

Wygeneruj UUID/GUID

Wygeneruj UUID/GUID

Unikalny identyfikator uniwersalny (UUID), znany również jako unikalny identyfikator globalny (GUID), jest szeroko stosowany w systemach komputerowych.

Jest to 128-bitowy kod generowany przez system na podstawie zmiennych i stałych: aktualnego czasu, adresu MAC, skrótu SHA-1, przestrzeni nazw MD5. Końcowy wynik generowania UUID, wyświetlany jako 32-znakowy kod alfanumeryczny oddzielony myślnikami, może wydawać się arbitralny, ale w rzeczywistości jest wynikiem skomplikowanych obliczeń. Tak więc komputer nie „wymyśla” kodu, ale tworzy go z określonych wielkości technicznych, które są istotne w danym momencie.

Prawdopodobieństwo, że ten sam identyfikator UUID zostanie wygenerowany na dwóch różnych komputerach w różnym czasie, dąży do zera, co umożliwia wykorzystanie otrzymanych kodów do identyfikacji danych punktowych/lokalnych bez odniesienia do centrum koordynacyjnego. Obecnie UUID/GUID jest wszechobecny zarówno w sieciach online, jak i offline i działa skutecznie nie tylko w globalnej przestrzeni internetowej, ale także w autonomicznych systemach komputerowych.

Historia UUID

128-bitowe kody UUID zostały po raz pierwszy użyte przez amerykańską firmę Apollo Computer w latach 80. Były oparte na prostszych 64-bitowych kodach używanych w Domain/OS i znalazły szerokie zastosowanie w środowisku komputerowym Open Software Foundation.

Wraz z pojawieniem się pierwszych platform Windows globalnie unikatowy identyfikator został uogólniony i ustandaryzowany. Microsoft przejął projekt DCE od Apollo Computer i zarejestrował przestrzeń nazw URN w dokumencie RFC 4122. W 2005 r. ten ostatni został zaproponowany jako nowy standard przez IETF, a identyfikator UUID został znormalizowany w ramach ITU.

Wcześniej w 2002 r. zidentyfikowano problemy z wydajnością systemu podczas używania identyfikatorów UUID jako kluczy podstawowych w lokalnych bazach danych. Zostały one naprawione w wersji 4 przez dodanie nielosowego sufiksu opartego na czasie systemowym komputera. Tak zwane podejście COMB (Combined GUID Time Identifier) ​​zwiększyło ryzyko duplikacji kodu, ale jednocześnie znacznie poprawiło wydajność podczas pracy z Microsoft SQL Server.

Wraz z rozwojem technologii informatycznych uniwersalny unikalny identyfikator przestał być wysoce wyspecjalizowanym narzędziem technicznym, a dziś każdy może z niego korzystać. Prawdopodobieństwo powtórzenia się wygenerowanych kodów nie jest równe zeru, ale dąży do niego, a każda informacja cyfrowa może być przez nie zidentyfikowana, po czym można je połączyć w pojedyncze tablice danych przy minimalnym ryzyku powtórzenia.

Korzyści z UUID

Generatory globalnych unikalnych kodów nie wymagają scentralizowanej rekoncyliacji/synchronizacji danych i są swobodnie dostępne dla wszystkich użytkowników. Główne zalety UUID to:

  • Minimalne ryzyko „kolizji” (powtórzenia) kodów. Pomimo ich masowego użycia prawdopodobieństwo powtórzenia jest bliskie zeru.
  • Możliwość łączenia różnych tablic danych przy użyciu identyfikatorów UUID jako kluczy podstawowych (unikatowych).
  • Uproszczona dystrybucja danych na wielu rozproszonych serwerach.
  • Możliwość generowania kodów offline.

Unikalne kody identyfikacyjne, zapisane w formacie xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, umożliwiają rozproszonym systemom rozpoznawanie informacji bez koordynacji z jednego centrum danych: z niemal zerowym prawdopodobieństwem wystąpienia błędów/powtórzeń. Ta funkcja, wraz z łatwością użycia i niewielkimi wymaganiami dotyczącymi wydajności komputera, sprawia, że ​​UUID jest poszukiwany i niezbędny w wielu różnych branżach IT i autonomicznych systemach komputerowych.

Uniwersalny unikalny identyfikator

Uniwersalny unikalny identyfikator

UUID może generować kody przy użyciu różnych algorytmów i zmiennych/stałych wartości.

Istnieje łącznie 5 wersji identyfikatora, wykorzystujących systemową datę/godzinę i adresy MAC, protokoły bezpieczeństwa DCE, skrót MD5, skrót SHA-1 i przestrzeń nazw podczas generowania.

We wszystkich przypadkach wynik końcowy jest wyświetlany w formacie xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (liczba w zapisie szesnastkowym, składająca się z małych liter łacińskich i cyfr, podzielona myślnikami na pięć bloków: 8-4 -4-4- 12), M oznacza wersję, N oznacza wariant UUID.

W ten sposób system używa jednocześnie 36 znaków (26 liter i 10 cyfr), więc prawdopodobieństwo powtórzenia 32-cyfrowych kodów dąży do zera, mimo że są one generowane codziennie przez miliony użytkowników na całym świecie.

Wersje UUID

Wersja 1

Pierwsza wersja unikalnego identyfikatora podczas generowania kodu bazuje na adresie MAC komputera i jego czasie systemowym, który zmienia swoją wartość liczbową 1 raz na sekundę. Proces generowania składa się z pięciu etapów:

  • Mniejsze 32 bity informacji są pobierane ze znacznika UTC. Są konwertowane na 8 znaków szesnastkowych i zajmują 4 bajty.
  • Średnio 16 bitów informacji jest pobieranych z tej samej etykiety UTC i konwertowanych na 4 znaki szesnastkowe zajmujące 2 bajty.
  • Pierwsze 12 bitów informacji ze znacznika UTC jest konwertowanych na 4 kolejne znaki szesnastkowe.
  • Kolejne 1-3 bity spadają na sekwencję zegara i zmniejszają ryzyko kolizji, wprowadzając pewien stopień losowości/niepewności. Czas systemowy jest albo warunkowo spowalniany, albo cofany - tak, aby dwa lub więcej identyfikatorów pracujących na tym samym komputerze w tym samym czasie nie „krzyżowało się”.
  • Pozostałe 6 bajtów to stała wartość generowana na podstawie adresu MAC urządzenia. Składa się z 12 znaków szesnastkowych i ma rozmiar 48 bitów.

Ponieważ algorytm pierwszej wersji identyfikatora UUID jest nierozerwalnie powiązany z czasem systemowym, użycie sekwencji zegara jest obowiązkowe. W przeciwnym razie ryzyko wygenerowania tych samych kodów wzrasta wielokrotnie - w ciągu sekundy, kiedy czas systemowy „zatrzymuje się” na takiej czy innej wartości.

Wersja 2

Druga wersja różni się minimalnie od pierwszej i jest rzadko używana w praktyce. Zamiast sekwencji zegara wykorzystuje identyfikator systemowy powiązany z danymi użytkownika lub innymi unikalnymi wartościami, które nie powtarzają się na innych komputerach lub powtarzają się bardzo rzadko. Efekt losowości w drugiej wersji jest zminimalizowany i można go wykorzystać do poprawy bezpieczeństwa rozproszonego środowiska obliczeniowego.

Wersje 3 i 5

Mają ze sobą wiele wspólnego: używają unikalnych nazw i nazw (z przestrzeni MD5) do tworzenia kodów, czyli wartości nielosowych. Tylko wersja 3 używa standardowego skrótu, podczas gdy wersja 5 używa skrótu SHA-1. Takie identyfikatory są mniej zależne od zmiennych losowych.

Wersja 4

Generowanie tej wersji UUID jest w ponad 90% losowe. Ma 6 bitów dla wartości stałych i 122 dla dowolnych. Implementacja algorytmu polega na tym, że 128 bitów informacji jest najpierw generowanych losowo, a 6 z nich jest zastępowanych danymi wersji i wariantów.

Rola generatora liczb pseudolosowych w czwartej wersji jest maksymalna, a jeśli ma zbyt prosty algorytm, ryzyko powtórzeń/kolizji znacznie wzrasta. Mimo to to czwarta wersja jest zdecydowanie najpowszechniejsza i najczęściej stosowana w praktyce.

Opcje UUID

Unikalny identyfikator UUID był wielokrotnie udoskonalany w miarę rozwoju technologii komputerowej i obecnie jest prezentowany w kilku wersjach.

Opcja 0

Zaprojektowany do pracy ze starszymi bazami danych w formacie Apollo Network Computing System 1.5 1988. Ta opcja jest z nimi wstecznie kompatybilna i nie koliduje z historycznymi identyfikatorami UUID NCS.

Opcje 1 i 2

Służą do identyfikowania nowoczesnych bloków i tablic danych, aw postaci tekstu kanonicznego nie różnią się od siebie, z wyjątkiem kolejności, w jakiej zapisywane są warianty bitów. Tak więc opcja 1 używa kolejności bajtów big-endian, a opcja 2 używa tytułu-endian. Pierwszy jest główny, a drugi jest zarezerwowany do pracy z wczesnymi identyfikatorami GUID z systemu Microsoft Windows.

Opcja 3

Obecnie nieużywane. Jest to wersja zarezerwowana do wykorzystania w przyszłości - gdy możliwości poprzednich opcji zostaną wyczerpane.

Większość systemów koduje identyfikator w big-endian, ale są wyjątki. Na przykład organizowanie w bibliotekach Microsoft COM/OLE używa metody mixed-endian podczas generowania kodu z bloków title-endian i big-endian. Pierwszy to pierwsze trzy składniki UUID, a drugi to dwa ostatnie.