2013-02-25 14 views
5

vedo http://www.ietf.org/rfc/rfc4122.txtLunghezza massima di un RFC 4122 versione 4

Qual è la lunghezza massima di un RFC 4122 versione 4? In altre parole, è sempre la stessa lunghezza massima di questo valore di stringa di esempio preso dal documento? f81d4fae-7dec-11D0-a765-00a0c91e6bf6

Penso che la risposta si trova nella sezione che dice "La definizione formale della rappresentazione di stringa UUID è fornito dal seguente ABNF"

ho voluto un secondo parere per la scopo di una colonna della tabella del database (varchar).

Grazie!

+0

Non ho una risposta, ma quale server di database stai usando? Alcuni database hanno tipi dedicati alla memorizzazione degli UUID. SQL Server, ad esempio, ha il tipo 'uniqueidentifier'. –

+0

buona domanda. oracolo. Vedo "Non esiste un GUID o un identificatore univoco in Oracle" secondo http://www.michelrenaud.com/?p=3 – finneycanhelp

+0

[Domanda correlata] (http://stackoverflow.com/questions/153815/how-should -i-store-a-guid-in-Oracle). –

risposta

4

Secondo RFC 4122:

Un UUID è lunghezza di 128 bit, e può garantire unicità nello spazio e nel tempo.

Ma se vogliamo conoscere la rappresentazione di stringa, abbiamo bisogno di controllare l'ABNF:

UUID     = time-low "-" time-mid "-" 
          time-high-and-version "-" 
          clock-seq-and-reserved 
          clock-seq-low "-" node 
    time-low    = 4hexOctet 
    time-mid    = 2hexOctet 
    time-high-and-version = 2hexOctet 
    clock-seq-and-reserved = hexOctet 
    clock-seq-low   = hexOctet 
    node     = 6hexOctet 
    hexOctet    = hexDigit hexDigit 
    hexDigit = 
     "0"/"1"/"2"/"3"/"4"/"5"/"6"/"7"/"8"/"9"/
     "a"/"b"/"c"/"d"/"e"/"f"/
     "A"/"B"/"C"/"D"/"E"/"F" 

Abbiamo un totale di 16 hexOctet. Contiamo 2 caratteri per hexOctet più 4 volte il carattere ("-"). Abbiamo un totale di 16 * 2 + 4 = 36 caratteri indipendentemente dalla versione.