650 votes

Est un GUID unique 100 % du temps ?

Est un GUID unique 100 % du temps ?

Il restera unique sur plusieurs threads ?

519voto

Adam Davis Points 47683
<blockquote> <p>Alors que chaque GUID généré n’est pas garanti d’être unique, le nombre total de clés uniques (2 ^ 128 ou 3,4 × 10 ^ 38) est si grande que la probabilité que le même nombre généré deux fois est très faible. Par exemple, considérez l’univers observable, qui contient environ 5 × 10 ^ 22 étoiles ; toutes les étoiles pourraient avoir puis 6,8 × 10 ^ 15 GUID unique universel.</p> </blockquote> <p>De <a href="http://en.wikipedia.org/wiki/Globally_Unique_Identifier">Wikipedia</a>.</p>

75voto

ljs Points 16511

La réponse simple est oui.

Raymond Chen a écrit un excellent article sur GUID et pourquoi les sous-chaînes de GUID sont garantis pas unique. L’article poursuit à une certaine profondeur quant à la façon dont les GUID est générés et les données qu’ils utilisent pour garantir l’unicité, qui devrait revenir à une longueur en expliquant pourquoi qu'ils sont  :-)

47voto

Jonas Gulle Points 3435

Comme une note de côté, j'ai été jouer avec les Guid du Volume dans Windows XP. C'est un très obscure disposition de partition avec trois disques et quatorze 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:)
                                     | | | | |
                                     | | | | +-- o
                                     | | | +---- i
                                     | | +------ r
                                     | +-------- a
                                     +---------- m

Ce n'est pas que les Guid sont très semblables, mais le fait que tous les Guid ont la chaîne de "mario". C'est qu'une coïncidence ou est-il une explication derrière tout cela?

Maintenant, quand googler pour la partie 4 dans le GUID j'ai trouvé environ 125.000 hits avec les Guid du volume.

Conclusion: Quand il s'agit de Guid du Volume qu'ils ne sont pas aussi unique que d'autres Guid.

38voto

Tim Points 141

Il ne devrait pas arriver. Toutefois, lorsque .NET est sous une charge lourde, il est possible d’obtenir le GUID en double. J’ai deux serveurs web différents à l’aide de deux serveurs sql différentes. Je suis allé à fusionner les données et trouvé que j’avais GUID 15 millions et 7 doubles.

31voto

Eric Z Beard Points 18473

Oui, un GUID doit toujours être unique. Il repose sur les matériels et l’heure, plus quelques bits supplémentaires pour s’assurer que c’est unique. Je ne sais pas qu'il est théoriquement possible de se retrouver avec deux joints identiques, mais extrêmement peu probable dans un scénario réel.

Voici un excellent article de Raymond Chen sur GUID :

http://blogs.msdn.com/oldnewthing/archive/2008/06/27/8659071.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X