Laden...

[gelöst] Guid wirklich immer eindeutig?

Erstellt von Stipo vor 15 Jahren Letzter Beitrag vor 15 Jahren 12.833 Views
Stipo Themenstarter:in
699 Beiträge seit 2007
vor 15 Jahren
[gelöst] Guid wirklich immer eindeutig?

Hallo zusammen,

ich habe mir eben einen Webcast angesehen zum SQL 2008 und darin ging es um die Guid als ID Kennung eines Datensatzes.

Laut dem Referent, würde eine Guid eindeutig sein, selbst [Zitat] Über Raum und Zeit [/Zitat].

Da mein Wissen in diesen bereichen doch noch etwas luftig ist, würde ich gerne da mal eine Diskussion anregen, wie und warum das so sein soll.

Kann mir schlecht vorstellen, das es nie eine doppelte Guid geben kann, denn durch irgendwelche zufalls mechanismen muss die ja auch erstellt werden.

Grüße Stephan

S
8.746 Beiträge seit 2005
vor 15 Jahren

Eine GUID ist 128 bit lang. Das macht eine Wahrscheinlichkeit von etwa 1 : 3*10^39 das zwei zufällig erzeugte GUIDs identisch sind.

Über "Raum und Zeit" ist zwar eine gewagte Aussage (was soll das auch bedeuten) aber in der Praxis ist das eindeutig.

3.003 Beiträge seit 2006
vor 15 Jahren

Zumal "zufällig erzeugt" so eh' nicht geht, und die Wahrscheinlichkeit zwei zufällig identischer GUIDs noch etwas erhöht. Dennoch, wie svenson sagt: in der Praxis ist das eindeutig. Korrekterweise hätte der Referent wohl anmerken sollen, dass GUIDs sehr wahrscheinlich einmalig sind, statt sich in Raum und Zeit zu verlieren 😉.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Stipo,

in die GUID fließen außer Zufallskomponenten auch noch Rechner- und Uhrzeit-abhängige Anteile ein (daher auch die Aussage "eindeutig über Raum und Zeit"). Selbst wenn also der Zufallszahlengenerator bei der Erzeugung von zwei GUIDs im gleichen Zustand wäre, würden auf zwei verschiedenen Rechnen oder zu zwei verschiedenen Zeitpunkten trotzdem unterschiedliche GUIDs entstehen. Daher ist es praktisch gesehen ausgeschlossen, dass zweimal die gleiche GUI vergeben wird.

Ich gehe davon aus, dass die Wahrscheinlichkeit, dass zwei GUIDs gleich sind, kleiner ist als die Wahrscheinlichkeit, dass bei der Verarbeitung eines Programms durch das unbemerkte Kippen eines Bits ein Fehler entsteht.

Das ist so ähnlich wie die Geschichte mit dem Primzahlentest: Es gibt Verfahren, die mit einer sehr guten Wahrscheinlichkeit abschätzen können, ob eine große Zahl eine Primzahl ist. Wenn man stattdessen den vermeintlich 100%ig sicheren Primzahltest durch vollständiges Prüfen aller möglichen Teiler durchführen würde, kann es sein, dass die Fehlerwahrscheinlichkeit (wegen der schon genannten unbemerkten Bitkipper) großer ist als die bei der Abschätzung.

Soviel zu 100%iger Sicherheit. 😃

herbivore

A
92 Beiträge seit 2009
vor 15 Jahren

Noch ne kleine Frage zu genau dem Thema.
Sie wird zufällig generiert.
Ok aber wann? Bei jeder Systemneuinstallation?
Oder ist sie für den PC immer static?

Stipo Themenstarter:in
699 Beiträge seit 2007
vor 15 Jahren

Hallo Andybritten,

die Frage von mir bezog sich auf die Methode im Framework:

Guid guid = Guid.NewGuid();

Damit lässt sich eine Guid erstellen, welche man dann verwenden kann, als Index ( zB: Sql Datensatz) oder sonst solche eindeutigen Elemente.

@all,
Danke noch für die Ausführlichen Antworten. Gerade die Antwort von Herbivore bringt mir viel, da ich nun verstehe wie die Guid erstellt wird, denn in der MSDN ist das doch etwas mager ausgefallen:

Eine GUID ist eine 128-Bit-Ganzzahl (16 Bytes), die auf allen Computern und in allen Netzwerken verwendet werden kann, für die ein eindeutiger Bezeichner erforderlich ist. Bei einem solchen Bezeichner ist die Wahrscheinlichkeit der Duplizierung äußerst gering.

Grüße Stephan

J
1.114 Beiträge seit 2007
vor 15 Jahren

wegen der schon genannten unbemerkten Bitkipper

(So ein Bitkipper passiert öfters als man denkt (bitte ein Bit) 8)){gray}

849 Beiträge seit 2006
vor 15 Jahren

Hallo,

also ich habe an einem Project gearbeitet das wirklich Millionen von Datensätzen mit Guids als Primary Key in eine Datenbank eingefügt hat Mir ist nicht ein Fall bekannt geworden (abgesehen von einem groben Programmierfehler) wo wir mit einem doppelten Schlüssel Probleme gehabt haben. Diese wurden auch alle auf einem Rechner im Millisekunden Takt erzeugt (Server).

Ich denke Du kannst Dir sicher sein, das Guids einzigartig sind. Solche Datenmengen lassen sich eh nur in einer vernünftigen Datenbank handeln.. und wenn die nen doppelten Primary Key oder Unique Key bekommt.. wirft die eh ne Exception. Das kannst Du abfangen, und eine neue Guid erzeugen.

Gruß

1.346 Beiträge seit 2008
vor 15 Jahren

Gut zu wissen, das da nicht nur zufallwerte, sondern auch datums, und zeitinformationen mit einfließen. Ich hätte nähmlich sonst jede wette abgeschlossen, dass ich wieder der erste bin, bei dem sowas passiert. Ich habe immer so ein Pech. Da bin ich erleichtert.

Gruß pdelvo

1.002 Beiträge seit 2007
vor 15 Jahren

Hallo herbivore,

Wenn man stattdessen den vermeintlich 100%ig sicheren Primzahltest durch vollständiges Prüfen aller möglichen Teiler durchführen würde, kann es sein, dass die Fehlerwahrscheinlichkeit [...] großer ist als die bei der Abschätzung.

Das ist eine interessante Überlegung ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg