Es un GUID único 100% del tiempo?

Es un GUID único 100% del tiempo?

Será una estancia única a través de múltiples hilos?

No, no al 100%… Solo 99,999999999999999999999999999999999999999999999999999999999999999999999999999% 😉
Primero de todo, un GUID no es infinito, lo que significa que para el significado literal de «el 100% del tiempo», significaría que no importa cuánto tiempo usted mantenga la generación de GUID, que siempre será único. Este no es el caso. También, desde la implementación original, donde la tarjeta de red única de serie/id/MAC se utiliza para producir una parte de la clave ya no se utiliza, por diversas razones, un GUID es realmente no a nivel mundial único. Es, sin embargo, local único. En otras palabras, si usted seguir generando el Guid en una sola máquina, usted no va a obtener duplicados.
Me acaba de elegir a redondear a la baja… 😛
Cada vez que generar GUID me siento como el robo de uno de el Universo. A veces pienso mal de la gente que generar mucho más Guid de las que necesitan y los desperdicia Guid son tan sola que no están siendo utilizados o generados de nuevo…
Creo que te va a gustar wasteaguid.info ^_^

OriginalEl autor David Basarab | 2008-09-02

19 Kommentare

  1. 356

    Mientras que cada GUID generado no es
    garantizado para ser único, el total de
    número de claves únicas (2^128 o
    3.4×10^38) es tan grande que la probabilidad de que el mismo número de
    genera dos veces es muy pequeña. Para
    como ejemplo, considere el observables
    universo, que contiene alrededor de 5×10^22
    estrellas; todas las estrellas que podrían tener
    6.8×10^15 universalmente único Guid.

    De Wikipedia.


    Estos son algunos buenos artículos sobre cómo un GUID (por .NET) y cómo se podría conseguir el mismo guid en la situación correcta.

    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/

    No iban a ser llamado un UUID, entonces? 😉
    Un GUID de microsoft es specifica de la implementación de la UUID de la norma. Así, es ambas cosas. IDENTIFICADOR único global vs ID único Universal.
    Técnicamente, no es de 2^128, porque en un v4 GUID, tiene un dígito hexadecimal que siempre será un 4 (eliminación eficaz de 4 bits), y los dos bits más adelante también están reservados. Sin embargo, 2^122 válido V4 Guid deja sobre 5×10^36, que va a hacer por mí. y también para ti. Cada estrella tendrá que aceptar sólo alrededor de 1.1×10^14 Guid cada uno.
    Si eres como yo, entonces usted querrá saber que 2^128 escrito es de aproximadamente: 34,028,236,692,093,846,346,337,460,743,177,000,000. Estadísticamente, si se calcula 1000 Guid cada segundo, aún se tardaría miles de millones de años para obtener un duplicado.
    Reto aceptado.

    OriginalEl autor Adam Davis

  2. 59

    La respuesta simple es sí.

    Raymond Chen escribió un gran artículo en los Guid y por qué subcadenas de los Guid se no único garantizado. El artículo entra en profundidad en cuanto a la forma Guid se generan y los datos que utiliza para garantizar la unicidad, la cual debe de ir a algunos de longitud en la explicación de por qué son 🙂

    Creo que Chen artículo se refiere a la V1 de la GUID algoritmo de generación, que utiliza una dirección MAC & marca de tiempo — el actual V4 usa un pseudo-aleatorio de lugar: en.wikipedia.org/wiki/Globally_Unique_Identifier#Algorithm
    Lo siento, he hecho clic en ‘-‘ por error 🙁

    OriginalEl autor ljs

  3. 53

    Si tienes miedo de que el mismo GUID valores, a continuación, poner dos de ellos, uno al lado del otro.

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

    Si son demasiado paranoico, a continuación, poner tres.

    Todavía no es el único 100% (sólo para ser pedante).
    Tienes que ser muy, muy, muy, muy paranoico para anexar 3 Guid.
    No… muy, muy, muy, muy paranoico es de 6 Guid. Paranoico es uno anexa, muy paranoico es dos anexa, etc.
    He creado un sitio web para el cálculo de su paranoico nivel de jogge.github.io/HowParanoidAmI
    xD Que es increíble, lol. Después de las 9 de 9 999999999 en su forma, creo que la Paranoia se a-splode mi Navegador.

    OriginalEl autor Bura Chuhadar

  4. 33

    Como una nota de lado, yo estaba jugando con el Guid de Volumen en Windows XP. Esta es una muy oscura la distribución de la partición con tres discos y catorce volúmenes.

    \\?\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
    

    No es que el Guid son muy similares, pero el hecho de que todos los Guid de la cadena «mario» en ellos. Es que una coincidencia o hay una explicación detrás de esto?

    Ahora, cuando buscando en google, en la parte 4 en el GUID he encontrado aprox 125.000 éxitos con los Guid de volumen.

    Conclusión: Cuando se trata de los Guid de Volumen no son tan únicas como otros Guid.

    Recuerda que Super Mario Bros 3 anuncio a partir de los años 80? Todas aquellas personas gritando «Mario! Mario! Mario!» todo el mundo malestar de la casualidad de que el universo sea un poco.
    Si usted manualmente onu-instalar Office 2010 con msiexec, se enumeran todos los MSI GUID de la oficina del programa. Todos ellos escriben 0FF1CE. Parece que Microsoft tiene bastante… suelta… interpretación de cómo generar un GUID 😉
    Estos partición Guid fueron creados juntos en 2009-12-17 @ 2:47:45 PM UTC. Ellos son únicos para su máquina, pero poner «mario», como el identificador de nodo es incorrecta – significa que no están RFC 4122-compatible. Asimismo, el 0FF1CE Guid caer bajo el «NCS compatibilidad hacia atrás» de la sección de RFC 4122, pero es poco probable que Microsoft está siguiendo el NCS reglas para los valores.
    Yo sabía, el Nintendo Administración de la Seguridad, ha puesto en peligro los generadores de números aleatorios.
    tal vez es este mismo parque de pelota como el nombre de la empresa haciendo un agua mineral (oído que liderar el mercado) Evian. Escrito al revés da Ingenuo 🙂

    OriginalEl autor Jonas Gulle

  5. 27

    Sí, un GUID debe ser siempre único. Se basa en el hardware y el tiempo, además de un extra de unos pocos bits para asegurarse de que es único. Estoy seguro de que es teóricamente posible para terminar con dos idénticos, pero muy poco probable en un escenario real.

    Aquí un gran artículo de Raymond Chen en los Guid:

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

    Este artículo es bastante antiguo, y en referencia a la v1 de Guid. v4 no usar el hardware/tiempo, pero un número aleatorio algoritmo de lugar. en.wikipedia.org/wiki/Globally_unique_identifier#Algorithm

    OriginalEl autor Eric Z Beard

  6. 20

    No debe suceder. Sin embargo, cuando .NET es una pesada carga, es posible obtener duplicados de guid. Tengo dos servidores web diferentes con dos diferentes servidores sql. Fui a la combinación de los datos y encontré que había 15 millones de guid y 7 duplicados.

    ¿Cómo es esto posible en dos máquinas diferentes? Pensé parte de la GUID era el nombre de la máquina? (no argumentando… simplemente preguntando)
    Esto sólo sería cierto para v1 guid que utiliza las direcciones MAC (no se el nombre de la máquina) como parte de la generación de GUID. La v4, por lo que de facto es el SEXUAL, ya no utiliza las direcciones Mac pero un pseudo aleatorio.
    Guid.NewGuid siempre genera v4 Guid (y siempre ha). Tim debió de tener muy buenos entropía de las fuentes.
    Es que nunca se han replicado? eso es un gran problema si es el caso.

    OriginalEl autor Tim

  7. 19

    Guid son estadísticamente único. Las probabilidades de que dos clientes diferentes de generar el mismo Guid son infinitesimalmente pequeño (suponiendo que no hay errores en el Guid de la generación de código). Usted puede preocuparse de su procesador de fallas debido a un rayo cósmico y decidir que 2+2=5 el día de hoy.

    Múltiples hilos de la asignación de nuevo guid de obtener valores únicos, pero usted debe conseguir que la función que está llamando es seguro para subprocesos. El ambiente que es esto?

    OriginalEl autor Rob Walker

  8. 16

    Eric Lippert ha escrito una muy interesante serie de artículos sobre el Guid.

    Hay en el orden de la 230 ordenadores personales en el mundo (y de
    supuesto que muchos de los dispositivos de mano o no de la PC de los dispositivos informáticos que han
    más o menos los mismos niveles de potencia de cálculo, pero permite ignorar
    esos). Supongamos que ponemos todos los PCs en el mundo de la
    la tarea de generar un Guid; si cada uno puede generar, digamos, de la 220 Guid por
    segundo, a continuación, después de sólo unos 272 segundos — de cien y de cincuenta
    billones de años
    – tendrás un muy alta oportunidad de generar un
    colisión con su GUID específico. Y las probabilidades de colisión obtener
    muy bien después de sólo treinta billones de años.

    …y continúa en el siguiente párrafo: «Pero es que buscando una colisión con un GUID específico. […] Así que si ponemos los millones de PCs a la generación de trabajo 122-bits-de-la aleatoriedad Guid, la probabilidad de que dos de ellos en alguna parte hubiera chocado pone muy alto después de unos 2^61 Guid se generan. Puesto que estamos suponiendo que alrededor de 2^30 máquinas están haciendo 2^20 Guid por segundo, esperamos una colisión después de unos 2^11 segundos, que es de aproximadamente una hora (Y, finalmente, explica que, por supuesto, no se que muchos de los Guid se generan.)

    OriginalEl autor Paolo Moretti

  9. 14

    Teóricamente, no, ellos no son los únicos. Es posible generar una idéntica guid más y más. Sin embargo, las posibilidades de que esto ocurra son de tan baja que se puede asumir que ellos son únicos.

    He leído antes de que las posibilidades son tan bajos que usted realmente debe estrés sobre algo más, como el servidor de combustión espontánea u otros errores en el código. Es decir, asumir que es único y no construir en cualquier código para «atrapar» duplicados–gastar tu tiempo en algo más probabilidades de ocurrir (es decir, nada otra cosa).

    Me hizo un intento de para describir la utilidad de los Guid a mi blog audiencia (no técnicos miembros de la familia). A partir de ahí (via Wikipedia), las probabilidades de generar un GUID duplicado:

    • 1 en 2^128
    • 1 en 340 undecillion (no te preocupes, undecillion no está en la
      quiz)
    • 1 en 3.4 × 10^38
    • 1 en 340,000,000,000,000,000,000,000,000,000,000,000,000
    En realidad, no estoy de acuerdo acerca de «no preocuparse», aunque desde otra postura: si usted detecta un GUID de la colisión, entonces algo ha ido mal con su aplicación. He usado Guid, por ejemplo, para la idempotencia, y tienen una colisión cuando un comando se ha enviado dos veces (con el mismo GUID).

    OriginalEl autor Michael Haren

  10. 7

    Ninguno parece mencionar las matemáticas de la probabilidad de que ocurra.

    Primer lugar, vamos a suponer que podemos utilizar la totalidad de la 128 bits de espacio (Guid v4 sólo utiliza 122 bits).

    Sabemos que la probabilidad de NO obtener un duplicado en n selecciones es:

    (1-1/2128)(1-2/2128)…(1-(n-1)/2128)

    Porque 2128 es mucho más grande que n, se puede aproximar a:

    (1-1/2128)n(n-1)/2

    Y porque podemos asumir n es mucho mayor que 0, se puede aproximar que:

    (1-1/2128)n^2/2

    Ahora podemos equiparar esto a lo «aceptable» de la probabilidad, digamos 1%:

    (1-1/2128)n^2/2 = 0.01

    Que podemos resolver para n y obtener:

    n = sqrt(2* log 0.01 /log (1-1/2128))

    Que Wolfram Alpha llega a ser 5.598318 × 1019

    Para poner ese número en perspectiva, permite tomar 10000 máquinas, cada una con 4 núcleos de CPU, haciendo 4Ghz y el gasto 10000 ciclos para generar un Guid y no hacer nada más. Entonces tomaría ~111 años antes de generar un duplicado.

    He editado tu mensaje siguiente a este post – por favor, edite si me hizo un error ;).
    Hola @Cine, tengo el poder para editar su respuesta, pero han optado por no, porque yo quiero tener una oportunidad para refutar lo primero, probablemente voy a venir en un mes-ish formalmente a cambiar si no oigo de usted. Estoy bastante seguro de que la matemática está mal, aunque. el real de la ecuación para la determinación de un 1% de probabilidad es este: ((2^128 – 1) / 2 ^128) ^ ( (n (n-1)) / 2) = .01. Su exponente es malo. no es sólo n. Usted necesita C(n,2) (aka (n*(n-1))/2) para calcular todas las combinaciones a la hora de generar «n» guid. Ver aquí para más información
    tienes razón
    Gracias Cine, yo también terminó la aproximación de n^2/2 desde su enorme 🙂
    Tomaría 10000 máquinas de 111 años para generar cada uno de los posibles GUID, y, a continuación, generar un duplicado. Un duplicado, sin embargo, se producen mucho antes de que todos los posibles Guid se han generado. Creo que el tiempo aproximado de un marco depende de cómo ‘al azar’ el GUID proceso de generación.

    OriginalEl autor Cine

  11. 6

    De http://www.guidgenerator.com/online-guid-generator.aspx

    ¿Qué es un GUID?

    GUID (o UUID) es un acrónimo de ‘Identificador Único Global’ (o ‘Identificador Único Universal’). Es un entero de 128 bits número utilizado para identificar los recursos. El término GUID es generalmente utilizado por los desarrolladores que trabajan con tecnologías de Microsoft, mientras que el UUID se utiliza en todas partes.

    Cómo único es un GUID?

    De 128 bits es lo suficientemente grande y el algoritmo de generación es única, suficiente como para que si 1,000,000,000 Guid por segundo fueron generados para el año 1 la probabilidad de un duplicado sería sólo el 50%. O si cada humano en la Tierra generado 600,000,000 Guid habría sólo un 50% de probabilidad de un duplicado.

    no es un 50% de probabilidad de un duplicado lo suficientemente alta como para causar miedo?

    OriginalEl autor Tono Nam

  12. 5

    He experimentado un GUID duplicado.

    Yo uso el de Ordenadas los Recibos de escritorio escáner y viene con la propiedad de software de base de datos. El software tiene una sincronización en la nube de la característica, y yo seguí recibiendo un error en la sincronización. Un vistazo a los registros reveló la impresionante línea:

    «errores»:[{«code»:1,»mensaje»:»creator_guid: ya está
    tomado»,»guid»:»C83E5734-D77A-4B09-B8C1-9623CAC7B167″}]}

    Yo estaba un poco en la incredulidad, pero sin duda lo suficiente, cuando me encontré con un camino en mi local neatworks de la base de datos y elimina el registro que contiene el GUID, el error se detuvo ocurriendo.

    Para responder a su pregunta con la evidencia anecdótica, no. Un duplicado es posible. Pero es probable que la razón por la que sucedió no fue producto del azar, sino consecuencia de la práctica no se respetan en alguna manera. (Yo soy no sólo que la suerte) sin Embargo, no puedo decir seguro. No es mi software.

    Su atención al cliente fue MUY cortés y servicial, pero de las que nunca se han encontrado con este problema antes, porque después de 3 horas en el teléfono con ellos, ellos no encontrar la solución. (Por lo que vale, estoy muy impresionado por Aseado, y esta falla, sin embargo frustrante, no cambio mi opinión de su producto.)

    No creas que tienes un duplicado. Probablemente había algo más involucrados, como el número no era verdaderamente aleatorios o problema en el proceso de sincronización o el sistema de tratado de grabar dos veces, etc. Un problema de software, es mucho más probable que usted obtener un duplicado de GUID.

    OriginalEl autor exintrovert

  13. 4

    Si el reloj del sistema está configurado correctamente y no se ha envuelto alrededor, y si la tarjeta de red tiene su propia dirección MAC (es decir, no ha establecido una costumbre MAC) y la NIC proveedor no ha sido el reciclaje de Mac (que se supone que no debemos hacer, pero que se sabe que ocurre), y si su sistema de generación de GUID función se implementa correctamente, entonces el sistema nunca va a generar Guid duplicados.

    Si todo el mundo en la tierra que está generando Guid sigue esas reglas, a continuación, su Guid será única a nivel mundial.

    En la práctica, el número de personas que rompen las reglas es baja, y sus Guid es raro para «escapar». Los conflictos son estadísticamente improbable.

    Esto sólo sería cierto para v1 guid. La v4, por lo que de facto es el SEXUAL, ya no utiliza las direcciones Mac pero un pseudo aleatorio.
    «a continuación, el sistema nunca va a generar Guid duplicados» Incluso si todas las reglas que se siguieron para la v1 guid como usted dice, el sistema podría generar duplicados. Usted es más correcto en el fondo al estado «los Conflictos son estadísticamente improbables.»

    OriginalEl autor DrPizza

  14. 3

    MSDN:

    Existe una muy baja probabilidad de que el valor de la nueva Guid es todo ceros o igual a cualquier otro Guid.

    OriginalEl autor Jakub Šturc

  15. 3

    Es un GUID único 100% del tiempo?

    No garantizada, ya que hay varias formas de generar uno. Sin embargo, usted puede tratar de calcular la probabilidad de la creación de dos Guid que son idénticos y usted consigue la idea: un GUID de 128 bits, por lo tanto, hay 2128 > distintos Guid – mucho más de que hay estrellas en el universo conocido. Leer el artículo de la wikipedia para obtener más detalles.

    OriginalEl autor Konrad Rudolph

  16. 1

    He experimentado el Guid no ser única durante multi-hilo y multi-proceso de pruebas unitarias (¿demasiado?). Supongo que tiene que ver con todas las otras cosas siendo iguales, idénticos a los de la siembra (o la falta de la siembra) de pseudo-aleatorios de los generadores. Yo lo estaba usando para la generación de nombres de archivo exclusivos. He encontrado el sistema operativo es mucho mejor para hacer eso 🙂

    Trolling alerta

    Preguntas si el Guid es el único 100%. Que depende del número de Guid debe ser único entre. Como el número de los Guid de enfoque infinito, la probabilidad de duplicar Guid enfoque 100%.

    OriginalEl autor Robert Jørgensgaard Engdahl

  17. 1

    En un sentido más general, esto se conoce como el «problema del cumpleaños» o «paradoja de cumpleaños». Wikipedia tiene una muy buena visión general en:
    Wikipedia – Problema Del Cumpleaños

    Muy grosso modo, la raíz cuadrada del tamaño de la piscina es una aproximación de cuando se puede esperar de un 50% de probabilidad de un duplicado. El artículo incluye una probabilidad de mesa de billar de tamaño y distintas probabilidades, incluyendo una fila de 2^128. Así que para un 1% de probabilidad de colisión se puede esperar a elegir aleatoriamente un 2,6*10^18 de 128 bits de los números. Un 50% de probabilidad requiere 2,2*10^19 selecciones, mientras que SQRT(2^128) es de 1,8*10^19.

    Por supuesto, esto es sólo el caso ideal de un verdadero proceso aleatorio. Como han mencionado otros, mucho se está montando en el que azar aspecto de lo bueno que es el generador y la semilla? Sería agradable si había algún soporte de hardware para ayudar con este proceso, que sería más a prueba de balas, excepto que cualquier cosa puede ser falso o virtualizados. Sospecho que podría ser la razón por la que las direcciones MAC/sellos de tiempo no están incorporados.

    Creo que el problema de MAC fue el anonimato. Creo que el uso de un identificador como una dirección MAC de una manera que podría ser revertido fue una preocupación de privacidad. Creo que la verdadera azar en hardware es muy difícil? Cloudflare utiliza una cámara y una fila de lámparas de lava, sin embargo creo que con un conocimiento preciso de la física, incluso que no es al azar? Cloudflares lámpara de lava RNG: popularmechanics.com/technology/security/news/a28921/…

    OriginalEl autor mszil

  18. 0

    GUID algoritmos generalmente son implementados de acuerdo a la v4 GUID especificación, que es esencialmente un pseudo-aleatorio de la cadena. Lamentablemente, estos entran en la categoría de «probablemente no único», de la Wikipedia (no sé por qué tantas personas ignoran este bit): «… otros GUID versiones diferentes de la singularidad de las propiedades y de las probabilidades, que van desde garantizada la unicidad es probable que no unicidad.»

    La pseudo-aleatorio de las propiedades de los V8 de JavaScript de la Math.random() son TERRIBLES en la singularidad, con colisiones a menudo viene después de sólo un par de miles de iteraciones, pero V8 no es el único culpable. He visto en el mundo real GUID colisiones usando PHP y Ruby implementaciones de v4 Guid.

    Porque se está volviendo más y más común a escala de IDENTIFICACIÓN de la generación a través de múltiples clientes, y los clústeres de servidores, la entropía tiene un gran impacto-las posibilidades de la misma semilla aleatoria se utiliza para generar un IDENTIFICADOR escalar (el tiempo es a menudo utilizado como una semilla aleatoria en pseudo-aleatoria de los generadores), y el GUID de las colisiones de intensificar la «probablemente no único» a «muy probable causar un montón de problemas».

    Para resolver este problema, me puse a crear un IDENTIFICADOR de algoritmo que podría escala de forma segura, y hacer mejor las garantías contra la colisión. Lo hace mediante el uso de la marca de tiempo, en la memoria del cliente contador, cliente de huellas dactilares, y caracteres aleatorios. La combinación de factores crea un aditivo de la complejidad que es particularmente resistente a la colisión, incluso si se cambia la escala a través de un número de hosts:

    http://usecuid.org/

    OriginalEl autor Eric Elliott

  19. 0

    La Respuesta de «Es un GUID es el único 100%?» es simplemente «No» .

    • Si quieres el 100% de la singularidad de GUID, a continuación, haga lo siguiente.

      1. generar GUID
      2. comprobar si el GUID es Existir en su columna de la tabla donde se está buscando uniquensess
      3. si existen, a continuación, vaya al paso 1 paso 4
      4. el uso de este GUID como único.

    OriginalEl autor Baba Khedkar

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea