UUID має кілька версій, кожна з яких має різні характеристики:
• v1: На основі часу та ідентифікатора вузла, впорядкований, але може розкривати інформацію
• v3: На основі назви та простору імен, використовує MD5 хеш
• v4: Повністю випадковий, найбільш поширена версія
• v5: На основі назви та простору імен, використовує SHA-1 хеш, безпечніший за v3
• v6: Покращена версія v1, частина часу впорядкована за порядком байтів, більш придатна для сортування
• v7: Нова версія на основі Unix часу, поєднує часову послідовність та випадковість
Як обрати відповідну версію UUID
Виберіть найбільш підходящу версію залежно від сценарію використання:
• Потрібна безпека: оберіть v4 (випадковий) або v5 (на основі SHA-1 назви)
• Потрібне сортування: оберіть v6 або v7 (на основі часу та легке для сортування)
• Потрібна детермінованість: оберіть v3 або v5 (однакові вхідні дані дають однаковий результат)
• Потрібна продуктивність: оберіть v1 (швидке генерування)
• Спеціальні значення: NIL (усі нулі) або MAX (усі F) для крайніх випадків
Випадковість та детермінованість
UUID v4 є повністю випадковим і підходить для більшості сценаріїв. v3 та v5 є детермінованими, однакові назва та простір імен завжди генерують однаковий UUID, що підходить для випадків, коли потрібна послідовність відображення. v1, v6 та v7 містять інформацію про час і в певних умовах мають послідовність.
v1, v6 та v7 містять інформацію про час, але обробляють її по-різному. v6 покращує проблеми сортування часу v1, v7 використовує Unix час для більш простої часової послідовності. Якщо потрібні UUID, які можна сортувати за часом створення, v6 та v7 є кращим вибором.
v1 може розкривати час створення та інформацію про вузол (MAC адресу). v4 повністю випадковий і є найкращим вибором для сценаріїв, чутливих до конфіденційності. v3 використовує MD5 хеш, що менш безпечно, ніж SHA-1 у v5. NIL та MAX є фіксованими значеннями і не повинні використовуватися у сценаріях, де потрібна унікальність.
UUID в основному використовуються у сценаріях, де потрібні глобально унікальні ідентифікатори: розподілені системи, первинні ключі баз даних, ідентифікатори сесій, імена файлів, токени API тощо. Вибір відповідної версії може оптимізувати продуктивність, безпеку та організацію даних.