È possibile per un server ASP.NET generare lo stesso GUID per più di un utente?

StackOverflow https://stackoverflow.com/questions/272169

  •  07-07-2019
  •  | 
  •  

Domanda

Ho visto GUID Collison discussioni, ma volevo solo riflettere su se ci potesse essere una collisione GUID se entrambi i client accedessero alla stessa pagina Web che genera il GUID esattamente nello stesso momento (- probabilmente fino al microsecondo)?

È stato utile?

Soluzione

È teoricamente possibile, ma altamente improbabile.

Altri suggerimenti

No. Se ciò accade, corri fuori e acquista un biglietto della lotteria!

Su un singolo server, no, non è possibile. Versione 4 Le guide sono costituite (tra le altre cose) da un valore pseudo-casuale a 54 bit e, come ho capito, passano in rassegna tutti i valori prima di ripetere.

Se si crea su più di un server, è possibile avere uno scontro guid, sebbene sia altamente improbabile.

Fare riferimento a RFC 4122 , in particolare la sezione 4.1.5. Windows moderno utilizza UUID v4, credo.

Da Wikipedia, l'enciclopedia libera

Un identificatore o GUID univoco globale (pronunciato / & # 712; gu & # 720; & # 618; d / o / & # 712; gw & # 618; d /) è un tipo speciale di identificatore utilizzato nelle applicazioni software in ordina di fornire un numero di riferimento univoco in qualsiasi contesto (quindi, "Globalmente"), ad esempio, nel definire il riferimento interno per un tipo di punto di accesso in un'applicazione software o per creare chiavi univoche in un database. Sebbene non sia garantito che ciascun GUID generato sia univoco, il numero totale di chiavi univoche (2128 o 3.4 & # 215; 1038) è così grande che la probabilità che lo stesso numero venga generato due volte è molto piccola . Ad esempio, considera l'universo osservabile, che contiene circa 5 stelle; ogni stella potrebbe quindi avere 6,8 & 1015 GUID universalmente unici.

Se generi molti e molti GUID, allora la probabilità di collisione sta diventando piuttosto elevata a causa di Paradosso del compleanno . Teoricamente la collisione GUID dovrebbe essere altamente improbabile (intuizione ingenua) ma praticamente succede di tanto in tanto.

Certo, è una perdita di tempo gestire queste collisioni in modo programmatico ma dovresti comunque scrivere il tuo codice in modo tale che, se succede, il tuo codice dovrebbe fallire ad alta voce, non in silenzio e senza essere rilevato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top