UUID
범용 고유 식별자(Universally Unique Identifier)로 고유하게 식별하는데 사용되는 레이블이다.
주로 분산 컴퓨팅 환경에서 사용된다. 중앙에서 관리되지 않는 분산 환경이라면 개별 시스템이 id를 발급하더라도 유일성이 보장되어야 하기 때문에 등장하게 되었다.
전역적으로 고유하지는 않으나 중복의 가능성은 거의 적다.
36자의 문자열로 표시되는 128비트의 값이다. 하이픈으로 구분된 32개의 16진수 문자열의 패턴을 보인다.
uuid의 버전
버전은 1, 3, 4, 5가 있다.
1버전: 타임스탬프를 기준으로 생성
3버전: MD5 해시기반으로 생성
4버전: 랜덤 생성
5버전: SHA-1 해시를 이용해 생성
=> 1버전과 4버전을 많이 사용하나 1버전도 중복값 존재의 가능성이 있어서 주로 4버전을 많이 사용한다.
uuid의 장단점
- 장점
- 보안우수
- 테이블에 한정된 sequence number가 아닌, 범용적으로 유일성 보장
- 단점
- 36글자의 문자열
- 속도 이슈 → mysql과 오라클은 정수타입의 인덱스 칼럼에 최적화되어있는 RDBMS로 uuid의 성능이 단점이다.
-
- 데이터를 정렬하는 것이 어려움
- 인덱스 설정시 랜덤값이기 때문에 값이 새롭게 추가되면서 정렬되어있는 데이터를 다시 정렬해주어야한다 → 데이터 정렬 비용이 많이 발생한다.
※ seqeuntial uuid
uuid의 단점을 극복한 방안
12번째 자리부터 값이 변해서 잘 정렬된다.
인덱스 풀 스캔 시, insert 시에도 uuid 보다 빠르다.
ULID
Universally Unique Lexicographically Sortable Identifier의 약자로 사전적으로 정렬이 가능한 범용 고유 식별자이다.
대소문자를 구별하지 않는 시간을 나타내는 26글자와 16글자의 임의의 값으로 구성된다.
생성순서를 millisecond 단위로 기록할 수 있어서 생성된 순서대로 정렬할 때 편리하다.
만약 동일한 millisecond를 감지한다면 최하위 비트 위치에서 1비트를 증가시키는 Monotonicity 옵션을 제공한다.
Monotonicity 옵션을 활용하는 경우 랜덤으로 ULID를 사용하는 것보다 충돌 가능성이 적다.
ulid의 장단점
- 장점
- 사전 순의 sorting이 가능하다.
- timestamp가 앞쪽에 있고 random 값이 뒤쪽에 나와서 데이터가 정렬되기 쉬운 상태로 생성된다 → 빠르게 저장이 가능하다.
- 특수문자가 없어서 URL safe
- 단점
- UUID 보다 크기가 커서 용량 더 많이 잡아먹는다.
Snowflake ID
snowflake는 twitter에서 개발했으며 tweet ID에 사용된다고 한다.
timestamp, machine ID, sequence number의 세 부분으로 구성된 64비트 고유 식별자이다.
timestamp는 특정 에포크 시간 이후의 밀리초 수를 나타내는 41비트 정수의 형태로 되어있다.
machine ID는 ID를 생성한 작업자를 식별하는 10비트 정수이다.
sequence number는 동일 작업자가 동일 밀리초에서 여러 ID가 생성되면 고유성을 보장하는 12비트 정수이다.
참고자료
https://developer.mozilla.org/ko/docs/Glossary/UUID
https://developer111.tistory.com/83
https://junuuu.tistory.com/823
https://lejpower.tistory.com/31
https://akashrajpurohit.com/blog/snowflake-id-generating-unique-ids-for-distributed-systems/
'IT Study > CS' 카테고리의 다른 글
[CS] 절차지향 vs 객체지향 프로그래밍 (1) | 2024.01.11 |
---|---|
[Frontend] nginx를 사용해서 VM에서 배포하기 (+ CodeSpliting) (0) | 2023.11.29 |
[Front] 디바운싱과 쓰로틀링 (1) | 2023.11.22 |
[CS] Stateful vs Stateless 차이 (0) | 2023.11.15 |
[Back] 계속 헷갈리는 토큰 vs 쿠키 vs 세션 (1) | 2023.11.14 |