2012-12-28 11 views
8

Eventuali duplicati:
Is a GUID unique 100% of the time?Guid Unicità Sulla macchina diversa

Dopo aver letto tutti i messaggi su Guid, ancora sono poco chiaro su una cosa semplice:

GUID generato da diverso anche le macchine mantengono la loro unicità o no.

Ho letto di guid unicità sulla singola macchina, ma io ancora non so circa l'unicità con diverse macchine

+0

BUt come fa due sistemi a gestire che deve creare un guid diverso? Come funziona il generatore di guida ?? come crea ogni volta un guid ogni ?? –

+0

Sono casuali. Ci sono così tante combinazioni casuali che semplicemente "crediamo" che sarà unico. Non vivrai abbastanza a lungo da vedere un dupebo, a meno che tu non stia utilizzando i guai sequenziali :). –

+2

Prendere un numero casuale compreso tra 1 e 100. Fatelo di nuovo a. La probabilità che tu riceva lo stesso numero la seconda volta è 1 su 100. Ora prendi un numero casuale tra 1 e 5,316,911,983,139,663,491,615,228,241,121,400,000. Quel numero non ha un nome. –

risposta

4

GUID sono "praticamente" universalmente unico.

Un GUID è un numero intero a 128 bit (16 byte) che può essere utilizzato su tutti i computer e le reti ovunque sia richiesto un identificativo univoco. Tale identificatore ha una probabilità molto bassa di essere duplicato.

Dal MSDN

+0

"universale" implica "macchine diverse", poiché tutte le macchine fanno parte dell '"universo" –

+0

BUt in che modo due sistemi gestiscono che deve creare un guid diverso? Come funziona il generatore di guida ?? come crea un guid unico ogni volta?? –

+0

Leggere [Algoritmo di generazione guida] (http://en.wikipedia.org/wiki/Globally_unique_identifier#Algorithm) su wikipedia. – Tilak

12

E 'generalmente accettato che un nuovo GUID casuale sarà sempre unico. Probabilisticamente questo non è vero, ma la probabilità di generare un dupe è così piccola che non dobbiamo preoccuparcene.

Le probabilità di generare due GUID identici è di 1 a 5.316.911.983.139.663.491.615.228.241.121.400.000

Quindi, se si genera 1 milione di GUID su 1 milione di computer, le probabilità di generare un duplicato sono: 1 in 5.316.911.983.139.663.491.615.228

Prendere 1 miliardo guidi su 1 miliardo di computer, le probabilità di generare un dupe sono: 1 su 5,316,911,983,139,663,491 (che è 5,3 quintilioni).

I numeri parlano da soli, non si genererà un dupe.

Nel caso si stia chiedendo dove sto ottenendo questi numeri, la parte valore di un GUID è 122 bit. 2^122 è 5,3169119831396634916152282411214 x 10^36

Alcune cifre più pazzo ...
Se si genera 1 milione di GUID al secondo, ci vorrebbero anni per garantire 168,486,464,147,580,370,470,736 probabilisticamente un duplicato.

@viggity menzionato alcuni guids hanno 48 bit presi da un indirizzo mac, i numeri sono ancora sconcertanti quindi la convenienza di perdere quei bit. Prendendo l'esempio sopra di 2 milioni di guids al secondo (sullo stesso computer), ci vorrebbero ancora 598.584.166 anni per garantire un dupe. Sono 600 milioni di anni. È più lungo di quanto la vita sia esistita sulla Terra. O se sei un creazionista della Terra giovane, è almeno 60 mila volte la durata della vita della Terra.

+2

Giusto per aggiungere alla discussione, una citazione dalla voce di Wikipedia su GUID: "Alcune imperfette implementazioni di generazione di GUID si basano su generatori di numeri pseudocasuali che utilizzano sorgenti seme numeriche casuali che risultano prevedibili". Quindi matematicamente ci sono 2^122 valori possibili (6 bit riservati per indicare un GUID casuale), ma per i mezzi pratici può essere limitato dalla funzione RND. – OnoSendai

+1

+1 per farmi esplodere con probabilita ' – JOpuckman

+1

Totalmente off-topic, un creazionista avrebbe probabilmente usato GUID a 14 bit, forse sfidando un GUID a 122 bit, affermando che rappresenta un numero che è maggiore dell'età della Terra e quindi non lo è vero. –

2

Mi ricordo di aver sentito da qualche parte che se visualizzato lo spazio di indirizzi IPV4 (32 bit) come le dimensioni del francobollo, IPV6 (128 bit) è la dimensione del nostro sistema solare. Generare un dupe non succederà.

Inoltre, se è più probabile che si ottenga un duplicato della stessa macchina rispetto a due macchine diverse, poiché la maggior parte degli algoritmi di generazione Guid incorpora l'indirizzo MAC del computer NIC all'interno del guid (è 48 bit). Sebbene ci siano algoritmi che non incorporano l'indirizzo MAC e sono puramente casuali. vedi: http://guid.us/

Modifica: un altro esempio di scala divertente il volume della terra è approssimativamente 10^27 centimetri cubici. il che significa che ogni centimetro cubo per l'INTERO VOLUME della terra potrebbe avere 340.000.000.000 di guidi tutto per sé. questo numero è incredibilmente grande.

In alternativa, ogni quadrato NANOmetro della superficie della terra potrebbe avere circa 650.000 guids tutto per sé.

+0

> la maggior parte degli algoritmi di generazione Guid incorpora il tuo computer Indirizzo MAC NIC all'interno del guid (è 48 bit) Wow, è sciocco. Strappando 48 bit per quello? C'è qualche ragione per farlo? – vbullinger

+0

http://guid.us/Test/GUID mostra CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCC è una guida valida –

+3

@vbullinger Sì, c'è una ragione, è così che anche se la parte rimanente del GUID è identica (ha usato un timestamp, quindi l'idea è che due macchine potrebbero provare a creare un GUID allo stesso tempo) non si scontrano. Tuttavia, tali GUID sono caduti fuori dalla pratica; in questi giorni è molto più comune vedere i GUID che sono interamente basati su un grande numero casuale. – Servy