Перейти до змісту
Корисні інструменти

Что такое UUID (GUID): версии, генерация и коллизии

АвторРедакція 9-07-2026, 00:09 269
Что такое UUID (GUID): версии, генерация и коллизии
Реклама
Коротко
  • UUID (він же GUID) — це 128-бітний ідентифікатор з 32 шістнадцяткових символів, записуваний як 8-4-4-4-12, наприклад 550e8400-e29b-41d4-a716-446655440000.
  • Головний сенс — генерувати унікальні ключі локально, без звернення до сервера або загального лічильника, що зручно для розподілених систем, API та офлайн-клієнтів.
  • Найбільш популярні версії: v4 (випадкова), v1 (по часу та MAC), v5 (по імені та хешу SHA-1), а також нові v7 (сортована по часу) та ULID-подібні варіанти.
  • Ймовірність колізії у v4 астрономічно мала: щоб отримати один шанс на збіг, потрібно згенерувати мільярди ідентифікаторів щосекунди десятиліттями.

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

Генератор UUID
Сгенеруйте UUID/GUID онлайн — безкоштовно
Відкрити генератор →

Що таке UUID і GUID

UUID (Universally Unique Identifier — універсальний унікальний ідентифікатор) — це 128-бітне значення, описане в стандарті RFC 4122 і оновленому RFC 9562. GUID (Globally Unique Identifier) — те ж саме, просто історично так його називає Microsoft в екосистемі Windows і .NET. Різниці в форматі немає: обидва складаються з 128 біт і зазвичай записуються у вигляді 36 символів — 32 шістнадцяткові цифри, розбиті дефісами на групи 8-4-4-4-12.

Приклад: 3f2504e0-4f89-41d3-9a0c-0305e82c3301. Всередині рядка закодовані службові поля — номер версії (по ньому видно, як ідентифікатор був отриманий) і варіант (як трактувати біти). Всього простір UUID містить 2 в ступені 128 значень — це порядку 3,4 × 10 в 38 ступені комбінацій, число, яке складно навіть уявити.

Навіщо потрібен UUID: бази даних та API

Основна цінність UUID — незалежність генерації. Ідентифікатор можна створити на клієнті, на будь-якому з серверів або у фоновому завданні, і він не зіткнеться з чужим. Це дає кілька практичних вигод:

В розподілених базах даних і шардованих таблицях не потрібен єдиний лічильник — кожен вузол видає ключі сам. У REST та GraphQL API клієнт може сформувати id нову сутність заздалегідь і надіслати її разом із запитом на створення, що спрощує ідемпотентність та повторні спроби. При злитті даних з різних систем (міграція, синхронізація, імпорт) записи не конфліктують за ключем. UUID також не розкриває порядок і кількість записів: за ним не можна вгадати, що до вас у базі було рівно 42 замовлення, — на відміну від послідовного числового id.

Версії UUID і чим вони відрізняються

Стандарт описує кілька версій, і вибір впливає на продуктивність і передбачуваність:

Версія 4 (випадкова) — найпопулярніша. 122 біти беруться з криптографічно стійкого генератора випадкових чисел. Проста, не залежить від оточення, не розкриває час створення. Мінус — значення розкидані хаотично, що заважає індексам в деяких СУБД.

Версія 1 (по часу) — будується з поточного часу та MAC-адреси мережевої карти. Практично унікальна і містить мітку часу, але може видати відомості про пристрій і момент генерації.

Версії 3 і 5 (по імені) — детерміновані: з одного і того ж вхідного імені та простору імен завжди виходить один і той же UUID (v3 через MD5, v5 через SHA-1). Зручні, коли потрібен стабільний ідентифікатор для відомого рядка, наприклад для URL.

