UUID генератор

Добавяне към уебсайт Метаданни

Други инструменти

Генериране на универсален уникален идентификатор

Генериране на универсален уникален идентификатор

Универсалният уникален идентификатор (UUID), известен още като глобален уникален идентификатор (GUID), е широко използван в компютърните системи.

Това е 128-битов код, който се генерира от системата въз основа на променливи и константи: текущо време, MAC адрес, SHA-1 хеш, пространство от имена MD5. Крайният резултат от генерирането на UUID, показан като 32-знаков буквено-цифров код, разделен с тирета, може да изглежда произволен, но всъщност е резултат от сложни изчисления. По този начин компютърът не „измисля“ код, а го формира от конкретни технически величини, които са от значение в даден момент.

Вероятността един и същ UUID да бъде генериран на два различни компютъра по различно време клони към нула, което прави възможно използването на получените кодове за идентификация на точкови/локални данни без препратка към координационния център. Днес UUID/GUID е повсеместен както в онлайн, така и в офлайн мрежите и работи ефективно не само в глобалното интернет пространство, но и в самостоятелни компютърни системи.

История на UUID

128-битовите UUID кодове са използвани за първи път от американската компания Apollo Computer през 80-те години на миналия век. Те бяха базирани на по-простите 64-битови кодове, използвани в Domain/OS, и намериха широко приложение в изчислителната среда на Open Software Foundation.

С появата на първите платформи на Windows глобалният уникален идентификатор беше обобщен и стандартизиран. Microsoft възприе дизайна на DCE от Apollo Computer и регистрира пространството от имена на URN в RFC 4122. През 2005 г. последният беше предложен като нов стандарт от IETF, а UUID беше стандартизиран в рамките на ITU.

По-рано през 2002 г. бяха идентифицирани проблеми с производителността на системата при използване на UUID като първични ключове в локални бази данни. Те бяха коригирани във версия 4 чрез добавяне на неслучаен суфикс въз основа на системното време на компютъра. Така нареченият COMB (Combined GUID Time Identifier) ​​подход увеличава рисковете от дублиране на код, но в същото време значително подобрява производителността при работа с Microsoft SQL Server.

С развитието на ИТ технологиите универсалният уникален идентификатор престана да бъде високоспециализиран технически инструмент и днес всеки може да го използва. Вероятността за повторение на генерираните кодове не е равна на нула, а клони към нея и всяка цифрова информация може да бъде идентифицирана чрез тях, след което да бъдат комбинирани в единични масиви от данни с минимални рискове от повторение.

Предимства на UUID

Генераторите на глобални уникални кодове не изискват централизирано съпоставяне/синхронизиране на данни и са свободно достъпни за всички потребители. Основните предимства на UUID включват:

  • Минимални рискове от "сблъсък" (повтаряне) на кодове. Въпреки масовата им употреба, вероятността от повторение клони към нула.
  • Възможност за обединяване на различни масиви от данни с помощта на UUID като първични (уникални) ключове.
  • Опростено разпределение на данни между множество разпръснати сървъри.
  • Възможност за генериране на кодове офлайн.

Уникалните идентификационни кодове, написани във формат xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, позволяват на разпръснати системи да разпознават информация без координация от един център за данни: с почти нулева вероятност от грешки/повторения. Тази функция, заедно с лекотата на използване и малките изисквания за производителност на компютъра, прави UUID търсен и незаменим в голямо разнообразие от ИТ индустрии и автономни изчислителни системи.

Универсален уникален идентификатор

Универсален уникален идентификатор

UUID може да генерира кодове, използвайки различни алгоритми и променливи/константни стойности.

Има общо 5 версии на идентификатора, използвайки системната дата/час и MAC адреси, DCE протоколи за сигурност, MD5 хеш, SHA-1 хеш и пространство от имена, когато се генерира.

Във всички случаи крайният резултат се показва във формат xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (число в шестнадесетичен запис, състоящо се от малки латински букви и цифри и разделено с тирета на пет блока: 8-4 -4-4- 12), M означава версия, N означава UUID вариант.

