672 Stimmen

Ist eine GUID zu 100% eindeutig?

Ist eine GUID zu 100 % eindeutig?

Bleibt sie über mehrere Threads hinweg eindeutig?

534voto

Adam Davis Punkte 89506

Zwar ist jede generierte GUID nicht garantiert nicht eindeutig ist, ist die Gesamtzahl Anzahl von eindeutigen Schlüsseln (2 128 oder 3.4×10 38 ) so groß ist, dass die Wahrscheinlichkeit, dass die gleiche Zahl zweimal erzeugt wird, sehr gering ist. Für Betrachten wir zum Beispiel das beobachtbare Universum, das etwa 5×10 22 Sterne; jeder Stern könnte dann 6.8×10 15 universell eindeutige GUIDs.

Von Wikipedia .


Dies sind einige gute Artikel darüber, wie eine GUID erstellt wird (für .NET) und wie Sie die gleiche Guid in der richtigen Situation erhalten können.

https://ericlippert.com/2012/04/24/guid-guide-part-one/

https://ericlippert.com/2012/04/30/guid-guide-part-two/

https://ericlippert.com/2012/05/07/guid-guide-part-three/

172voto

Bura Chuhadar Punkte 3267

Wenn Sie Angst vor gleichen GUID-Werten haben, legen Sie zwei davon nebeneinander.

Guid.NewGuid().ToString() + Guid.NewGuid().ToString();

Wenn Sie zu paranoid sind, nehmen Sie drei.

77voto

ljs Punkte 35909

Die einfache Antwort lautet: Ja.

Raymond Chen schrieb eine großartiger Artikel über GUIDs und warum Teilzeichenketten von GUIDs pas garantiert einzigartig. Der Artikel geht ausführlich auf die Art und Weise ein, wie GUIDs generiert werden, und auf die Daten, die sie verwenden, um Eindeutigkeit zu gewährleisten. warum sie sind :-)

49voto

Jonas Engström Punkte 4925

Nebenbei bemerkt, habe ich mit Volume GUIDs in Windows XP herumgespielt. Dies ist ein sehr obskures Partitionslayout mit drei Festplatten und vierzehn Volumes.

\\?\Volume{23005604-eb1b-11de-85ba-806d6172696f}\ (F:)
\\?\Volume{23005605-eb1b-11de-85ba-806d6172696f}\ (G:)
\\?\Volume{23005606-eb1b-11de-85ba-806d6172696f}\ (H:)
\\?\Volume{23005607-eb1b-11de-85ba-806d6172696f}\ (J:)
\\?\Volume{23005608-eb1b-11de-85ba-806d6172696f}\ (D:)
\\?\Volume{23005609-eb1b-11de-85ba-806d6172696f}\ (P:)
\\?\Volume{2300560b-eb1b-11de-85ba-806d6172696f}\ (K:)
\\?\Volume{2300560c-eb1b-11de-85ba-806d6172696f}\ (L:)
\\?\Volume{2300560d-eb1b-11de-85ba-806d6172696f}\ (M:)
\\?\Volume{2300560e-eb1b-11de-85ba-806d6172696f}\ (N:)
\\?\Volume{2300560f-eb1b-11de-85ba-806d6172696f}\ (O:)
\\?\Volume{23005610-eb1b-11de-85ba-806d6172696f}\ (E:)
\\?\Volume{23005611-eb1b-11de-85ba-806d6172696f}\ (R:)
                                     | | | | |
                                     | | | | +-- 6f = o
                                     | | | +---- 69 = i
                                     | | +------ 72 = r
                                     | +-------- 61 = a
                                     +---------- 6d = m

Es ist nicht die Tatsache, dass die GUIDs sehr ähnlich sind, sondern die Tatsache, dass alle GUIDs die Zeichenfolge "mario" enthalten. Ist das ein Zufall oder gibt es eine Erklärung dafür?

Nun, wenn googeln für Teil 4 in der GUID habe ich ca. 125.000 Treffer mit Volume-GUIDs gefunden.

Schlussfolgerung: Die Volume-GUIDs sind nicht so eindeutig wie andere GUIDs.

39voto

Tim Punkte 373

Das sollte nicht passieren. Wenn .NET jedoch stark belastet wird, ist es möglich, doppelte Guids zu erhalten. Ich habe zwei verschiedene Webserver, die zwei verschiedene Sql-Server verwenden. Ich wollte die Daten zusammenführen und stellte fest, dass ich 15 Millionen Guids und 7 Duplikate hatte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X