2013-02-25 22 views
5

widzę http://www.ietf.org/rfc/rfc4122.txtMaksymalna długość RFC 4122 w wersji 4

Jaka jest maksymalna długość RFC 4122 w wersji 4? Innymi słowy, czy jest to zawsze ta sama maksymalna długość, co przykładowa wartość ciągu wzięta z dokumentu? f81d4fae-7dec-11d0-a765-00a0c91e6bf6

Myślę, że odpowiedź leży w dziale, który mówi „Formalna definicja reprezentacji UUID strun jest przez następujący ABNF”

chciałem drugą opinię dla ze względu na kolumnę tabeli bazy danych (varchar).

Dzięki!

+0

Nie mam odpowiedzi, ale którego serwera bazy danych używasz? Niektóre bazy danych mają typy dedykowane do przechowywania identyfikatorów UUID. Na przykład SQL Server ma typ 'uniqueidentifier'. –

+0

dobre pytanie. wyrocznia. Widzę "Nie ma GUID ani unikalnego identyfikatora w Oracle" zgodnie z http://www.michelrenaud.com/?p=3 – finneycanhelp

+0

[Pokrewne pytanie] (http://stackoverflow.com/questions/153815/how-should -i-store-a-guid-in-oracle). –

Odpowiedz

4

Według RFC 4122:

UUID jest 128 bitów, a może zagwarantować wyjątkowość całej przestrzeni i czasu.

Ale jeśli chcemy wiedzieć, ciąg znaków, musimy sprawdzić 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" 

mamy łącznie 16 hexOctet. Liczymy 2 znaki za pomocą hexOctet plus 4 razy postać ("-"). Mamy łącznie 16 * 2 + 4 = 36 znaków, niezależnie od wersji.