Генератор на UUID за уникални идентификатори и приложения

Генерирайте универсално уникални идентификатори (UUID) за различни приложения. Създайте както версия 1 (базирана на време), така и версия 4 (случайна) UUID за използване в разпределени системи, бази данни и други.

Генератор на UUID

Генериран UUID

📚

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

Генератор на UUID

Въведение

Универсалният уникален идентификатор (UUID) е 128-битов номер, използван за идентифициране на информация в компютърни системи. UUID-ите са стандартизирани от Open Software Foundation (OSF) като част от Distributed Computing Environment (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 Security): Подобна на версия 1, но включва локален домейн идентификатор.
  3. Версия 3 (основана на име, MD5): Генерира се чрез хеширане на идентификатор на пространство и име.
  4. Версия 4 (случайна): Генерира се с помощта на случайно или псевдослучайно число.
  5. Версия 5 (основана на име, SHA-1): Подобна на версия 3, но използва SHA-1 хеширане.

Този инструмент се фокусира върху генерирането на версия 1 и версия 4 UUID.

Формула

Генериране на 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. Snowflake ID: Разработени от Twitter, тези ID комбинират времева отметка и номер на работника, за да генерират уникални ID в разпределени системи.

  4. ULID (Универсално уникално лексикографски подредено идентификатор): По-нов алтернативен вариант, който цели да бъде по-човешки приятелски и подреден от UUID-ите.

История

Концепцията за UUID-ите беше първоначално представена в системата за мрежово компютри на Apollo и по-късно стандартизирана от Open Software Foundation (OSF) като част от Distributed Computing Environment (DCE) през 90-те години. Първата спецификация беше публикувана през 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). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
  2. International Organization for Standardization. (2005). Information technology – Open Systems Interconnection – Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
  3. Universally unique identifier. (2023). In Wikipedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
  4. Snowflake ID. (2023). In Wikipedia. https://en.wikipedia.org/wiki/Snowflake_ID
  5. ULID Spec. (н.д.). GitHub. https://github.com/ulid/spec
🔗

Свързани инструменти

Открийте още инструменти, които може да бъдат полезни за вашия работен процес

Генератор на ЕГН за тестови цели и валидация на данни

Изпробвайте този инструмент

Генератор на произволни потребителски агенти за тестване на уеб разработки

Изпробвайте този инструмент

Генератор на произволни локации: Създаване на глобални координати

Изпробвайте този инструмент

Генератор на уникални MongoDB ObjectID за разработка

Изпробвайте този инструмент

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

Изпробвайте този инструмент

Генератор на имена за произволни проекти

Изпробвайте този инструмент

Инструмент за генериране и валидиране на IBAN за тестване и проверка

Изпробвайте този инструмент

Генериране и анализ на инструмент за Twitter Snowflake ID за прозрения

Изпробвайте този инструмент

Калкулатор за мокър периметър на канали и тръби

Изпробвайте този инструмент

Нано ID Генератор - Създайте Сигурни URL-Безопасни Уникални ID

Изпробвайте този инструмент