Генератор UUID

Інші інструменти

Випадковий вибір{$ ',' | translate $} Таймер{$ ',' | translate $} Перетворювач одиниць{$ ',' | translate $} Переверніть монету{$ ',' | translate $} Генератор випадкових чисел{$ ',' | translate $} Кидайте кубики{$ ',' | translate $} Калькулятор ІМТ{$ ',' | translate $} Калькулятор калорій{$ ',' | translate $} Основний обмін речовин{$ ',' | translate $} Калькулятор відсотку жиру в організмі{$ ',' | translate $} Загальні витрати енергії на день{$ ',' | translate $} Таймер Табата{$ ',' | translate $} Калькулятор відсотків{$ ',' | translate $} Генератор QR-коду{$ ',' | translate $} Генератор паролів{$ ',' | translate $} Тест на час реакції{$ ',' | translate $} Тест швидкості набору{$ ',' | translate $} Перевірка CPS{$ ',' | translate $} Лічильник слів{$ ',' | translate $} Конвертер регістрів{$ ',' | translate $} Порівняння текстів{$ ',' | translate $} Іпотечний калькулятор{$ ',' | translate $} Кредитний калькулятор{$ ',' | translate $} Калькулятор кредиту на автомобіль{$ ',' | translate $} Калькулятор ПДВ{$ ',' | translate $} Калькулятор складних відсотків{$ ',' | translate $} Калькулятор зарплати{$ ',' | translate $} Віртуальне піаніно{$ ',' | translate $} Генератор фонового шуму{$ ',' | translate $} Метроном{$ ',' | translate $} Калькулятор знижок{$ ',' | translate $} Номер поточного тижня{$ ',' | translate $} Калькулятор чайових{$ ',' | translate $} Калькулятор часу{$ ',' | translate $} Калькулятор дат{$ ',' | translate $} Калькулятор віку{$ ',' | translate $} Конвертер валют{$ ',' | translate $} Калькулятор сну{$ ',' | translate $} Фази місяця{$ ',' | translate $} Генератор колірної палітри{$ ',' | translate $} Вибір кольору{$ ',' | translate $} Генератор колірної схеми{$ ',' | translate $} Калькулятор розмірів кілець{$ ',' | translate $} Калькулятор розмірів одягу{$ ',' | translate $} Калькулятор розмірів взуття{$ ',' | translate $} Калькулятор розміру бюстгальтера{$ ',' | translate $} Калькулятор овуляції{$ ',' | translate $} Калькулятор дати пологів{$ ',' | translate $} Знаки зодіаку{$ ',' | translate $} Тест на IQ{$ ',' | translate $} Емодзі{$ ',' | translate $} Секундомір{$ ',' | translate $} Відлік часу{$ ',' | translate $} Будильник{$ ',' | translate $} Калькулятор підмережі{$ ',' | translate $} Тест швидкості інтернету{$ ',' | translate $} IP-адреса{$ ',' | translate $} Конвертер Base64{$ ',' | translate $} Хеш-генератор MD5{$ ',' | translate $} Редактор Markdown{$ ',' | translate $} Генератор Lorem Ipsum{$ ',' | translate $} Таймер Помодоро

Генерувати ідентифікатор UUID/GUID

Генерувати ідентифікатор UUID/GUID

Найширше застосування в комп'ютерних системах отримав універсальний унікальний ідентифікатор (UUID), також відомий під назвою «глобальний унікальний ідентифікатор» (GUID).

Він являє собою 128-бітовий код, який генерується системою на основі змінних і постійних величин: поточного часу, MAC-адреси, хеша SHA-1, простору імен MD5. Кінцевий результат генерації UUID, що відображається у вигляді 32-значного буквено-цифрового коду, розділеного дефісами, може здатися довільним, але насправді це результат складних обчислень. Так, комп'ютер не «вигадує» код, а формує його із конкретних технічних величин, актуальних на даний момент часу.