Версія 7 (сортована по часу) — новинка з RFC 9562. У старших бітах лежить Unix-час в мілісекундах, далі — випадковість. Такий UUID зростає з часом, тому відмінно лягає в B-tree індекси і замінює самописні схеми на кшталт ULID. Для нових проектів з UUID як первинним ключем v7 сьогодні часто найкращий вибір.

Як згенерувати UUID

Готові функції є майже скрізь, вигадувати своє не потрібно:

JavaScript (браузер і Node): crypto.randomUUID() — поверне рядок v4. Python: модуль uuid — uuid.uuid4(), uuid.uuid1(), uuid.uuid5(ns, name). PHP: бібліотека ramsey/uuid — Uuid::uuid4(). Java: UUID.randomUUID(). PostgreSQL: тип uuid і функція gen_random_uuid(). Командний рядок Linux: утиліта uuidgen. Windows PowerShell: [guid]::NewGuid().

Якщо UUID потрібен разово — для тесту, конфігурації, ключа запису або сидування бази, — найшвидше взяти готове значення в онлайн-генераторі та скопіювати його. Важливе правило: для випадкових версій завжди використовуйте криптографічно стійке джерело (саме тому crypto.randomUUID бажано Math.random).

Ймовірність колізій: чи варто боятися

Колізія — це коли два незалежно згенерованих UUID випадково співпали. Для версії 4 доступно 2 в ступені 122 значень, і ймовірність оцінюється через парадокс днів народження. Щоб ймовірність хоча б одного збігу досягла 50%, потрібно згенерувати близько 2,7 × 10 в 18 ступені ідентифікаторів. На практиці це означає: навіть якщо створювати мільярд UUID за секунду, накопичити таку кількість вдасться лише за десятки років безперервної роботи. Для переважної більшості систем ризик колізії незначний і його можна сміливо ігнорувати.

Реальні проблеми зазвичай не в математиці, а в реалізації: слабкий генератор випадкових чисел (не криптографічний), повторно використане зерно, копіювання одного і того ж UUID через помилку в коді. Якщо джерело випадковості якісне, дублів в природних умовах ви не побачите.

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

UUID і GUID — це одне й те саме?
Так, по суті це синоніми. GUID — назва, прийнята в світі Microsoft і .NET, а UUID — термін з стандартів RFC. Формат і довжина (128 біт, запис 8-4-4-4-12) у них ідентичні, різниць у структурі немає.

Яку версію UUID вибрати для первинного ключа в базі?
Для нових проєктів зручна версія 7: вона сортується за часом і дружня до індексів. Якщо такої підтримки немає, беруть версію 4 за простоту і відсутність витоку метаданих. Версії 1, 3 і 5 застосовують під конкретні завдання.

Чи можуть два UUID співпасти?
Теоретично так, практично — майже ніколи. При коректному криптографічному генераторі ймовірність колізії для v4 настільки мала, що для реальних обсягів даних нею зневажають. Проблеми виникають лише при слабкому джерелі випадковості.

Чи можна згенерувати UUID вручну або онлайн?
Так. В будь-якій мові є вбудована функція (crypto.randomUUID(), uuid4(), gen_random_uuid()), а для разової задачі простіше скористатися онлайн-генератором і скопіювати готове значення. Головне — не вигадувати біти руками, щоб зберегти унікальність.

Генератор UUID
Сгенеруйте UUID/GUID онлайн — безкоштовно
Відкрити генератор →

Оновлено: 9 липня 2026 р. Редакція MegaInet.art.

Наскільки матеріал корисний?Оцінка допомагає нам вибирати теми
00 оцінок
Аналітика

Статистика матеріалу

269переглядів
0коментарів
6хв читання
2 / 20місце серед матеріалів розділу

Входить до 10% найпопулярніших матеріалів розділу.

Обговорення

Поки ніхто не висловився — будьте першим.

Коментарі пишуть учасники Увійдіть на сайт — це безкоштовно і займає хвилину. Коментарі проходять модерацію.
Увійти
Реклама

На які запити відповідає ця сторінка