2012-11-15 1 views
56

우리는 Oracle DB를위한 기본 키로 UUID를 사용하고 VARCHAR에 적합한 최대 문자 길이를 결정하려고합니다. 분명히 이것은 36 자이지만 UUID 'S가 생성 된 길이보다 길어서 길이가 최대 60 자임을 알았습니다. 누구나 UUID에 적합한 최대 char 길이를 알고 있습니까 ??UUID 최대 문자 길이

+2

UUID는 128 비트 숫자이므로 어떤 코딩을 통해 60 문자 문자열로 변환되는지 궁금합니다. 극도로 열악한 인코딩 또는 다른 어떤 현실적인 문제가 아닌 것 같습니다. – fvu

+0

RDBMS는 무엇입니까? MS SQL은 UUID를위한 전용 유형을 가지고 있으며, 다른 것들은 단순히 바이트를 저장할 수 있습니다. 이것들을'VARCHAR'로서 저장하고 싶은 어떤 이유가 있습니까? –

답변

97

Section 3 of RFC4122은 UUID 문자열 표현의 형식적 정의를 제공합니다. 36 자 - 32 자리 16 진수 + 4 대시.

유효하지 않은 60 자 ID의 출처를 알아 내고 1) 수락하기를 원할 경우 2) 사용 된 API에 따라이 ID의 최대 길이를 결정해야하는 것처럼 들립니다. 그들을 생성합니다.

40

이것은 VARCHAR 36이 아닌 CHAR 36으로 정의 할 수있는 완벽한 종류의 필드입니다. 각 값은 정확히 동일한 길이를 갖기 때문입니다. 도달 거리 값에 대한 데이터 길이를 저장할 필요가 없기 때문에 저장 공간을 덜 사용합니다.

+5

열의 문자 집합이 멀티 바이트 인 경우 CHAR이 VARCHAR보다 더 많은 공간을 사용할 수 있습니다. (하단의 http://stackoverflow.com/a/59686/1691446 참조) – David

+2

UHIDv4는 latin-1 문자 집합 만 사용합니다. UTF-8의 경우이 경우 영향을받지 않습니다. 확실히 당신이 비록 다른 문자셋을 사용하고 있는지 확인하십시오. –

+0

문자열 형식의 UUID는이 문자 집합 (정규식) :'[0-9A-Fa-f-]'만 사용할 수 있습니다. 이것은 ASCII에서 23 개의 개별 옥텟입니다. – cowbert