Skip to content

Feature Uuid v8

github-actions[bot] edited this page Jul 15, 2026 · 1 revision

🧬 UUID v8 — пользовательский

← Возможности · Главная · Сравнение

122 бита под ваши данные в валидной оболочке UUID: биты версии и варианта проставляются фабрикой, остальное — целиком ваше (RFC 9562 §5.8).

Принцип работы

use CloudCastle\Uuid\UuidFactory;

$payload = hash('sha256', 'мои-данные', true);        // любые байты
$uuid = (new UuidFactory())->uuid8(substr($payload, 0, 16));

$uuid->version();     // 8 — всегда, поверх любых байтов
$uuid->variant();     // UuidVariant::Rfc

Попытка «подделать» другую версию через нагрузку невозможна: маска фабрики перезаписывает биты версии и варианта.

Плюсы

  • Стандартный контейнер для доменных схем идентификаторов (шардинг-ключи, хеши).
  • Совместим со всей инфраструктурой UUID: формы, сравнение, хранение.

Минусы

  • Семантику 122 бит знаете только вы — документируйте схему.

✅ Рекомендуется

  • Встраивание доменной информации (регион, тип сущности) с сохранением формата UUID.

❌ Антипаттерны

  • Случайные байты в v8 «просто так» — это v4.
  • Миллисекунды в старших битах вручную — это v7.

Схема фичи

flowchart LR
    P["16 байт нагрузки"] --> F[UuidFactory]
    F -->|"маска версии 8 + варианта"| U[Uuid v8]
Loading

Жизненный цикл

sequenceDiagram
    participant A as Приложение
    participant F as UuidFactory

    A->>F: uuid8(байты)
    F->>F: длина = 16?
    F->>F: (байты & AND) | OR
    F-->>A: Uuid v8
Loading

Сравнение с аналогами

Возможность Uuid ramsey/uuid symfony/uid 🏆 Победитель
UUID v8 Паритет
Защита битов версии от подделки Паритет

Clone this wiki locally