Un GUID (Identificador Único Global) es un identificador único utilizado en software para identificar recursos de manera única. La probabilidad de que un GUID sea duplicado es extremadamente baja, aunque no es imposible, especialmente si los GUIDs se generan en sistemas con relojes desincronizados o números aleatorios pobres.
Un GUID típicamente se genera utilizando combinaciones de la hora actual, la dirección MAC de la máquina que genera el GUID, y un número aleatorio. Esto resulta en un identificador que es único para la máquina y el momento en el tiempo en que se genera.
Los GUIDs se utilizan en una variedad de aplicaciones de software, desde la asignación de identificadores únicos para objetos en sistemas de bases de datos, hasta la identificación única de transacciones y mensajes en sistemas distribuidos.
Los GUIDs (Identificadores Únicos Globales) tienen su origen en los UUIDs (Identificadores Únicos Universales), que fueron definidos originalmente como parte del estándar de software de red Apollo NCS (Network Computing System) en 1989. Con el tiempo, se han convertido en una forma estándar de generar identificadores únicos en muchos sistemas de software.
Aunque los términos GUID y UUID a menudo se usan indistintamente, hay una pequeña diferencia entre ellos. Un GUID es una variante específica de un UUID. Todos los GUIDs son UUIDs, pero no todos los UUIDs son GUIDs. La principal diferencia radica en cómo y dónde se utilizan, siendo los GUIDs comúnmente usados en Microsoft Windows y los UUIDs en sistemas Unix y Unix-like.
Los GUIDs pueden ser generados de varias maneras, cada una correspondiente a una versión diferente. Por ejemplo, la versión 1 de GUID se basa en la hora actual y la dirección MAC de la computadora, mientras que la versión 4 se basa en números aleatorios. La elección de la versión a utilizar depende de los requerimientos específicos del sistema en cuestión.
Los GUIDs son útiles en una variedad de situaciones en las que se requiere un identificador único. Algunas aplicaciones prácticas incluyen la identificación de registros en bases de datos, la identificación de objetos en sistemas de software, y la correlación de eventos en sistemas distribuidos.