Генеруйте універсально унікальні ідентифікатори (UUID) для різних застосувань. Створюйте як версію 1 (на основі часу), так і версію 4 (випадкові) UUID для використання в розподілених системах, базах даних та інших.
Універсально унікальний ідентифікатор (UUID) — це 128-бітове число, яке використовується для ідентифікації інформації в комп'ютерних системах. UUID стандартизовані Фондом відкритого програмного забезпечення (OSF) як частина Середовища розподілених обчислень (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, кожна з яких має свій метод генерації:
Цей інструмент зосереджується на генерації UUID версії 1 та версії 4.
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 на основі часу: Можуть бути корисними для даних, впорядкованих за часом, але можуть стикатися з проблемами зі збігами в сценаріях з високою конкуренцією.
ID Snowflake: Розроблені Twitter, ці ID поєднують часову мітку та номер робочого вузла для генерації унікальних ID у розподілених системах.
ULID (Універсально унікальний лексикографічно впорядкований ідентифікатор): Більш нова альтернатива, яка прагне бути більш зручною для людини та впорядкованою, ніж UUID.
Концепція UUID була вперше представлена в системі комп'ютерних мереж Apollo, а пізніше стандартизована Фондом відкритого програмного забезпечення (OSF) як частина Середовища розподілених обчислень (DCE) у 1990-х роках. Початкова специфікація була опублікована в 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
Відкрийте більше інструментів, які можуть бути корисними для вашого робочого процесу