Generuokite visame pasaulyje unikalius identifikatorius (UUID) įvairioms programoms. Kurkite tiek pirmos versijos (laiko pagrindu), tiek ketvirtos versijos (atsitiktinių) UUID, skirtus naudoti paskirstytose sistemose, duomenų bazėse ir kt.
Universaliai unikalus identifikatorius (UUID) yra 128 bitų skaičius, naudojamas informacijai identifikuoti kompiuterių sistemose. UUID yra standartizuoti atvirojo programinės įrangos fondo (OSF) kaip dalis paskirstytos kompiuterijos aplinkos (DCE). Šie identifikatoriai yra sukurti taip, kad būtų unikalūs tiek erdvėje, tiek laike, todėl jie idealiai tinka įvairioms paskirtims paskirstytose sistemose ir už jų ribų.
Šis UUID generatoriaus įrankis leidžia kurti tiek pirmos versijos (laiko pagrindu), tiek ketvirtos versijos (atsitiktinės) UUID. Šie identifikatoriai yra naudingi įvairiose situacijose, kuriose reikia unikalios identifikacijos, pavyzdžiui, duomenų bazės raktams, paskirstytoms sistemoms ir tinklo protokolams.
UUID paprastai yra atvaizduojamas kaip 32 šešioliktainiai skaitmenys, rodomi penkiose grupėse, atskirtose brūkšneliais, formatu 8-4-4-4-12, iš viso 36 simboliai (32 alfanumeriniai simboliai ir 4 brūkšneliai). Pavyzdžiui:
1550e8400-e29b-41d4-a716-446655440000
2
UUID 128 bitų yra padalintas į specifinius laukus, kuriuose kiekvienas neša skirtingą informaciją, priklausomai nuo UUID versijos:
Štai diagrama, iliustruojanti UUID struktūrą:
Yra keletas UUID versijų, kiekviena su savo generavimo metodu:
Šis įrankis orientuotas į pirmos ir ketvirtos versijų UUID generavimą.
Pirmos versijos UUID yra generuojami naudojant šiuos komponentus:
Pirmos versijos UUID generavimo formulė gali būti išreikšta taip:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
Ketvirtos versijos UUID generuojami naudojant kriptografiškai stiprų atsitiktinių skaičių generatorių. Formulė yra paprasta:
1UUID = random_128_bit_number
2
Su specifiniais bitais, nustatytais nurodyti versiją (4) ir variantą.
UUID turi daugybę taikymo sričių įvairiose kompiuterių mokslo ir programinės inžinerijos srityse:
Duomenų bazės raktai: UUID dažnai naudojami kaip pirminiai raktai duomenų bazėse, ypač paskirstytose sistemose, kur kelios mazgai gali generuoti įrašus tuo pačiu metu.
Paskirstytos sistemos: Didelės paskirstytos sistemos UUID padeda unikaliai identifikuoti išteklius, sandorius ar įvykius tarp kelių mazgų ar duomenų centrų.
Turinio adresavimas: UUID gali būti naudojami kurti unikalius identifikatorius turiniui turinio adresuojamose saugojimo sistemose.
Sesijų valdymas: Interneto programos dažnai naudoja UUID, kad valdytų vartotojo sesijas, užtikrindamos, kad kiekviena sesija turėtų unikalų identifikatorių.
IoT įrenginių identifikavimas: Interneto daiktų (IoT) programose UUID gali būti naudojami unikaliam individualių įrenginių identifikavimui tinkle.
Nors UUID yra plačiai naudojami, yra alternatyvių požiūrių unikaliems identifikatoriams generuoti:
Automatiškai didėjantys ID: Paprasti ir dažnai naudojami vienos duomenų bazės sistemose, tačiau netinkami paskirstytoms aplinkoms.
Laiko pagrindu generuojami ID: Gali būti naudingi laiko tvarkaraščio duomenims, tačiau gali kilti dubliavimosi problemų didelio konkurencijos scenarijose.
Snowflake ID: Sukurtas Twitter, šie ID sujungia laiką ir darbuotojo numerį, kad generuotų unikalius ID paskirstytose sistemose.
ULID (Universaliai unikalus leksikografiškai rūšiuojamas identifikatorius): Neseniai sukurta alternatyva, siekianti būti labiau draugiška žmogui ir rūšiuojama nei UUID.
UUID koncepcija pirmą kartą buvo pristatyta Apollo tinklo kompiuterijos sistemoje ir vėliau standartizuota atvirojo programinės įrangos fondo (OSF) kaip dalis paskirstytos kompiuterijos aplinkos (DCE) 1990-aisiais. Pirmasis specifikavimas buvo paskelbtas 1997 m. kaip ISO/IEC 11578:1996, o vėliau peržiūrėtas 2005 m. kaip dalis ISO/IEC 9834-8:2005.
Pagrindiniai UUID istorijos įvykiai:
Laikui bėgant, UUID tapo esminiu įrankiu paskirstytose sistemose ir duomenų bazės dizainuose, su įvairiomis įgyvendinimo ir pritaikymo versijomis skirtingose programavimo kalbose ir platformose.
Štai UUID generavimo pavyzdžiai įvairiose programavimo kalbose:
1import uuid
2
3## Generuoti ketvirtos versijos (atsitiktinį) UUID
4random_uuid = uuid.uuid4()
5print(f"Ketvirtos versijos UUID: {random_uuid}")
6
7## Generuoti pirmos versijos (laiko pagrindu) UUID
8time_based_uuid = uuid.uuid1()
9print(f"Pirmos versijos UUID: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Generuoti ketvirtos versijos (atsitiktinį) UUID
4const randomUuid = uuidv4();
5console.log(`Ketvirtos versijos UUID: ${randomUuid}`);
6
7// Generuoti pirmos versijos (laiko pagrindu) UUID
8const timeBasedUuid = uuidv1();
9console.log(`Pirmos versijos UUID: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Generuoti ketvirtos versijos (atsitiktinį) UUID
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("Ketvirtos versijos UUID: " + randomUuid);
8
9 // Generuoti pirmos versijos (laiko pagrindu) UUID
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("Pirmos versijos UUID: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Generuoti ketvirtos versijos (atsitiktinį) UUID
4random_uuid = SecureRandom.uuid
5puts "Ketvirtos versijos UUID: #{random_uuid}"
6
7## Ruby neturi įmontuotos metodo pirmos versijos UUID
8## Tam reikėtų naudoti tokią biblioteką kaip 'uuidtools'
9
1<?php
2// Generuoti ketvirtos versijos (atsitiktinį) UUID
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 "Ketvirtos versijos UUID: " . $randomUuid . "\n";
11
12// PHP neturi įmontuotos metodo pirmos versijos UUID
13// Tam reikėtų naudoti tokią biblioteką kaip 'ramsey/uuid'
14?>
15
Raskite daugiau įrankių, kurie gali būti naudingi jūsų darbo eiga.