Cómo corto puede ser un GUID?

Sé que el estándar de Guid. Pueden hacerse más corta? ¿Qué es la teoría detrás de esto?

OriginalEl autor Tim2010 | 2009-05-25

6 Kommentare

  1. 24

    Greg Dean respuesta es correcta, pero en el fin de entender cómo un GUID se genera y por qué no debería ser acortado yo le sugiero que lea el artículo siguiente.

    El Viejo de lo Nuevo : Guid único global, pero subcadenas de Guid no:

    Un cliente necesaria para generar una
    8-byte valor único, y su inicial
    la idea fue generar un GUID y tirar
    lejos de la segunda mitad, manteniendo la
    la primera de ocho bytes. Querían saber
    si esto era una buena idea.

    No, no es una buena idea.

    El GUID algoritmo de generación de basa
    en el hecho de que tiene todos los 16 bytes
    a utilizar para establecer la unicidad, y si
    tire a la basura la mitad de ella, se pierde
    la singularidad.

    El cifrado xor de las dos mitades, en realidad, podrían ACEPTAR (no peor que aleatoriamente la generación de los 8 bytes) si todo lo que uno necesitaba era, digamos, menos de miles de millones de tales «estadísticamente» únicos valores (por la sqrt-N de la regla de oro que menciono en mi respuesta).
    +1 yo no estoy seguro de por qué esto se puso de votos, esto es muy cierto (de hecho, he vivido).
    Al parecer, todas las respuestas a esta pregunta están recibiendo downvotes-alguien debe realmente no te gusta Guid, o algo;-).

    OriginalEl autor Andrew Hare

  2. 12

    Dependiendo de su aplicación, realmente depende de qué tan grande es el «G»(Global) es en su aplicación.

    «GUID», IDENTIFICADOR Único Global. Típico moderno «genérico» Guid están diseñados para cualquier aplicación, y su «G»,, «Global», es literalmente. Global. La World wide. A través de aplicaciones, de las naciones, de geografía, de todo. 16 Bytes es una gran cantidad de información.

    Ahora, si EN SU APLICACIÓN, la «G» no es grande, si usted no tiene la expectativa de, o la intención de «G» ser Global en un Mundo de sentido, en lugar de simplemente «global» en el espacio de aplicación de sentido, entonces usted puede fácilmente reducir el tamaño del ámbito de su aplicación.

    Consiguió cuatro divisiones de la compañía, nunca va a tener más? 2 bits — 0, 1, 2, 3 es lo suficientemente grande «GUID» para esta tarea. Claramente, esta es una artificiales de la aplicación.

    Hemos aprendido en el pasado que la consecuencia de la limitación de Bits» cuando hemos esclavizado a través de los problemas del Y2K. Así, «los bits son baratas» es un válido motivo suficiente para NO limitar su GUID tamaño, y errar en el lado de «demasiados bits, por ahora». Pero, a decir verdad, muchas de las aplicaciones simplemente SON limitados, muchas de las aplicaciones pueden generar así una gran cantidad de datos, o sea el ancho de banda limitado a donde no hay necesidad para una de 16 bytes GUID, y el uso de uno influye en el rendimiento y los recursos.

    Así, entender el concepto de la GUID, y cómo se aplica a las aplicaciones. A continuación, puede hacer cualquier tamaño necesario.

    OriginalEl autor Will Hartung

  3. 5

    El corto «supuestamente único global» IDs, mayor será la probabilidad de una colisión, cuando muchos de ellos son más o menos aleatoriamente generado-y, que casualidad es probablemente mayor de lo que cabría pensar, debido a la «paradoja de cumpleaños»… ver http://betterexplained.com/articles/understanding-the-birthday-paradox/ . (Muy aproximado, pero útil) regla general, la oportunidad no es despreciable si (entre N posibles Uid) asignar sqrt(N) o así. Una de 128 bits ID es por lo tanto bastante seguro de colisión accidental, incluso para muchos de los miles de millones de Identificadores; pero si se va a reducir a, digamos, de 32 bits, usted tendría un importante riesgo de colisiones, aunque solo sea por un par de decenas de miles de IDs.

    OriginalEl autor Alex Martelli

  4. 3

    Son exactamente 16 bytes.

    Técnicamente hablando el efecto de acortamiento de ellos variará basado en el algoritmo utilizado para generar ellos. Considerando, que la API (probablemente) no es garantía de una versión particular o aplicación, es una mala idea para reducir. Incluso si lo hizo, es una mala idea. Si necesita menos de 16 bytes de la entropía, usted debe prob no ser mediante un GUID.

    Para obtener más información:
    http://en.wikipedia.org/wiki/Globally_Unique_Identifier

    OriginalEl autor Greg Dean

  5. 0

    Explicado de forma muy sencilla, los Identificadores son únicos debido a que actúan como coordenadas.

    Tradicionalmente*, la mitad era específico de la máquina (mediante el uso de la dirección MAC) y la mitad se deriva del tiempo.

    Porque los Mac son únicas entre las máquinas y cada máquina puede ejecutar una instrucción a la vez (tradicionalmente recordar!) el GUID definitivamente va a ser único.

    Esto significa sin embargo, que si la zanja de cualquier parte de un GUID, se pierde la garantía de la unicidad. El señor Martelli, da una buena explicación de por qué esto es más de un problema que se podría suponer.

    *digo tradicionalmente, pero nunca he leído un artículo que indica un cambio importante. No creo que real de que los Mac son utilizados hoy en día (por razones de seguridad, supongo), pero creo que estamos todavía MAC derivados o, al menos, máquina específica.

    La razón para downvote? Soy todo oídos a las críticas constructivas…
    Sólo V1 Guid son las coordenadas (MAC+Tiempo), e incluso aquellos que no son «únicos».
    No es que yo votada abajo, pero, también, «cada máquina puede ejecutar una instrucción a la vez» no es una razón de por qué Guid puede o puede no ser única.
    en.wikipedia.org/wiki/…
    Gracias chicos, que realmente debería de haber comprobado la wikipedia, supongo.

    OriginalEl autor Tom Wright

Kommentieren Sie den Artikel

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

Pruebas en línea