Генерирайте универсално уникални идентификатори (UUID) за различни приложения. Създайте както версия 1 (базирана на време), така и версия 4 (случайна) UUID за използване в разпределени системи, бази данни и други.
Универсалният уникален идентификатор (UUID) е 128-битов номер, използван за идентифициране на информация в компютърни системи. UUID-ите са стандартизирани от Open Software Foundation (OSF) като част от Distributed Computing Environment (DCE). Тези идентификатори са проектирани да бъдат уникални както в пространството, така и във времето, което ги прави идеални за различни приложения в разпределени системи и извън тях.
Този инструмент за генериране на UUID позволява създаването както на версия 1 (основана на време), така и на версия 4 (случайна) UUID. Тези идентификатори са полезни в различни сценарии, където е необходимо уникално идентифициране, като ключове в бази данни, разпределени системи и мрежови протоколи.
UUID обикновено се представя като 32 шестнадесетични цифри, показани в пет групи, разделени с тирета, във формата 8-4-4-4-12 за общо 36 символа (32 алфанумерични символа и 4 тирета). Например:
1550e8400-e29b-41d4-a716-446655440000
2
128-те бита на UUID са разделени на специфични полета, всяко от които носи различна информация в зависимост от версията на UUID:
Ето диаграма, илюстрираща структурата на UUID:
Съществуват няколко версии на UUID, всяка с различен метод на генериране:
Този инструмент се фокусира върху генерирането на версия 1 и версия 4 UUID.
UUID-ите версия 1 се генерират с помощта на следните компоненти:
Формулата за генериране на UUID версия 1 може да бъде изразена като:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
UUID-ите версия 4 се генерират с помощта на криптографски силен генератор на случайни числа. Формулата е просто:
1UUID = random_128_bit_number
2
С конкретни битове, зададени за индикация на версията (4) и варианта.
UUID-ите имат многобройни приложения в различни области на компютърните науки и софтуерното инженерство:
Ключове в бази данни: UUID-ите често се използват като основни ключове в бази данни, особено в разпределени системи, където множество възли могат да генерират записи едновременно.
Разпределени системи: В големи разпределени системи UUID-ите помагат в уникалното идентифициране на ресурси, транзакции или събития в множество възли или центрове за данни.
Адресиране на съдържание: UUID-ите могат да се използват за създаване на уникални идентификатори за съдържание в системи за адресируемо съдържание.
Управление на сесии: Уеб приложенията често използват UUID-ите за управление на потребителските сесии, осигурявайки уникален идентификатор за всяка сесия.
Идентификация на устройства IoT: В приложенията на Интернет на нещата (IoT) UUID-ите могат да се използват за уникално идентифициране на отделни устройства в мрежа.
Въпреки че UUID-ите са широко използвани, съществуват алтернативни подходи за генериране на уникални идентификатори:
Автоинкрементиращи ID: Прости и обикновено използвани в системи с единична база данни, но не са подходящи за разпределени среди.
ID на базата на времева отметка: Могат да бъдат полезни за данни, подредени по време, но могат да срещнат проблеми с колизията в сценарии с висока конкуренция.
Snowflake ID: Разработени от Twitter, тези ID комбинират времева отметка и номер на работника, за да генерират уникални ID в разпределени системи.
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:
С времето 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
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Генериране на UUID версия 4 (случайна)
4const randomUuid = uuidv4();
5console.log(`UUID версия 4: ${randomUuid}`);
6
7// Генериране на UUID версия 1 (основана на време)
8const timeBasedUuid = uuidv1();
9console.log(`UUID версия 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Генериране на UUID версия 4 (случайна)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID версия 4: " + randomUuid);
8
9 // Генериране на UUID версия 1 (основана на време)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID версия 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Генериране на UUID версия 4 (случайна)
4random_uuid = SecureRandom.uuid
5puts "UUID версия 4: #{random_uuid}"
6
7## Ruby няма вградена функция за UUID версия 1
8## Трябва да използвате библиотека като 'uuidtools' за това
9
1<?php
2// Генериране на UUID версия 4 (случайна)
3$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "UUID версия 4: " . $randomUuid . "\n";
11
12// PHP няма вградена функция за UUID версия 1
13// Трябва да използвате библиотека като 'ramsey/uuid' за това
14?>
15
Открийте още инструменти, които може да бъдат полезни за вашия работен процес