Генератор Nil UUID

Генеруйте спеціальні UUID з усіма нулями, що використовуються як сигнальні значення в системах

Що таке Nil UUID?

Nil UUID — це спеціальна форма UUID, у якій усі 128 біт встановлено в нуль. Представляється як:

00000000-0000-0000-0000-000000000000

Nil UUID визначено в RFC 4122 як зарезервоване значення в екосистемі UUID, що позначає «пустий» або «null» ідентифікатор, коли потрібен UUID, але жоден реальний не підходить.

Як працює Nil UUID

  1. Константа з усіма 128 бітами, встановленими в нуль
  2. Відповідає формату UUID: 32 шестнадцяткові цифри з дефісами в шаблоні 8-4-4-4-12
  3. Не має бітів версії чи варіанти, оскільки всі — нульові
  4. RFC 4122 явно позначає його як спеціальний випадок UUID
  5. Використовується як значення-маркер у системах, що працюють з UUID

Переваги та зауваження

ПеревагиЗауваження
  • Універсально визнане спеціальне значення
  • Корисно як початковий/порожній стан
  • Легко перевірити (усі нулі)
  • Стабільний маркер у різних системах
  • Не є унікальним глобально (за задумом)
  • Не слід використовувати як реальний ідентифікатор
  • Може бути сприйнятий як помилка або неініціалізоване значення
  • Вимагає спеціальної обробки в деяких системах

Структура Nil UUID

БітиВміст
0-127Усі нулі (0x00000000000000000000000000000000)

На відміну від стандартних UUID з встановленими бітами версії та варіанти, Nil UUID має всі біти в нулі, включаючи ці бітові поля.

Nil UUID проти інших версій

ВерсіяБазується наВикористанняУнікальність
Nil UUIDКонстанта (усі нулі)Спеціальне значення, маркер❌ Не унікальний
UUID v1Час + MACСортувальні ID✅ Унікальний глобально
UUID v3Простір імен + MD5Детерміновані ID✅ Унікальний для вводу
UUID v4ВипадковістьБезпечні випадкові ID✅ Статистично унікальний
UUID v5Простір імен + SHA-1Детерміновані ID✅ Унікальний для вводу
UUID v6Час (переставлений)Сортувальні ID✅ Унікальний глобально
UUID v7Час + випадковістьСортувальні ID✅ Унікальний глобально

Поширені варіанти використання

  • Значення за замовчуванням: початковий стан перед присвоєнням реального UUID
  • Маркери-сторожові: спеціальний маркер у системах, що потребують UUID
  • Виявлення помилок: індикатор неініціалізованого або відсутнього UUID
  • Заглушки в БД: якщо реальний UUID очікується або не застосовується
  • Кореневі об'єкти: відносини «батько-дитина», де корень не має батька
  • Спеціальні функції: операції системи, які потребують відомого UUID
  • Тестування: значення-заглушка в тестових середовищах

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

Чи є Nil UUID дійсним UUID?

Так. Nil UUID явно визначено в RFC 4122 як спеціальний випадок. Хоча він не слідує стандартним правилам версії/варіанти, це визнане UUID.

Чи можна використовувати Nil UUID як ідентифікатор?

Ні. Його ніколи не слід використовувати як реальний ідентифікатор. Це зарезервоване значення для позначення відсутності UUID або статусу за замовчуванням.

Як перевірити, що UUID є Nil UUID?

Порівняйте з рядком "00000000-0000-0000-0000-000000000000" або перевірте, що всі біти рівні нулю. Більшість бібліотек UUID мають для цього спеціальну функцію.

Чи всі системи розпізнають Nil UUID як особливе?

Не обов'язково. Хоча RFC це визначає, деякі системи можуть вважати його звичайним значенням або відхиляти.

Чи є різниця між Nil UUID та порожнім UUID?

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

Ресурси