2013-02-25 23 views
5

Tôi thấy http://www.ietf.org/rfc/rfc4122.txtĐộ dài tối đa của phiên bản rfc 4122 4

Độ dài tối đa của phiên bản RFC 4122 4 là bao nhiêu? Nói cách khác, nó luôn luôn có độ dài tối đa giống như giá trị chuỗi ví dụ này được lấy từ tài liệu? f81d4fae-7dec-11d0-a765-00a0c91e6bf6

Tôi nghĩ rằng câu trả lời nằm trong mục "Các định nghĩa chính thức của đại diện chuỗi UUID được cung cấp bởi ABNF sau"

Tôi muốn có một ý kiến ​​thứ hai cho vì lợi ích của một cột bảng cơ sở dữ liệu (varchar).

Cảm ơn!

+0

Tôi không có câu trả lời, nhưng bạn đang sử dụng máy chủ cơ sở dữ liệu nào? Một số cơ sở dữ liệu có các loại dành riêng để lưu trữ UUID. Ví dụ, SQL Server có kiểu 'uniqueidentifier'. –

+0

câu hỏi hay. oracle. Tôi thấy "Không có GUID hoặc loại uniqueidentifier trong Oracle" theo http://www.michelrenaud.com/?p=3 – finneycanhelp

+0

[Câu hỏi liên quan] (http://stackoverflow.com/questions/153815/how-should -i-store-a-guid-in-oracle). –

Trả lời

4

Theo RFC 4122:

Một UUID là 128 bit dài, và có thể đảm bảo độc đáo trong không gian và thời gian.

Nhưng nếu chúng ta muốn biết các đại diện chuỗi, chúng ta cần phải kiểm tra 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" 

Chúng tôi có tổng cộng 16 hexOctet. Chúng tôi đếm 2 ký tự bằng hexOctet cộng với 4 lần ký tự ("-"). Chúng tôi có tổng cộng 16 * 2 + 4 = 36 ký tự bất kể phiên bản.