raatools/

Генератор UUID

Генеруйте випадкові UUID v4 — один або декілька.

1

Що таке UUID?

UUID (Universally Unique Identifier — Універсально унікальний ідентифікатор) — це 128-бітне число, що використовується для унікальної ідентифікації інформації в розподілених системах без потреби в центральному органі. UUID стандартизовані у RFC 4122 і використовуються скрізь — від первинних ключів баз даних і відстеження запитів API до управління сеансами та іменування файлів.

Стандартний формат UUID — 36 символів з чотирма дефісами: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, де M вказує версію (1–5), а N — варіант. Найпоширенішою є версія UUID v4, яка генерує ідентифікатори за допомогою криптографічної випадковості. Цей інструмент за замовчуванням генерує UUID v4.

Формат UUID v4

UUID v4 використовує 122 випадкових біти (решта 6 бітів кодують версію та варіант). Формат: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx, де кожне x — випадкова шістнадцяткова цифра, а y — одне зі значень 8, 9, A або B. Цифра 4 у третій групі ідентифікує версію 4. Кожен UUID v4 генерується незалежно з використанням криптографічної випадковості.

Як користуватися цим інструментом

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

Типові сценарії використання UUID

  • Первинні ключі бази даних: UUID дозволяють розподіленим системам створювати записи незалежно, без колізій ключів, на відміну від автоінкрементних цілих чисел, які потребують координації.
  • Ідентифікатори запитів API: прикріплюйте UUID до кожного запиту API для наскрізного трасування через мікросервіси.
  • Токени сеансу: створюйте унікальні ідентифікатори сеансу, які неможливо вгадати.
  • Імена файлів: генеруйте унікальні назви файлів для запобігання колізіям під час одночасного завантаження кількома користувачами.
  • Ключі ідемпотентності: використовуйте UUID у платіжних API, щоб одна транзакція не оброблялась двічі.

Імовірність колізій

UUID v4 має 122 випадкових біти, що дає 5,3 × 10³⁶ можливих значень. Імовірність генерації двох однакових UUID є астрономічно малою. Для досягнення 50% ймовірності хоча б однієї колізії потрібно згенерувати 2,71 × 10¹⁸ UUID (2,71 квінтильйона). На практиці колізії не є реальною проблемою для жодного застосунку.

Нульовий UUID

Нульовий UUID (00000000-0000-0000-0000-000000000000) — це спеціальне значення, визначене в RFC 4122 як заповнювач або значення за замовчуванням. Деякі застосунки використовують його для позначення «немає значення» або «невідомо» у стовпцях бази даних типу UUID, аналогічно до того, як null використовується для інших типів даних.

Порівняння версій UUID

UUID v1 використовує поточну мітку часу та MAC-адресу пристрою — швидко, але може розкривати інформацію про пристрій. UUID v3 і v5 генерують детерміновані UUID з простору імен і назви за допомогою MD5 та SHA-1 відповідно. UUID v4 використовує чисту випадковість, забезпечуючи найкраще поєднання унікальності, простоти та конфіденційності. UUID v7 (стандарт у розробці) поєднує префікс мітки часу з випадковістю для UUID, що сортуються за часом.

Чи безпечний мій UUID?

Так. Для генерації використовується нативний API браузера crypto.randomUUID(), який забезпечує криптографічно безпечну випадковість. Вся обробка відбувається локально на вашому пристрої. UUID не записуються, не зберігаються і не передаються на жоден сервер.

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

Що краще використовувати: UUID чи автоінкрементні ідентифікатори?

UUID краще підходять для розподілених систем, архітектур мікросервісів і будь-якого сценарію, де записи створюються на кількох серверах. Автоінкрементні ідентифікатори простіші, менші за розміром (4–8 байт проти 16 байт) і ефективніші для індексування бази даних. Вибирайте залежно від архітектури: централізовані системи можуть використовувати автоінкрементні, розподілені — UUID.

Чи потрібно зберігати UUID як рядки в базі даних?

Ні. Більшість баз даних підтримують нативний тип UUID, який зберігає значення як 16 байт замість 36-байтного рядкового представлення. У PostgreSQL є тип стовпця UUID, MySQL може використовувати BINARY(16), MongoDB має власний двійковий підтип UUID. Використання нативних типів економить місце та покращує продуктивність запитів.