HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 타일러팀
[New] 타일러팀
/
🦋
UUID에 대해 알아보기
🦋

UUID에 대해 알아보기

Category
CS지식
Created
Apr 17, 2022 01:19 AM
Person
State
완료
🦋
UUID
  • 128bit의 값
  • 5개의 그룹으로 나뉜 16진수 값으로 나타낸 string
  • db에서 pk값으로 쓰이기도 함
    • ex )27b3abab-8d52-4987-87eb-e68e277f5473
 
 
🦋
역사
  1. version1 : MAC 주소 + date-time기반으로 생성, 매우 빠른 처리를 수행하는 경우 중복된 값 생성가능..(시간기반이기때문에)
  1. version2: DCE Security, 시간을 version1보다 훨씬 잘게 나눔
  1. version3: MD5 hash + namespace기반으로 생성, 특정 name으로 생성된 UUID를 다른시스템에서도 같은 name과 호환성있게 사용하고 싶을때
  1. version4: random으로 생성 → 단순히 unique한 id생성하려면 이것이 좋다
  1. version5: SHA-1 hash + namespace, MD5보다 보안성이 좋은 SHA-1알고리즘 활용
 
 
🦋
JAVA에서 생성
  • version3만들기
    • public static UUID nameUUIDFromBytes(byte[] name)
  • version4만들기
    • public static UUID randomUUID()
  • UUID 64bits씩 넣어서 만들기
public UUID(long mostSigBits,long leastSigBits)
  • 이 외에 JAVA UUID 관련 method
    • UUID (Java Platform SE 7 )
      version public int version() The version number associated with this UUID. The version number describes how this UUID was generated. The version number has the following meaning: 1 Time-based UUID 2 DCE security UUID 3 Name-based UUID 4 Randomly generated UUID variant public int variant() The variant number associated with this UUID.
      UUID (Java Platform SE 7 )
      https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html
 
 
🦋
장점
  • 모든 테이블, 데이터베이스를 통틀어 유일한 값
  • 유추하기가 어려움
  • offline으로 생성됨
 
 
🦋
단점
  • 저장공간이 늘어남
  • debug의 어려움
  • 성능문제(정렬되어있지 않고 길이가 길다)
 
 
🦋
mysql support...
  1. UUID_TO_BIN
      • human-readable format(char/varchar) → compact format(binary) : 길이를 줄일 수 있음(저장공간 확보)
  1. BIN_TO_UUID
      • compact format(binary) → human-readable format(char/varchar)
  1. IS_UUID
      • 해당 string이 UUID인지 판별