UUID

최창효·2022년 6월 25일
0
post-thumbnail

UUID란

  • Universally Unique IDentifier, 범용 고유 식별자라는 의미로 중복될 가능성이 매우 희박해 널리 사용되는 식별자의 한 종류입니다.
  • 128비트의 값으로 32개의 문자와 4개의 하이픈(-)으로 구성되어 있습니다.
    • 8-4-4-4-12 형태를 가집니다.

버전

UUID는 버전에 따라 생성되는 규칙이 다릅니다.

  • 버전 1: 시간 + MAC 주소
  • 버전 2: 시간 + MAC 주소 + DCE 보안
  • 버전 3: 이름공간 식별자 + MD5 해시
  • 버전 4: 랜덤
  • 버전 5: 이름공간 식별자 + SHA-1 해시

V1과 V4를 가장 많이 사용합니다.

장점

  • 충돌 가능성이 매우 희박하다.
  • 어디서나 쉽게 생성할 수 있다.
  • 쉽게 추적할 수 없다.
  • DB가 여러 개 나뉘는 상황에서도 유일한 키값을 가진다.

단점

  • 연속성이 없다. (UUID간에 관계가 없다)
  • 아무런 의미가 없다. (데이터와 UUID 사이에 관계가 없다)

최적화

  • 기본적으로 UUID는 총 36개의 문자가 들어가기 때문에 CHAR(36)으로 선언해 사용할 수 있습니다.
  • 하지만 하이픈(-)을 제거하고 hex digit을 byte로 변환하면 BINARY(16)이라는 더욱 적은 용량으로 UUID를 저장할 수 있습니다.

사용방법

# UUID생성 방법 -> UUID()
SELECT UUID();

# UUID최적화 -> 하이픈 제거, hex를 byte로 변환
SELECT UNHEX(REPLACE(UUID(),'-',''));

# 예제 table 생성
CREATE TABLE UUID_TEST(
	id BINARY(16) NOT NULL,
    user VARCHAR(15) NOT NULL,
    PRIMARY KEY (id)
);

# 예제 table에 uuid를 id로 가지는 값 추가
INSERT INTO UUID_TEST(id,user) VALUES (UNHEX(REPLACE(UUID(),'-','')),"me");

# uuid는 BLOB으로 저장되어 있음
select * from uuid_test;

# 테이블에 저장된 값 가져오기
select HEX(id) from uuid_test;

References

profile
기록하고 정리하는 걸 좋아하는 백엔드 개발자입니다.

0개의 댓글