UUID
- 128bit의 값
- 5개의 그룹으로 나뉜 16진수 값으로 나타낸 string
- db에서 pk값으로 쓰이기도 함
ex )
27b3abab-8d52-4987-87eb-e68e277f5473
역사
- version1 : MAC 주소 + date-time기반으로 생성, 매우 빠른 처리를 수행하는 경우 중복된 값 생성가능..(시간기반이기때문에)
- version2: DCE Security, 시간을 version1보다 훨씬 잘게 나눔
- version3: MD5 hash + namespace기반으로 생성, 특정 name으로 생성된 UUID를 다른시스템에서도 같은 name과 호환성있게 사용하고 싶을때
- version4: random으로 생성 → 단순히 unique한 id생성하려면 이것이 좋다
- version5: SHA-1 hash + namespace, MD5보다 보안성이 좋은 SHA-1알고리즘 활용
JAVA에서 생성
- version4만들기
- version3만들기
- UUID 64bits씩 넣어서 만들기
public UUID(long mostSigBits,long leastSigBits)
- 이 외에 JAVA UUID 관련 method
장점
- 모든 테이블, 데이터베이스를 통틀어 유일한 값
- 유추하기가 어려움
- offline으로 생성됨
단점
- 저장공간이 늘어남
- debug의 어려움
- 성능문제(정렬되어있지 않고 길이가 길다)
mysql support...
- UUID_TO_BIN
- human-readable format(char/varchar) → compact format(binary) : 길이를 줄일 수 있음(저장공간 확보)
- BIN_TO_UUID
- compact format(binary) → human-readable format(char/varchar)
- IS_UUID
- 해당 string이 UUID인지 판별