2011-01-08 10 views
3

Ich verstehe GUIDs nicht. Ich meine, ich verstehe, dass es sich um eine große Zufallszahl handelt, bei der es unwahrscheinlich ist, dass sie dupliziert wird, aber warum haben sie ein so genau definiertes Format? (Ich verweise auf die meisten meiner Informationen aus http://en.wikipedia.org/wiki/Globally_unique_identifier.)Was ist der Grund für das Design von GUIDs?

Warum GUID nicht einfach eine völlig zufällige 128-Bit-Ganzzahl machen und es einen Tag nennen? Es scheint, dass alle Beschränkungen und Regeln, die auf ihre Erzeugung angewendet werden, die Entropie in gewisser Weise reduzieren würden. Warum sind einige Bits für die Format- und Variantenspezifikation reserviert? Warum Endianness angeben?

Die Varianten- und Formatspezifikationen sind, was mich wirklich verwirrt. Wenn es sich nur um einen zufälligen Bezeichner handelt, warum sollte sich ein Verbraucher des GUID darum kümmern, in welchem ​​Format er sich befand? Es ist eine 128-Bit-Zufalls-ID. Ist das nicht genug?

+2

Es gibt einen Unterschied zwischen zufällig und einzigartig. GUIDs sollten global eindeutig sein, daher ist die Verwendung einer Zufallszahl nicht geeignet, da Wiederholungswahrscheinlichkeiten bestehen. Und sie sollten weltweit einzigartig sein, nicht nur auf Ihrem Computer, sondern von allen Computern auf der ganzen Welt. –

Antwort

2

Verwechsle nicht Zufälligkeit und Einzigartigkeit.

Ohne die strikte Formatierung, in der beispielsweise die MAC-Adresse enthalten ist, könnten zwei Maschinen möglicherweise gleichzeitig dieselbe Zufallskennung erzeugen. An diesem Punkt ist es nicht mehr "global einzigartig".

+0

Aber V4 verwendet nicht die MAC-Adresse. Es verwendet nur einen Pseudozufallszahlengenerator. Warum wird das Format in der GUID angegeben? Das reduziert die Einzigartigkeit. –

+0

@dave: Durch die Angabe der Versions-ID in den UUID für v4-IDs wird sichergestellt, dass keine UUID der Version 4 mit einer Kennung von nicht-v4 kollidiert. – ig0774

Verwandte Themen