Генератор UUID для унікальних ідентифікаторів у системах

Генеруйте універсально унікальні ідентифікатори (UUID) для різних застосувань. Створюйте як версію 1 (на основі часу), так і версію 4 (випадкові) UUID для використання в розподілених системах, базах даних та інших.

Генератор UUID

Сгенерований UUID

📚

Документація

Генератор UUID

Вступ

Універсально унікальний ідентифікатор (UUID) — це 128-бітове число, яке використовується для ідентифікації інформації в комп'ютерних системах. UUID стандартизовані Фондом відкритого програмного забезпечення (OSF) як частина Середовища розподілених обчислень (DCE). Ці ідентифікатори призначені бути унікальними як у просторі, так і в часі, що робить їх ідеальними для різних застосувань у розподілених системах та за їх межами.

Цей інструмент генерації UUID дозволяє створювати як версії 1 (на основі часу), так і версії 4 (випадкові) UUID. Ці ідентифікатори корисні в різних сценаріях, де потрібна унікальна ідентифікація, таких як ключі бази даних, розподілені системи та мережеві протоколи.

Як працюють UUID

Структура UUID

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

1550e8400-e29b-41d4-a716-446655440000
2

128 біт UUID діляться на специфічні поля, кожне з яких несе різну інформацію в залежності від версії UUID:

  • 32 біти для поля time_low
  • 16 біт для поля time_mid
  • 16 біт для поля time_hi_and_version
  • 8 біт для поля clock_seq_hi_and_reserved
  • 8 біт для поля clock_seq_low
  • 48 біт для поля node

Ось діаграма, що ілюструє структуру UUID:

A B C D E F A: time_low (32 біти) B: time_mid (16 біт) C: time_hi_and_version (16 біт) D: clock_seq_hi_and_reserved (8 біт) E: clock_seq_low (8 біт) F: node (48 біт)

Версії UUID

Існує кілька версій UUID, кожна з яких має свій метод генерації:

  1. Версія 1 (на основі часу): Використовує поточний часовий штамп та MAC-адресу комп'ютера.
  2. Версія 2 (Безпека DCE): Схожа на версію 1, але включає ідентифікатор локальної доменної.
  3. Версія 3 (На основі імені, MD5): Генерується шляхом хешування ідентифікатора простору імені та імені.
  4. Версія 4 (Випадкова): Генерується за допомогою випадкового або псевдовипадкового числа.
  5. Версія 5 (На основі імені, SHA-1): Схожа на версію 3, але використовує хешування SHA-1.

Цей інструмент зосереджується на генерації UUID версії 1 та версії 4.

Формула

Генерація UUID версії 1

UUID версії 1 генеруються за допомогою наступних компонентів:

  1. Часовий штамп: 60-бітне значення, що представляє кількість 100-наносекундних інтервалів з 15 жовтня 1582 року (дата григоріанської реформи християнського календаря).
  2. Послідовність годинника: 14-бітне значення, яке використовується для уникнення дублікатів у разі, якщо годинник встановлюється назад.
  3. Вузол: 48-бітне значення, зазвичай отримане з MAC-адреси комп'ютера.

Формула для генерації UUID версії 1 може бути виражена як:

1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2

Генерація UUID версії 4

UUID версії 4 генеруються за допомогою криптографічно сильного генератора випадкових чисел. Формула є простою:

1UUID = random_128_bit_number
2

З конкретними бітом, встановленими для вказівки версії (4) та варіанту.

Сценарії використання

UUID мають численні застосування в різних сферах комп'ютерних наук і програмної інженерії:

  1. Ключі бази даних: UUID часто використовуються як первинні ключі в базах даних, особливо в розподілених системах, де кілька вузлів можуть одночасно генерувати записи.

  2. Розподілені системи: У великих розподілених системах UUID допомагають унікально ідентифікувати ресурси, транзакції або події через кілька вузлів або дата-центрів.

  3. Адресація вмісту: UUID можуть використовуватися для створення унікальних ідентифікаторів для вмісту в системах з адресацією вмісту.

  4. Управління сесіями: Веб-додатки часто використовують UUID для управління сесіями користувачів, забезпечуючи, щоб кожна сесія мала унікальний ідентифікатор.

  5. Ідентифікація пристроїв IoT: У додатках Інтернету речей (IoT) UUID можуть використовуватися для унікальної ідентифікації окремих пристроїв у мережі.