Вірогідність того, що на двох різних комп'ютерах у різний час буде згенерований однаковий UUID, прагне нуля, що дозволяє використовувати отримані коди для точкової/локальної ідентифікації даних без прив'язки до центру координації. Сьогодні UUID/GUID повсюдно застосовується як в онлайн, так і в офлайн-мережах, і ефективно працює не лише у глобальному інтернет-просторі, а й в автономних комп'ютерних системах.

Історія UUID

Вперше 128-бітові коди UUID почала використовувати американська компанія Apollo Computer у 1980-х роках. Вони були засновані на більш простих 64-бітових кодах, які застосовуються в Domain/OS, і знайшли широке застосування у обчислювальному середовищі Open Software Foundation.

З появою перших платформ Windows глобальний унікальний ідентифікатор був узагальнений і стандартизований. Компанія Microsoft прийняла дизайн DCE від Apollo Computer і зареєструвала простір імен URN в RFC 4122. У 2005 році останній був запропонований як новий стандарт IETF, і UUID стандартизували в рамках ITU.

Раніше - у 2002 році - при використанні UUID як первинних ключів у локальних базах даних були виявлені проблеми з продуктивністю системи. Вони були усунені у четвертій версії додаванням невипадкового суфікса, що базується на системному часі комп'ютера. Так званий підхід COMB (комбінований ідентифікатор часу GUID) збільшив ризики дублювання кодів, але водночас суттєво підвищив продуктивність при роботі з Microsoft SQL Server.

З розвитком IT-технологій універсальний унікальний ідентифікатор перестав бути вузькоспеціальним технічним інструментом, і сьогодні ним можуть користуватися всі охочі. Імовірність повторення згенерованих кодів не дорівнює нулю, але прагне до нього, і ідентифікувати ними можна будь-яку цифрову інформацію, після чого поєднувати її в єдині масиви даних з мінімальними ризиками повторів.

Переваги UUID

Генератори глобальних унікальних кодів не потребують централізованої звірки/синхронізації даних та поширюються у вільному доступі для всіх користувачів. До головних переваг UUID можна віднести:

  • Мінімальні ризики зіткнення (повторення) кодів. Незважаючи на їхнє масове застосування, ймовірність повторів прагне нуля.
  • Можливість об'єднувати різні масиви даних, використовуючи UUID як первинні (унікальні) ключі.
  • Спрощений розподіл даних по кількох рознесених серверах.
  • Можливість створення кодів в автономному режимі.

Унікальні ідентифікаційні коди, що записуються у форматі xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, дозволяють рознесеним системам розпізнавати інформацію без координування з єдиного data-центру: при практично нульовій ймовірності помилок/повторів. Ця особливість, поряд з простотою застосування і невеликими вимогами до продуктивності комп'ютерів, робить UUID затребуваною і незамінною в різних галузях IT і автономних обчислювальних систем.

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

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

Універсальний унікальний ідентифікатор даних 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 раз на секунду. Процес створення складається з п'яти етапів:

  • З мітки UTC беруться молодші 32 біти інформації. Вони перетворюються на 8 шістнадцяткових символів і займають 4 байти.
  • З тієї ж мітки UTC беруться середні 16 біт інформації, що перетворюються на 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 використовує порядок байтів big-endian, а варіант 2 - title-endian. Перший є основним, а другий зарезервованим для роботи з ранніми GUID від Microsoft Windows.

Варіант 3

На сьогоднішній день не використовується. Є зарезервованою версією для використання в майбутньому, коли можливості попередніх варіантів будуть вичерпані.

Більшість систем кодують ідентифікатор у big-endian, але є винятки. Наприклад, маршалінг у Microsoft COM/OLE libraries використовує mixed-endian, одночасно формуючи код із блоку title-endian і big-endian. На перший припадають перші три компоненти UUID, а на другий останні два.