«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Все, что вам нужно знать о UUID.

Все, что вам нужно знать о UUID.

Опубликовано 7 ноября 2024 г.
Просматривать:581

Everything you need to know about UUID.

А Универсальный уникальный идентификатор (UUID) — это 128-битная метка, используемая в компьютерных системах для уникальной идентификации информации. UUID спроектированы так, чтобы быть уникальными в пространстве и времени, что позволяет генерировать их независимо, без центрального органа, что сводит к минимуму риск дублирования.

UUID служат различным целям, в том числе:

  • Идентификация записей в базах данных.
  • Тегирование объектов в распределенных системах.
  • Служит первичными ключами в приложениях, где уникальность имеет решающее значение.

Реальные примеры использования

  • Базы данных: UUID используется в качестве первичного ключа в реляционных базах данных для обеспечения уникальной идентификации записей.
  • Микросервисы: упростите взаимодействие служб, предоставляя уникальные идентификаторы для запросов и ресурсов.
  • Устройства Интернета вещей: однозначно идентифицируйте устройства в сети, гарантируя, что данные из нескольких источников могут быть агрегированы без конфликтов.

Преимущества и недостатки использования UUID

Преимущества:

  • Глобальная уникальность: конфликты UUID крайне маловероятны, что делает их подходящими для распределенных систем, в которых несколько узлов генерируют идентификаторы независимо.
  • Центральный орган власти не требуется.: их можно создавать без координации, что упрощает операции в распределенных средах.
  • Масштабируемость: они хорошо работают в системах, требующих масштабирования на несколько серверов или служб.

Недостатки:

  • Размер хранилища: UUID занимают больше места (128 бит) по сравнению с традиционными целочисленными идентификаторами (обычно 32 бита), что может привести к увеличению затрат на хранение.
  • Проблемы с производительностью: индексирование UUID может снизить производительность базы данных из-за их случайности и размера, что приводит к увеличению времени выполнения запросов по сравнению с последовательными идентификаторами.
  • Недружелюбие к пользователю: UUID нелегко запомнить или сделать удобным для пользователя, когда они представлены в пользовательских интерфейсах.

Стандарт

Стандартное представление UUID состоит из 32 шестнадцатеричных символов, разделенных на пять групп, разделенных дефисами, в формате 8-4-4-4-12, что в общей сложности составляет 36 символов (32 буквенно-цифровых плюс 4 дефиса). .

Формат UUID можно представить следующим образом:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

Где:

  • M указывает версию UUID.
  • N указывает вариант, который помогает интерпретировать макет UUID.

Компоненты UUID

  1. TimeLow: 4 байта (8 шестнадцатеричных символов), представляющие нижнее поле метки времени.
  2. TimeMid: 2 байта (4 шестнадцатеричных символа), представляющие среднее поле метки времени.
  3. TimeHighAndVersion: 2 байта (4 шестнадцатеричных символа), которые включают номер версии и старшее поле метки времени.
  4. ClockSequence: 2 байта (4 шестнадцатеричных символа), используемые для предотвращения коллизий, особенно когда несколько UUID генерируются в быстрой последовательности или если системные часы регулируются.
  5. Узел: 6 байтов (12 шестнадцатеричных символов), обычно представляющих MAC-адрес генерирующего узла.

Типы UUID

  1. Версия 1: UUID на основе времени, которые используют комбинацию текущей временной метки и MAC-адреса генерирующего узла. Эта версия обеспечивает уникальность в пространстве и времени.

  2. Версия 2: аналогична версии 1, но включает идентификаторы локального домена; однако он используется реже из-за своих ограничений.

  3. Версия 3: UUID на основе имени, созданные с использованием MD5-хеша идентификатора пространства имен и имени.

  4. Версия 4: UUID, генерируемые случайным образом, которые обеспечивают высокую случайность и уникальность, при этом для управления версиями зарезервировано всего несколько битов.

  5. Версия 5: аналогична версии 3, но для хеширования используется SHA-1, что делает ее более безопасной, чем версия 3.

Варианты

Поле варианта в UUID определяет его расположение и интерпретацию. Наиболее распространенные варианты включают:

  • Вариант 0: зарезервировано для обратной совместимости NCS.
  • Вариант 1: стандартный макет, используемый для большинства UUID.
  • Вариант 2: используется для UUID безопасности DCE, которые встречаются реже.
  • Вариант 3: зарезервировано для будущих определений.

Пример

Для Версии 4 UUID может выглядеть следующим образом:

550e8400-e29b-41d4-a716-446655440000

Здесь:

  • 41d4 означает, что это версия 4.
  • a7 представляет вариант, в данном случае обычный вариант «Leach-Salz».

Как рассчитываются UUID

  1. Версия 1 (по времени):

    • Временная метка обычно представляет собой количество 100-наносекундных интервалов с 15 октября 1582 года (даты реформы григорианского календаря).
    • Узел — это MAC-адрес машины, генерирующей UUID.
    • Последовательность часов помогает обеспечить уникальность при изменении времени на часах (например, из-за перезагрузки системы).
  2. Версия 3 и версия 5 (на основе имени):

    • Пространство имен (например, домен DNS) объединяется с именем (например, путем к файлу или URL-адресом) и хэшируется.
    • Хеш (MD5 для версии 3, SHA-1 для версии 5) затем структурируется в формат UUID, что обеспечивает правильную настройку полей версии и варианта.
  3. Версия 4 (случайная):

    • Для 122 бит UUID генерируются случайные или псевдослучайные числа.
    • Поля версии и варианта устанавливаются соответствующим образом, обеспечивая соответствие стандартам UUID.

Пример расчета UUIDv4

Шаг 1: сгенерируйте 128 случайных битов

Предположим, мы генерируем следующее 128-битное случайное значение:

110011001101011011010101011110101011101101101110010111010101101101011111011010011011110100100101111001011

Шаг 2: примените версию и вариант UUIDv4

  1. Версия: замените биты 12–15 (4-й символ) на 0100 (для UUID версии 4).
    Исходное значение: 1100 становится 0100 → Обновлено значение в этой позиции.

  2. Вариант: Замените биты 6–7 9-го байта на 10 (для варианта RFC 4122).
    Исходное значение: 11 становится 10 → Обновлено значение в этой позиции.

Шаг 3: форматирование в шестнадцатеричном формате

Преобразуйте 128-битный двоичный файл в 5 шестнадцатеричных групп:

  1. 32-битная группа: 11001100110101101101010101111010 → ccda55ba
  2. 16-битная группа: 1011101101101110 → b76e
  3. 16-битная группа: 0100010101000101 → 4545 (с 0100 для версии 4)
  4. 16-битная группа: 1010110111110010 → adf2 (с 10 для варианта)
  5. 48-битная группа: 11010011011110100100101111001011 → d39d25cb

Шаг 4: Объедините группы

Окончательный UUID будет выглядеть так:
ccda55ba-b76e-4545-adf2-d39d25cb

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/rosselli00/what-is-uuid-cng?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3