본문 바로가기
Language/Java

자바 UUID란? 개념부터 생성, 사용법 정리

by wakestand 2020. 10. 28.
반응형

자바에서 UUID란

범용 고유 식별자(Universally Unique Identifiers)를 말하는데

이게 뭔 말이냐면

각 개체를 고유하게 식별 가능한 값을 말한다

 

예를 들어 여러 시스템(ㅁㅁ전자, ㅁㅁ중공업)에서

식별자를 서로 만드는데(Key에 해당하는 ID)

 

처음에야 다르겠지만 시스템이 늘어나고 커질수록

결국 중복이 나오게 된다

 

여기서 중복이 나오면 식별을 못하기 때문에

A1234가 ㅁㅁ 전자의 김철수인지 ㅁㅁ 중공업의 배철수인지

구별을 못하게 되는 상황에 처하게 된다 

 

UUID를 사용하면

위 이미지의 규칙에 따라 식별자를 만들기 때문에

중복을 완전히 방지하는 것은 아니지만

 

집에서 자다가 트럭에 받혀서 사망하는 수준으로

중복이 날 확률이 낮아지게 된다는 것이다

 

이제 실제 자바에서 UUID를 생성해 보자

 

UUID.randomUUID()로 UUID 값을 생성할 수 있는데

생성 시에는 UUID 형태로 가져오기 때문에

toString(); 으로 String으로 바꿔준 후 사용해주면 된다

 

이후 출력을 해 보면

UUID 값이 정상적으로 나오는 것이 보이는데

출력을 할 때마다 다르게 나오므로

이 값을 고유 값으로 부여해주면 된다

 

이게 끝이기 때문에 뭔가 복잡한 생각을 하면 안된다

UUID는 고유 값을 만드는 것이 전부고

저렇게 만드는 순간 끝난거다

 

여기서 UUID가 상당히 길기 때문에

아 이거 좀 줄여서 사용 못하나? 싶을텐데

안타깝게도 그러면 안된다

 

중복이 안나오게 하려고 저렇게 길게 만드는건데

자릿수를 줄여버리면 UUID를 쓰는 의미가 없어진다

 

랜덤으로 값을 만들고 싶은데

길이를 제한하고 싶은 경우에는

위와 같이 랜덤 값을 생성하는 클래스를 짜서 쓰면 되는데

내용은 아래 링크를 참조해주면 된다

 

자바 숫자 대소문자 합쳐 Random으로 출력방법

자릿수를 입력하면 숫자, 대소문자 중 랜덤으로 자릿수에 맞춰 출력해주는 코드인데 이거 수작업으로 만들라면 손도 많이가고 귀찮다 하지만 남이 만든 코드를 하나 만들어 놓고 거기서 뽑아쓰

wakestand.tistory.com

다만 위와 같은 방법의 문제는

UUID와 다르게 중복이 나올 확률이 더 높다

 

유저 수에 따라 차이가 없을 수도 있겠지만

UUID의 포인트는 엄청나게 찍어다 써도

중복이 안나오게 하자는 거다

 

이제 현실로 돌아가보면

UUID는 중복이 거의 나지 않기는 하지만

길이가 지나치게 길기 때문에

실제 데이터베이스에 적용하면

짧은 코드에 비해 더 많은 부하가 걸리게 된다

 

여기에 실 이용자가 몇만~몇십만에 달하는 프로그램도

A0000000 이런 식으로 대처가 가능한데

여러 회사의 사원 Key를 동시에 가져온다 쳐도

회사 코드와 사원 코드를 사용해 분류하면 중복이 나지 않는다

 

한국 전 인구가 동시에 사용하는게 아닌 이상에야

UUID를 사용해 식별할 일은 많지 않다는 거다

대기업에서도 딱히 사용할 일이 없는데

중소기업에서 UUID를 식별자로 사용한다면 그냥 낭비다..

 

실제 UUID는

기간제나 임시 유저의 Key 값을 줄 때 사용하거나

혹은 파일 등을 업로드 할 때

누가 뭔 파일을 올렸는지 식별이 가능하도록

Key 값을 줄 때 사용하는데

 

이 외에는 딱히 사용할 일이 없다고 보면 된다

반응형

댓글