Генериране на UUID (v1, v4, v5, v7)

генерира вашите UUID (Universally Unique Identifier) във v1, v4, v5 (детерминистичен) или v7 (time-ordered), съгласно RFC 4122

Защо да използвате UUID?

UUID (Universally Unique Identifier) са уникални идентификатори, използвани за осигуряване на уникалност в различни системи и бази данни, без да се изисква централна координация. Те обикновено се използват в разпределени системи и уеб приложения за генериране на уникални идентификатори за ресурси.

Поддържани версии на UUID

Този инструмент поддържа следните версии на UUID:

  • Версия 1: въз основа на клеймо за време и MAC адрес.
  • Версия 4: произволно генерирана (най-използвана).
  • Версия 5: базирана на пръстов отпечатък SHA-1 на пространство от имена и име (детерминистично: една и съща двойка пространство от имена + име винаги ще генерира един и същ UUID).
  • Версия 7: временно подредена, препоръчва се за първични ключове на съвременни бази данни (лексикографско сортиране = хронологично сортиране).

UUID v5: пространство от имена и име

За да генерирате v5 UUID, трябва да изберете стандартно пространство от имена и да предоставите име:

  • DNS: за използване, когато името е име на домейн (например cdrn.fr).
  • URL: за използване, когато името е URL (например https://cdrn.fr/).
  • OID: Използвайте, когато името е ISO идентификатор на обект.
  • X500: Използвайте, когато името е отличително име X.500.

Тъй като генерирането е детерминистично, UUID v5 е особено подходящ за създаване на възпроизводими идентификатори от стабилни данни.

Как да генерирате UUID

На началната страница можете да генерирате UUID, като изберете желаната версия от падащо меню и щракнете върху бутона за генериране. За версия 5 също така предоставете пространството на имената и името.

Веднага след като се генерира UUID, той ще се появи в зелен ред с резултати, което показва, че е генериран успешно. Ако възникне грешка, червена линия ще покаже съответното съобщение за грешка.

Примери за код за използване на генерирани UUID

Можете да използвате генерираните UUID във вашите приложения, като ги интегрирате директно във вашия код. Ето един пример в PHP:

<преди> toString() . PHP_EOL; ехо "UUID v5: ". $uuidV5->toString() . PHP_EOL; ехо "UUID v7: ". $uuidV7->toString() . PHP_EOL; ?>

Валидирайте и анализирайте UUID

Можете също така да валидирате и анализирате съществуващи UUID, за да определите тяхната версия и валидност. Ето пример за код в PHP:

<преди> getFields()->getVersion(); } иначе { echo "Невалиден UUID"; } ?>

Често задавани въпроси

Каква е разликата между UUID v1, v4, v5 и v7?

v1 съчетава клеймо за време и MAC адрес на машината, което може да разкрие чувствителна информация. v4 е чисто случаен (122 произволни бита), това е най-използваната версия. v5 е детерминистичен: едно и също пространство от имена + двойка имена винаги произвежда един и същ UUID благодарение на SHA-1 хеш. v7 включва клеймо за време в милисекунди в началото на идентификатора, което го прави сортиран хронологично и идеален за първични ключове.

Каква е вероятността за сблъсък на v4 UUID?

UUID v4 има 122 произволни бита или приблизително 5,3 × 10^36 възможни стойности. За да се постигне 50% вероятност за сблъсък (парадокс на рождения ден), трябва да се генерира приблизително 2,7 × 10^18 UUID. На практика при стандартно приложение вероятността от сблъсък е незначителна. Това е, което позволява да се генерират идентификатори от страна на клиента без координация с централен сървър.

Защо да използвате UUID v7 за първичен ключ на база данни?

UUID v4, вмъкнат в индекс на B-дърво, причинява силна фрагментация: всяко вмъкване попада на произволна позиция, което влошава производителността и използването на кеша. UUID v7 започва с клеймо за време в милисекунди, така че нови редове винаги се вмъкват в края на индекса. Тогава производителността на вмъкване се доближава до тази на BIGSERIAL, като същевременно се запазват предимствата на универсалния идентификатор.

За какво се използват пространствата от имена на DNS, URL, OID и X500 на UUID v5?

Тези пространства от имена са UUID, предварително дефинирани в RFC 4122, които действат като контекстуален префикс за детерминистично генериране. DNS се използва с име на домейн, URL с пълен URL адрес, OID с ISO идентификатор на обект, X500 с LDAP отличително име. Можете също така да дефинирате свое лично пространство от имена: v4 UUID, генериран веднъж за вашето приложение, използван повторно като детерминистичен корен за всичките ви v5 идентификатори.

UUID или автоматично нарастване за базови идентификатори?

Автоматичното нарастване остава много ефективно за монолитни бази данни и лесно разкрива последователността на писане, което може да е нежелателно от страна на публичния API. UUID са най-подходящи за разпределени архитектури, генериране от страна на клиента, сливания на бази данни и публично излагане на непрозрачни идентификатори. Идеалният компромис през 2026 г.: UUID v7 в първичен ключ, който съчетава универсалност, разумна непрозрачност и добро представяне на индекса.

Преминават ли генерираните UUID през сървър на трета страна?

Генерирането се извършва в средата cdrn.fr, без извикване на външна услуга. За чисто произволни (v4) или временни (v7) версии не е необходима чувствителна информация като вход. За v5 предоставеното от вас пространство от имена и име се използват само за локално изчисление на SHA-1. Не се регистрират генерирани идентификатори, можете да използвате инструмента за създаване на UUID, предназначени за поверителни контексти.

Пример за заявка

curl -X POST https://cdrn.fr/api/v1/tools/uuid-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"version":"uuid_version_1","quantity":3,"namespace":"namespace_dns","name":"..."}'

Входна схема

Поле Тип Задължително По подразбиране
version choice (uuid_version_1, uuid_version_4, uuid_version_5, uuid_version_7)
quantity integer 3
namespace choice (namespace_dns, namespace_url, namespace_oid, namespace_x500)
name string

Крайни точки

  • GET https://cdrn.fr/api/v1/tools - изброява всички достъпни инструменти
  • GET https://cdrn.fr/api/v1/tools/uuid-generator - извлича схемата на този инструмент
  • POST https://cdrn.fr/api/v1/tools/uuid-generator/execute - изпълнява този инструмент с JSON payload