자바에서 UUID란
범용 고유 식별자(Universally Unique Identifiers)를 말하는데
이게 뭔 말이냐면
각 개체를 고유하게 식별 가능한 값을 말한다
예를 들어 여러 시스템(ㅁㅁ전자, ㅁㅁ중공업)에서
식별자를 서로 만드는데(Key에 해당하는 ID)
처음에야 다르겠지만 시스템이 늘어나고 커질수록
결국 중복이 나오게 된다
여기서 중복이 나오면 식별을 못하기 때문에
A1234가 ㅁㅁ 전자의 김철수인지 ㅁㅁ 중공업의 배철수인지
구별을 못하게 되는 상황에 처하게 된다
UUID를 사용하면
위 이미지의 규칙에 따라 식별자를 만들기 때문에
중복을 완전히 방지하는 것은 아니지만
집에서 자다가 트럭에 받혀서 사망하는 수준으로
중복이 날 확률이 낮아지게 된다는 것이다
이제 실제 자바에서 UUID를 생성해 보자
UUID.randomUUID()로 UUID 값을 생성할 수 있는데
생성 시에는 UUID 형태로 가져오기 때문에
toString(); 으로 String으로 바꿔준 후 사용해주면 된다
이후 출력을 해 보면
UUID 값이 정상적으로 나오는 것이 보이는데
출력을 할 때마다 다르게 나오므로
이 값을 고유 값으로 부여해주면 된다
이게 끝이기 때문에 뭔가 복잡한 생각을 하면 안된다
UUID는 고유 값을 만드는 것이 전부고
저렇게 만드는 순간 끝난거다
여기서 UUID가 상당히 길기 때문에
아 이거 좀 줄여서 사용 못하나? 싶을텐데
안타깝게도 그러면 안된다
중복이 안나오게 하려고 저렇게 길게 만드는건데
자릿수를 줄여버리면 UUID를 쓰는 의미가 없어진다
랜덤으로 값을 만들고 싶은데
길이를 제한하고 싶은 경우에는
위와 같이 랜덤 값을 생성하는 클래스를 짜서 쓰면 되는데
내용은 아래 링크를 참조해주면 된다
다만 위와 같은 방법의 문제는
UUID와 다르게 중복이 나올 확률이 더 높다
유저 수에 따라 차이가 없을 수도 있겠지만
UUID의 포인트는 엄청나게 찍어다 써도
중복이 안나오게 하자는 거다
이제 현실로 돌아가보면
UUID는 중복이 거의 나지 않기는 하지만
길이가 지나치게 길기 때문에
실제 데이터베이스에 적용하면
짧은 코드에 비해 더 많은 부하가 걸리게 된다
여기에 실 이용자가 몇만~몇십만에 달하는 프로그램도
A0000000 이런 식으로 대처가 가능한데
여러 회사의 사원 Key를 동시에 가져온다 쳐도
회사 코드와 사원 코드를 사용해 분류하면 중복이 나지 않는다
한국 전 인구가 동시에 사용하는게 아닌 이상에야
UUID를 사용해 식별할 일은 많지 않다는 거다
대기업에서도 딱히 사용할 일이 없는데
중소기업에서 UUID를 식별자로 사용한다면 그냥 낭비다..
실제 UUID는
기간제나 임시 유저의 Key 값을 줄 때 사용하거나
혹은 파일 등을 업로드 할 때
누가 뭔 파일을 올렸는지 식별이 가능하도록
Key 값을 줄 때 사용하는데
이 외에는 딱히 사용할 일이 없다고 보면 된다
'Language > Java' 카테고리의 다른 글
자바 숫자 대소문자 합쳐 Random으로 출력방법 (0) | 2020.10.29 |
---|---|
자바 Random 함수 개념 및 사용법 정리 (0) | 2020.10.28 |
자바 import 예제 및 개념정리 (0) | 2020.10.21 |
자바 WAR 개념, 생성부터 배포까지 정리 (0) | 2020.10.12 |
자바 ||로 split이 되지 않는 이유 (0) | 2020.10.11 |
댓글