웹 개발

시간 기반 UUID 생성(Generate time based UUIDs)

노루아부지 2020. 9. 29. 11:25

java.util.UUID.randomUUID(); 는 강력한 암호화 난수 발생기입니다.

이 함수를 실행하면 아래와 같은 결과가 return 됩니다.

4178b983-01f8-11eb-8cd2-47e9de425ea4

 

결과는 16진수 32자리 문자열입니다. 이는 256 bit라는 의미이며, 이 값의 경우의 수를 표현하면 아래와 같습니다.

 

" 1 / 115792089237316195423570985008687907853269984665640564039457584007913129639936 "

 

읽을수도 없을 만큼 엄청난 경우의 수 이지만, 말 그대로 "랜덤" 이기 때문에 서버시스템의 경우 값이 중복되는 경우가 있을 수도 있습니다.

 

그래서 대안을 생각 하던 중, 시간 기반으로 UUID를 생성하면 중복이 발생하지 않을 것이라 판단하여 com.fasterxml.uuid:java-uuid-generator 를 사용하여 UUID를 생성했습니다.

 

아래와 같이 사용할 수 있습니다.

 

import com.fasterxml.uuid.Generators;

public static void main(String [] args) {
    UUID uuid = Generators.timeBasedGenerator().generate();
}

 

 

 

 

 

[참고 사이트]

search.maven.org/artifact/com.fasterxml.uuid/java-uuid-generator

stackoverflow.com/questions/18244897/how-to-generate-time-based-uuids

728x90
loading