Pregunta

necesito para generar único ID de registro para la cadena única dada.

He intentado utilizar el formato UUID que parece ser bueno.

Sin embargo, sentimos que es lengthly.

por lo que necesitamos cutdown la cadena uuid 9f218a38-12cd-5942-b877-80adc0589315 al más pequeño. Al eliminar '-' podemos ahorrar 4 caracteres. ¿Cuál es la parte más segura de eliminar de UUID? No necesitamos ID único universal, pero nos gusta usar UUID como fuente, sino reducir cuerdas.

Necesitamos identificador único específico de sitio / base de datos (servicios de Server / ADO.NET de datos de SQL).

Cualquier idea o muestra de cualquier idioma es bien

Gracias de antemano

¿Fue útil?

Solución

¿Por qué no en lugar de simplemente convertirla en una cadena de 64 base? Se puede cortar hasta 22 caracteres de esa manera.

Almacenamiento UUID como cadena base64

Otros consejos

Si está utilizando MS-SQL se debe, probablemente, sólo tiene que utilizar el tipo de datos uniqueindentifier, es tanto más compactos (16 bytes) y puesto que el motor de SQL sabe sobre él se pueden optimizar los índices y las consultas de usarlo.

Un UUID proporciona (casi) 128 bits de singularidad. Es posible acortarlo a 16 bytes binarios, o 22 caracteres codificados en base64. No recomendaría la eliminación de cualquier parte de un UUID, de lo contrario, sólo se pierde su sentido. UUID fueron diseñados de manera que todos los 128 bits tienen un significado. Si quieres menos que eso, usted debe utilizar algún otro esquema.

Por ejemplo, si se puede garantizar que sólo se utilizan la versión 4 UUID, entonces usted podría tomar sólo los primeros 32 bits, o sólo los últimos 32 bits. Se pierde singularidad, pero hay un número bastante al azar. Sólo evitar los bits que son fijos (versión y variantes).

Pero si no se puede garantizar que, tendrá problemas reales. Para la versión 1 UUID, los primeros bits no será único para UUID generados en el mismo día, y los últimos bits no serán únicos para UUID generados en el mismo sistema. Incluso si el UUID CRC, no se garantiza que va a tener 16 o 32 bits de singularidad.

En este caso, sólo tiene que utilizar algún otro esquema. Generar un número aleatorio de 32 bits utilizando el generador de números aleatorios del sistema y usar eso como su identificación única. No confíe en los UUID si tiene la intención de despojar de su longitud.

El UUID es de 128 bits o 16 bytes. Sin codificación, podría conseguirlo tan bajo como 16 bytes. UUID se escriben comúnmente en hexadecimal, lo que los 32 bytes cadenas legibles. Con otras codificaciones, se obtienen diferentes resultados:

  1. base-64 gira 3 bytes de 8 bits en 4 caracteres de 6 bits, por lo que 16 bytes de datos se convierte en 22 caracteres de longitud
  2. base 85 se convierte 4 bytes de 8 bits en 5 caracteres 6,4 bits, por lo que 16 bytes de datos se convierte en 20 caracteres de largo

Todo depende de si quieres cadenas legibles y como norma / common una codificación que desea utilizar.

A UUID tiene 128 bits. ¿Ha considerado hacer un CRC de ella? Eso podría bajarlo a 16 o 32 bits con facilidad, y podría usar toda la información original. Si un CRC no es lo suficientemente bueno, siempre se puede utilizar los primeros bytes de un hash adecuada (SHA256, por ejemplo).

Si realmente quieres es simplemente reducir el UUID, el formato de la misma se describe en RFC 4122 . Usted debe ser capaz de averiguar qué partes de su aplicación no necesita de eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top