← Усі інструменти

Генератор UUID v4 (GUID)

Генеруйте випадкові 128-бітні UUID v4 (GUID) миттєво у браузері. Що таке UUID, чим відрізняються версії, ймовірність колізій та коли їх використовувати.

Що таке UUID насправді

UUID, скорочення від Universally Unique Identifier (універсальний унікальний ідентифікатор), — це 128-бітне значення, яке використовується для позначення чогось без необхідності попередньо отримувати дозвіл від будь-кого. Ви також можете зустріти термін GUID, або Globally Unique Identifier, — саме так Microsoft назвала ту саму концепцію в Windows і світі .NET. Обидва терміни описують одне й те саме 128-бітне число практично в усіх випадках, що мають практичне значення: якщо колега каже GUID, а ви — UUID, ви говорите про одне й те саме.

Ці 128 бітів зазвичай записуються як 32 шістнадцяткових цифри, розділені на п'ять груп дефісами за шаблоном 8-4-4-4-12. Типове значення виглядає так: 123e4567-e89b-12d3-a456-426614174000. Дефіси самі по собі не несуть ніякого змісту — вони існують виключно для того, щоб людина могла прочитати значення, не збиваючись. Кожен символ є шістнадцятковою цифрою від 0 до f, тому UUID виглядає щільнішим за звичайне число, хоча під поверхнею це просто одне дуже велике ціле число.

Абстрактний яскравий шістнадцятковий токен, що представляє унікальний 128-бітний ідентифікатор на темно-індиговому тлі
UUID — це одне 128-бітне число, записане як 32 шістнадцяткових цифри в п'яти групах через дефіс.

Версії та чому v4 є стандартом де-факто

Стандарт визначає кілька версій, які відрізняються способом заповнення бітів. Версія 1 базується на часі: вона поєднує поточну мітку часу і MAC-адресу мережевого інтерфейсу пристрою. Це робить значення v1 придатними для сортування за часом створення, але водночас розкриває інформацію про те, де і приблизно коли вони були згенеровані — що не завжди бажано. Версії 3 і 5 базуються на іменах: вони хешують простір імен разом з іменем, тому однакові вхідні дані завжди дають однаковий ідентифікатор.

Версія 4 обрала зовсім інший шлях. Вона майже повністю випадкова. З 128 бітів шість зарезервовано для позначення версії та варіанту, а решта 122 заповнюються випадковими даними. Тут немає мітки часу, MAC-адреси, простору імен — лише шум. Саме тому більшість генераторів, включно з цим, за замовчуванням видає v4. Він нічого не розкриває про пристрій або момент створення і не вимагає координації між сторонами, що генерують. Інструмент на цій сторінці працює повністю у вашому браузері, тому випадкові значення ніколи не покидають ваш пристрій.

Наскільки малоймовірним є збіг

Розумна стурбованість полягає в тому, що два випадкових UUID можуть колись збігтися. З 122 випадковими бітами простір можливих значень v4 становить 2 у степені 122, що приблизно дорівнює 5,3 з 36 нулями. Щоб пояснити це людською мовою: вам довелося б генерувати мільярди UUID щосекунди протягом багатьох десятиліть, перш ніж ймовірність хоча б одного дубліката стала б вимірювальною. Сам стандарт описує шанс збігу як настільки близький до нуля, що ним можна знехтувати. На практиці команди вважають v4 унікальними і рухаються далі — і роблять це цілком обґрунтовано.

Незліченні окремі яскраві ключі, що плавають у безмежному темному просторі без дублікатів, з ціановими і золотистими акцентами
Простір можливих значень v4 настільки величезний, що збіги фактично неможливі.

Де розробники вдаються до них

Оскільки унікальність не потребує центрального органу, UUID чудово підходять там, де координація дорога або неможлива. Вони є природним вибором для первинних ключів у базах даних — особливо коли кілька сервісів одночасно вставляють рядки і не можна зупинятися, щоб запитати у спільного лічильника наступний номер. У розподілених системах два вузли на протилежних кінцях планети можуть генерувати ідентифікатори в один і той самий момент і ніколи не перетнутися. Вони також використовуються як ключі ідемпотентності API, коли клієнт додає UUID до запиту, щоб сервер міг безпечно ігнорувати дублікат у разі повторної спроби мережі. Токени сесій, імена файлів, ідентифікатори подій і ключі повідомлень — усе це спирається на ту саму властивість.

UUID проти автоінкрементних ідентифікаторів

Класична альтернатива — автоінкрементне ціле число: 1, 2, 3 і так далі. Послідовні ідентифікатори компактні, природно сортуються і легко читаються, але мають реальні недоліки. Вони розкривають кількість записів і дозволяють стороннім вгадувати сусідні значення, а також змушують кожне вставлення звертатися до єдиного лічильника, що стає вузьким місцем при шардингу бази або злитті даних із кількох джерел. UUID вирішують ці проблеми, дозволяючи будь-якій стороні генерувати ключ незалежно і не розкриваючи нічого про обсяг чи порядок. Плата за це — розмір і дещо менша локальність в індексах. Для систем, що масштабуються горизонтально або мають приховувати свою внутрішню структуру, ця угода зазвичай виправдана. Ви можете дослідити цей та подібні інструменти в нашій колекції всі генератори або переглянути ширший набір інструментів для розробників.

Часті запитання

Чи є GUID тим самим, що й UUID?

Для повсякденних цілей — так. GUID — це назва Microsoft для того самого 128-бітного ідентифікатора. Єдина реальна відмінність — порядок байтів у сирому бінарному форматі в деяких системах Windows; у рядковому форматі вони ідентичні й взаємозамінні.

Яку версію UUID генерує цей інструмент?

Він генерує версію 4 — випадковий варіант. Зі 128 бітів 122 заповнені випадковими даними, що робить кожне значення надзвичайно малоймовірним до повторення і означає, що воно не містить мітки часу чи інформації про пристрій.

Чи можуть два UUID бути однаковими?

Теоретично ймовірність не є строго нульовою, але з приблизно 5,3 × 10 у степені 36 можливими значеннями v4 вона настільки мала, що вважається незначущою. Вам довелося б генерувати астрономічну кількість UUID, перш ніж збіг став би ймовірним.

Чому варто використовувати UUID замість автоінкрементного числа?

UUID можна створювати незалежно в будь-якому сервісі без спільного лічильника, вони не розкривають кількість записів чи порядок і спрощують злиття даних із кількох джерел. Автоінкрементні ідентифікатори компактніші, але стають вузьким місцем і розкривають інформацію при масштабуванні.

UUID генеруються на сервері?

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

Що означає шаблон із дефісами?

Угруповання 8-4-4-4-12 — це лише конвенція для зручності читання. Дефіси не несуть ніяких даних; вони розбивають 32 шістнадцяткових цифри на блоки, щоб люди могли легше переглядати й порівнювати значення.