Альтернативи

Хоча UUID широко використовуються, існують альтернативні підходи до генерації унікальних ідентифікаторів:

  1. Автоінкрементні ID: Прості та зазвичай використовуються в однотабличних системах, але не підходять для розподілених середовищ.

  2. ID на основі часу: Можуть бути корисними для даних, впорядкованих за часом, але можуть стикатися з проблемами зі збігами в сценаріях з високою конкуренцією.

  3. ID Snowflake: Розроблені Twitter, ці ID поєднують часову мітку та номер робочого вузла для генерації унікальних ID у розподілених системах.

  4. ULID (Універсально унікальний лексикографічно впорядкований ідентифікатор): Більш нова альтернатива, яка прагне бути більш зручною для людини та впорядкованою, ніж UUID.

Історія

Концепція UUID була вперше представлена в системі комп'ютерних мереж Apollo, а пізніше стандартизована Фондом відкритого програмного забезпечення (OSF) як частина Середовища розподілених обчислень (DCE) у 1990-х роках. Початкова специфікація була опублікована в 1997 році як ISO/IEC 11578:1996 і пізніше переглянута в 2005 році як частина ISO/IEC 9834-8:2005.

Ключові етапи в історії UUID:

  • 1980-ті: Apollo Computer розробляє концепцію UUID для своєї системи комп'ютерних мереж.
  • 1997: Перша специфікація UUID опублікована як ISO/IEC 11578:1996.
  • 2005: Специфікація UUID переглянута та опублікована як частина ISO/IEC 9834-8:2005.
  • 2009: RFC 4122 визначає формат UUID та алгоритми генерації, що використовуються сьогодні.

З часом UUID стали важливим інструментом у розподілених системах і проектуванні баз даних, з різними реалізаціями та адаптаціями в різних мовах програмування та платформах.

Приклади коду

Ось приклади генерації UUID на різних мовах програмування:

1import uuid
2
3## Генерація UUID версії 4 (випадковий)
4random_uuid = uuid.uuid4()
5print(f"UUID версії 4: {random_uuid}")
6
7## Генерація UUID версії 1 (на основі часу)
8time_based_uuid = uuid.uuid1()
9print(f"UUID версії 1: {time_based_uuid}")
10

Посилання

  1. Leach, P., Mealling, M., & Salz, R. (2005). Універсально унікальний ідентифікатор (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
  2. Міжнародна організація зі стандартизації. (2005). Інформаційні технології – Процедури для роботи органів реєстрації OSI: Генерація та реєстрація універсально унікальних ідентифікаторів (UUID) та їх використання як компонентів ASN.1 Object Identifier. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
  3. Універсально унікальний ідентифікатор. (2023). У Вікіпедії. https://en.wikipedia.org/wiki/Universally_unique_identifier
  4. ID Snowflake. (2023). У Вікіпедії. https://en.wikipedia.org/wiki/Snowflake_ID
  5. ULID Spec. (н.д.). GitHub. https://github.com/ulid/spec
🔗

Пов'язані Інструменти

Відкрийте більше інструментів, які можуть бути корисними для вашого робочого процесу

Генератор CPF для тестування та валідації даних

Спробуйте цей інструмент

Генератор випадкових User Agent для тестування веб-розробки

Спробуйте цей інструмент

Генератор випадкових локацій: Створювач глобальних координат

Спробуйте цей інструмент

Генератор унікальних ObjectID для MongoDB та тестування

Спробуйте цей інструмент

Генератор MD5 хешів

Спробуйте цей інструмент

Генератор випадкових назв проєктів

Спробуйте цей інструмент

Інструмент для генерації та валідації IBAN для тестування та перевірки

Спробуйте цей інструмент

Генерація та аналіз інструменту Twitter Snowflake ID для отримання інсайтів

Спробуйте цей інструмент

Генератор ULID - Безкоштовний онлайн-інструмент для створення унікальних сортованих ідентифікаторів

Спробуйте цей інструмент

Генератор Nano ID - Створення безпечних унікальних ID, придатних для URL

Спробуйте цей інструмент