Що таке Nil UUID?
Nil UUID — це спеціальна форма UUID, у якій усі 128 біт встановлено в нуль. Представляється як:
00000000-0000-0000-0000-000000000000
Nil UUID визначено в RFC 4122 як зарезервоване значення в екосистемі UUID, що позначає «пустий» або «null» ідентифікатор, коли потрібен UUID, але жоден реальний не підходить.
Як працює Nil UUID
- Константа з усіма 128 бітами, встановленими в нуль
- Відповідає формату UUID: 32 шестнадцяткові цифри з дефісами в шаблоні 8-4-4-4-12
- Не має бітів версії чи варіанти, оскільки всі — нульові
- RFC 4122 явно позначає його як спеціальний випадок UUID
- Використовується як значення-маркер у системах, що працюють з 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 з усіма нулями. Але деякі реалізації можуть їх розрізняти.