Generujte univerzálně jedinečné identifikátory (UUID) pro různé aplikace. Vytvářejte jak verzi 1 (na základě času), tak verzi 4 (náhodné) UUID pro použití v distribuovaných systémech, databázích a dalších.
Univerzálně jedinečný identifikátor (UUID) je 128bitové číslo používané k identifikaci informací v počítačových systémech. UUID jsou standardizovány Open Software Foundation (OSF) jako součást Distribuovaného výpočetního prostředí (DCE). Tyto identifikátory jsou navrženy tak, aby byly jedinečné jak v prostoru, tak v čase, což je činí ideálními pro různé aplikace v distribuovaných systémech a mimo ně.
Tento nástroj pro generování UUID vám umožňuje vytvářet jak verzi 1 (na základě času), tak verzi 4 (náhodné) UUID. Tyto identifikátory jsou užitečné v různých scénářích, kde je vyžadováno jedinečné identifikování, jako jsou klíče databáze, distribuované systémy a síťové protokoly.
UUID je obvykle reprezentováno jako 32 hexadecimálních číslic, zobrazených ve pěti skupinách oddělených pomlčkami, ve formátu 8-4-4-4-12 pro celkový počet 36 znaků (32 alfanumerických znaků a 4 pomlčky). Například:
1550e8400-e29b-41d4-a716-446655440000
2
128 bitů UUID je rozděleno do specifických polí, z nichž každé nese různé informace v závislosti na verzi UUID:
Zde je diagram ilustrující strukturu UUID:
Existuje několik verzí UUID, z nichž každá má svůj vlastní způsob generování:
Tento nástroj se zaměřuje na generování verzí 1 a 4 UUID.
UUID verze 1 jsou generována pomocí následujících komponent:
Vzorec pro generování UUID verze 1 lze vyjádřit jako:
1UUID = (časové_razítko * 2^64) + (sekvence_hodin * 2^48) + uzel
2
UUID verze 4 jsou generována pomocí kryptograficky silného generátoru náhodných čísel. Vzorec je jednoduše:
1UUID = náhodné_128bitové_číslo
2
S konkrétními bity nastavenými tak, aby označovaly verzi (4) a variantu.
UUID mají nespočet aplikací v různých oblastech informatiky a softwarového inženýrství:
Klíče databáze: UUID se často používají jako primární klíče v databázích, zejména v distribuovaných systémech, kde může více uzlů generovat záznamy současně.
Distribuované systémy: V rozsáhlých distribuovaných systémech pomáhají UUID jedinečně identifikovat zdroje, transakce nebo události napříč více uzly nebo datovými centry.
Adresování obsahu: UUID mohou být použity k vytvoření jedinečných identifikátorů pro obsah v systémech s adresováním obsahu.
Správa relací: Webové aplikace často používají UUID k řízení uživatelských relací, což zajišťuje, že každá relace má jedinečný identifikátor.
Identifikace zařízení IoT: V aplikacích Internetu věcí (IoT) mohou být UUID použity k jedinečné identifikaci jednotlivých zařízení v síti.
I když jsou UUID široce používány, existují alternativní přístupy k generování jedinečných identifikátorů:
Automaticky se zvyšující ID: Jednoduché a běžně používané v systémech s jednou databází, ale nejsou vhodné pro distribuované prostředí.
ID na základě časového razítka: Mohou být užitečné pro časově uspořádaná data, ale mohou čelit problémům s kolizemi v situacích s vysokou konkurencí.
Snowflake ID: Vyvinuté Twitterem, tyto ID kombinují časové razítko a číslo pracovníka k generování jedinečných ID v distribuovaných systémech.
ULID (Univerzálně jedinečný lexikograficky seřaditelný identifikátor): Novější alternativa, která má být uživatelsky přívětivější a seřaditelnější než UUID.
Koncept UUID byl poprvé představen v systému Apollo Network Computing a později standardizován Open Software Foundation (OSF) jako součást Distribuovaného výpočetního prostředí (DCE) v 90. letech. První specifikace byla publikována v roce 1997 jako ISO/IEC 11578:1996 a později revidována v roce 2005 jako součást ISO/IEC 9834-8:2005.
Klíčové milníky v historii UUID:
V průběhu času se UUID staly nezbytným nástrojem v distribuovaných systémech a návrhu databází, s různými implementacemi a adaptacemi napříč různými programovacími jazyky a platformami.
Zde jsou příklady generování UUID v různých programovacích jazycích:
1import uuid
2
3## Generování UUID verze 4 (náhodné)
4náhodné_uuid = uuid.uuid4()
5print(f"UUID verze 4: {náhodné_uuid}")
6
7## Generování UUID verze 1 (na základě času)
8uuid_na_zaklade_casu = uuid.uuid1()
9print(f"UUID verze 1: {uuid_na_zaklade_casu}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Generování UUID verze 4 (náhodné)
4const náhodnéUuid = uuidv4();
5console.log(`UUID verze 4: ${náhodnéUuid}`);
6
7// Generování UUID verze 1 (na základě času)
8const uuidNaZakladeCasu = uuidv1();
9console.log(`UUID verze 1: ${uuidNaZakladeCasu}`);
10
1import java.util.UUID;
2
3public class GenerátorUuid {
4 public static void main(String[] args) {
5 // Generování UUID verze 4 (náhodné)
6 UUID náhodnéUuid = UUID.randomUUID();
7 System.out.println("UUID verze 4: " + náhodnéUuid);
8
9 // Generování UUID verze 1 (na základě času)
10 UUID uuidNaZakladeCasu = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID verze 1: " + uuidNaZakladeCasu);
12 }
13}
14
1require 'securerandom'
2
3## Generování UUID verze 4 (náhodné)
4náhodné_uuid = SecureRandom.uuid
5puts "UUID verze 4: #{náhodné_uuid}"
6
7## Ruby nemá vestavěnou metodu pro UUID verze 1
8## K tomu byste potřebovali použít gem jako 'uuidtools'
9
1<?php
2// Generování UUID verze 4 (náhodné)
3náhodnéUuid = 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 verze 4: " . $náhodnéUuid . "\n";
11
12// PHP nemá vestavěnou metodu pro UUID verze 1
13// K tomu byste potřebovali použít knihovnu jako 'ramsey/uuid'
14?>
15
Objevte další nástroje, které by mohly být užitečné pro vaši pracovní postup.