По този начин системата използва 36 знака наведнъж (26 букви и 10 цифри), така че вероятността от повторение на 32-цифрени кодове клони към нула, въпреки факта, че те се генерират ежедневно от милиони потребители по целия свят.

Версии на UUID

Версия 1

Първата версия на уникалния идентификатор при генериране на кода се основава на MAC адреса на компютъра и неговото системно време, което променя числената си стойност 1 път в секунда. Процесът на генериране се състои от пет етапа:

  • Долните 32 бита информация са взети от UTC тага. Те се преобразуват в 8 шестнадесетични знака и заемат 4 байта.
  • Средно 16 бита информация се вземат от един и същ UTC етикет и се преобразуват в 4 шестнадесетични знака, заемащи 2 байта.
  • Горните 12 бита информация от UTC тага се вземат и преобразуват в още 4 шестнадесетични знака.
  • Още 1-3 бита попадат в тактовата последователност и намаляват рисковете от сблъсъци чрез въвеждане на степен на произволност/несигурност. Системното време или условно се забавя, или се връща обратно - така че два или повече идентификатора, работещи на един и същи компютър едновременно, да не се "пресичат".
  • Останалите 6 байта са постоянна стойност, генерирана въз основа на MAC адреса на устройството. Състои се от 12 шестнадесетични знака и е с размер 48 бита.

Тъй като алгоритъмът на първата версия на UUID е неразривно свързан със системното време, използването на тактова последователност е задължително. В противен случай рисковете от генериране на едни и същи кодове се увеличават многократно - през секундата, когато системното време "замръзне" на една или друга стойност.

Версия 2

Втората версия е минимално различна от първата и рядко се използва на практика. Вместо тактова последователност, той използва системен идентификатор, свързан с потребителски данни или други уникални стойности, които не се повтарят на други компютри или се повтарят много рядко. Ефектът от произволността във втората версия е сведен до минимум и може да се използва за подобряване на сигурността на разпределена изчислителна среда.

Версии 3 и 5

Те имат много общи неща: използват уникални имена и имена (от пространството MD5), за да създават кодове, тоест неслучайни стойности. Само версия 3 използва стандартен хеш, докато версия 5 използва SHA-1 хеш. Такива идентификатори са по-малко зависими от случайни променливи.

Версия 4

Генерирането на тази версия на UUID е повече от 90% случайно. Той има 6 бита за постоянни стойности и 122 за произволни. Реализацията на алгоритъма е, че 128 бита информация първо се генерират произволно, а 6 от тях се заменят с данни за версия и вариант.

Ролята на генератора на псевдослучайни числа в четвъртата версия е максимална и ако има твърде прост алгоритъм, рисковете от повторения/сблъсъци се увеличават значително. Въпреки това четвъртата версия е най-разпространената и често използвана в практиката.

Опции за UUID

Уникалният UUID е прецизиран няколко пъти с развитието на компютърната технология и днес е представен в няколко версии.

Опция 0

Проектиран да работи с наследени бази данни във формат Apollo Network Computing System 1.5 1988. Тази опция е обратно съвместима с тях и не е в конфликт с исторически UUID на NCS.

Опции 1 и 2

Използват се за идентифициране на съвременни блокове и масиви от данни и в канонична текстова форма те не се различават един от друг, освен по реда на записване на вариантните битове. Така че опция 1 използва ред на байтовете от голям ред, а опция 2 използва ред от заглавия. Първият е основният, а вторият е запазен за работа с ранни GUID от Microsoft Windows.

Вариант 3

В момента не се използва. Това е запазена версия за бъдеща употреба - когато възможностите на предишните опции са изчерпани.

Повечето системи кодират идентификатора в big-endian, но има и изключения. Например маршалингът в библиотеките на Microsoft COM/OLE използва смесен ред, докато генерира код от блоковете заглавие и биг-ендиан. Първият са първите три компонента на UUID, а вторият са последните два.