Un GUID (Globally Unique Identifier) è un identificatore unico utilizzato nel software per identificare in modo univoco le risorse. La probabilità che un GUID venga duplicato è estremamente bassa, sebbene non sia impossibile, soprattutto se i GUID vengono generati su sistemi con orologi non sincronizzati o generatori di numeri casuali di scarsa qualità.
Un GUID viene generalmente generato utilizzando combinazioni dell'ora corrente, l'indirizzo MAC del dispositivo che genera il GUID e un numero casuale. Questo si traduce in un identificatore che è unico per il dispositivo e il momento in cui viene generato.
I GUID vengono utilizzati in una varietà di applicazioni software, dall'assegnazione di identificatori unici a oggetti nei sistemi di database all'identificazione univoca di transazioni e messaggi nei sistemi distribuiti.
I GUID (Globally Unique Identifiers) hanno la loro origine negli UUID (Universally Unique Identifiers), che sono stati originariamente definiti come parte dello standard software Apollo NCS (Network Computing System) nel 1989. Nel corso del tempo, sono diventati un modo standard per generare identificatori unici in molti sistemi software.
Sebbene i termini GUID e UUID vengano spesso utilizzati in modo intercambiabile, esiste una piccola differenza tra di essi. Un GUID è una variante specifica di un UUID. Tutti i GUID sono UUID, ma non tutti gli UUID sono GUID. La principale differenza risiede nel modo e nel luogo in cui vengono utilizzati, con i GUID comunemente usati in Microsoft Windows e gli UUID in sistemi Unix e Unix-like.
I GUID possono essere generati in vari modi, ciascuno corrispondente a una versione diversa. Ad esempio, la versione 1 dei GUID si basa sull'ora corrente e sull'indirizzo MAC del computer, mentre la versione 4 si basa su numeri casuali. La scelta della versione da utilizzare dipende dai requisiti specifici del sistema in questione.
I GUID sono utili in una varietà di situazioni in cui è richiesto un identificatore univoco. Alcune applicazioni pratiche includono l'identificazione dei record nei database, l'identificazione degli oggetti nei sistemi software e la correlazione degli eventi nei sistemi distribuiti.