У цій статті
Що таке UUID?
UUID (Universally Unique Identifier) — це 128-бітний ідентифікатор, який гарантовано є унікальним у просторі та часі без потреби в центральному органі керування. UUID форматується як 32 шістнадцяткових символи у 5 групах, розділених дефісами: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Існує кілька версій UUID, кожна з яких генерується по-різному. Версія 4 (випадкова) є найпоширенішою — вона генерує 122 випадкових біти, що робить колізії астрономічно малоймовірними (вам знадобилося б генерувати 1 мільярд UUID на секунду протягом 85 років, щоб отримати 50% шанс колізії).
Як генерується UUID
UUID v4 використовує криптографічно захищену випадкову генерацію.
- Випадкові біти — 122 випадкових біти генеруються за допомогою CSPRNG
- Маркування версії — біти 12–15 третьої групи встановлюються як 0100 для позначення версії 4
- Маркування варіанту — біти 6–7 четвертої групи встановлюються як 10 для позначення варіанту RFC 4122
Спробуйте безкоштовно — реєстрація не потрібна
Згенерувати UUID →Коли використовувати UUID
UUID — це найкращий тип ідентифікатора для розподілених систем і баз даних.
- Первинні ключі бази даних — використовуйте UUID як первинні ключі в розподілених системах, щоб уникнути конфліктів ID під час злиття
- Токени сесій — генеруйте UUID для ідентифікаторів сесій і тимчасових токенів
- Іменування файлів — використовуйте UUID для генерації унікальних імен файлів для завантажень користувачів і згенерованих ресурсів
Часті запитання
У чому різниця між UUID v1, v3, v4 і v5?
v1 базується на часі й включає MAC address, що робить його відстежуваним. v3 і v5 є детермінованими — вони хешують простір імен і назву для отримання одного й того самого UUID щоразу (v3 використовує MD5, v5 — SHA-1). v4 є випадковим і найбільш поширеним для загальних унікальних ідентифікаторів. v7 (новий стандарт) поєднує часову мітку та випадковість для сортованих UUID.
Що краще для первинних ключів бази даних — UUID чи автоінкрементні цілі числа?
Автоінкрементні числа простіші та ефективніші за обсягом сховища. UUID кращі для розподілених систем, злиття даних із кількох джерел, відображення ID у URL без розкриття інформації про послідовність і генерації ID на стороні клієнта до вставки в базу даних. Для односерверних застосунків автоінкремент часто достатній.
Чи справді UUID є унікальними?
UUID v4 має 2^122 можливих значень — приблизно 5,3 × 10^36. Ймовірність генерації двох однакових UUID настільки мала, що для будь-якого практичного застосування вона фактично дорівнює нулю. Парадокс днів народження означає, що вам знадобиться приблизно 2,71 квінтильйони UUID, щоб отримати 50% шанс колізії.