Ist es sicher anzunehmen, dass eine GUID immer eindeutig ist?
Ich weiß, es ist eine minute, die Möglichkeit, einen Zusammenstoß aber wenn ich erzeugte eine charge von 1000 GUIDs (zum Beispiel), wäre es sicher anzunehmen, Sie sind alle einzigartig zu speichern, testen jedes?
Bonus-Frage
Eine optimale Möglichkeit zum testen einer GUID für die Eindeutigkeit? Bloom-filter vielleicht?
InformationsquelleAutor der Frage Tom Savage | 2010-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können. Da die GUIDs sind 128 bit lang, es gibt zwar eine minute Möglichkeit für eine Kollision—aber das Wort "minute" ist bei weitem nicht stark genug. Es gibt so viele GUIDsdass, wenn Sie erzeugen mehrere Billionen von Ihnen zufällig, Sie sind immer noch eher von einem Meteoriten getroffen, als auch eine Kollision (von Wikipedia). Und wenn Sie nicht die Erzeugung zufällig, sondern sind z.B. Verwendung der MAC-Adresse-und-Zeitstempel-Algorithmus, dann sind Sie auch einzigartig sein, wie MAC-Adressen sind einzigartig unter den Computer-und Zeitstempel eindeutig auf Ihre computer.
Edit 1: beantworten Ihre bonus-Frage, die optimale Möglichkeit zum testen einer Reihe von GUIDs für die Eindeutigkeit ist einfach davon ausgehen, dass Sie alle sind einzigartig. Warum? Da angesichts der Anzahl der GUIDs erzeugen Sie, die Chancen auf eine GUID Kollision kleiner sind als die Verschiedenheit von cosmic ray blätterte ein wenig in den Arbeitsspeicher Ihres Computers und Schrauben bis die Antwort durch eine "genaue" Algorithmus, du würdest kümmern zu führen. (Siehe diese StackOverflow-Antwort für die Mathematik.)
Gibt es eine enorme Reihe von GUIDs gibt. Zitat Douglas Adams Hitchhiker ' s Guide to the Galaxy:
Und da gibt es etwa 7×1022 Sterne im Universumund knapp 2128 GUIDs, dann gibt es etwa 4.86×1015—fast fünf Billiarden—GUIDs für jeden einzelnen Stern. Wenn jeder dieser Sterne hatte eine Welt mit einer blühenden Bevölkerung wie der unsrigen, dann um alle und jeden Stern, jeder Mensch oder alien, der jemals lebte berechtigt, nach über vierzig fünf tausend GUIDs. Für jede person, die in Geschichte, jeder Stern im Universum. Die GUID-Raum ist auf dem gleichen Niveau der ungeheure Größe als die Größe des gesamten Universums. Sie nicht sorgen zu machen brauchen.
(Edit 2: nachdenken über das: wow. Ich hatte nicht erkannt, dass michwas dies bedeutete. Die GUID Raum ist unverständlicherweise Massiv. Ich bin ein bisschen in Ehrfurcht vor ihn.)
InformationsquelleAutor der Antwort Antal Spector-Zabusky
Kurze Antwort: für praktische Zwecke, ja.
Jedoch zu beachten, dass die Geburtstags-paradox!
Habe ich berechnet, ein paar Vertreter Kollision Wahrscheinlichkeiten. Mit 122-bit UUIDs angegeben, in der Wikipedia-Artikeldie Wahrscheinlichkeit einer Kollision ist 1/2, wenn Sie mindestens
2.71492e18
UUIDs. Mit 10^19 UUIDs, die Wahrscheinlichkeit ist 0.999918. Mit 10^17 UUIDs, 0.000939953.Einige zahlen zum Vergleich kann auf Wikipedia gefunden werden. So können Sie sicher zuordnen eine UUID für jeden Menschen, der gelebt hat, jede Galaxie im sichtbaren Universum, jeder Fisch im Meer, und jede einzelne Ameise auf der Erde. JedochKollisionen sind fast sicher, wenn Sie das erzeugen einer UUID für jeden transistor Menschheit produziert in einem Jahr, jedes Insekt auf der Erde, jedes Sandkorn auf der Erde, die einzelnen Sterne im beobachtbaren Universum, oder etwas größer.
Wenn Sie generiert 1 Milliarde UUIDs pro Sekunde, es würde ungefähr 36 Jahre um eine Kollision Wahrscheinlichkeit von 10%.
Irgendwann, wird es wahrscheinlich eine Kollision in der Menge von UUIDs generiert, die im Verlauf der menschlichen Geschichte. Dennoch, die Wahrscheinlichkeit, dass kollidierte UUIDs verwendet werden, für den gleichen Zweck ist verschwindend gering, also gibt es kein problem in der Praxis.
InformationsquelleAutor der Antwort Mechanical snail
Im Allgemeinen, ja, es ist sicher anzunehmen.
Wenn Ihr GUID-generator ist wirklich zufällig, sind die Möglichkeiten, einen Kampf innerhalb der 1000 GUIDs ist außerordentlich klein.
Natürlich vorausgesetzt, dass ein guter GUID-generator. Also die Frage ist wirklich, wie viel Vertrauen Sie dem tool, die Sie verwenden, um zu generieren, GUID, und er hat seine eigenen tests?
InformationsquelleAutor der Antwort Haacked
Eine Analyse der Möglichkeit der Kollision steht auf Wikipedia: http://en.wikipedia.org/wiki/Uuid#Random_UUID_probability_of_duplicates
Wie im genannten link, dieser wird beeinflusst durch die Eigenschaften der random number generator.
Gibt es auch die Möglichkeit, einen Fehler im GUID-generator-code; während die Chancen sind gering, Sie sind wahrscheinlich höher als die Chancen auf eine Kollision auf der Grundlage der Mathematik.
Einen Bloom-filter angebracht sein könnte; es kann schnell sagen, wenn eine GUID ist einzigartig, aber es gibt eine chance für eine falsche Angabe zu einer Kollision. Eine Alternative Methode, wenn Sie die Prüfung einer charge zu einer Zeit ist, Sortieren Sie die Chargen-und vergleichen Sie in jedem aufeinanderfolgenden element.
InformationsquelleAutor der Antwort Mark Ransom
Während eine Kollision möglich ist, ist es SEHR unwahrscheinlich. (Mathematik hier.) Es ist sicher anzunehmen, Sie sind in der Tat Verschieden.
InformationsquelleAutor der Antwort VeeArr
In der Regel ist es eine ziemlich sichere Annahme.
http://en.wikipedia.org/wiki/Globally_Unique_Identifier
Eine GUID ist eindeutig 100% der Zeit?
InformationsquelleAutor der Antwort Brad